Hive 单节点部署

2024-08-11 21:01:26 浏览数 (2)

介绍

Hive 是一个建立在 Hadoop 之上的数据仓库工具,它用于提供数据的查询和分析功能。Hive 允许用户使用类似 SQL 的查询语言(HiveQL)来处理存储在 Hadoop 分布式文件系统(HDFS)上的大规模数据。

数据存储和管理: Hive 提供了一种方式来组织和管理存储在 Hadoop 中的海量数据,使得数据的访问和查询变得简单。

数据分析: Hive 使得非程序员也能轻松进行数据分析,用户可以使用 SQL 的查询语言而无需复杂编程。

支持大数据处理: Hive 可以处理有结构、半结构和无结构的数据,是大数据技术生态系统的一部分。

可扩展性: Hive 可以处理非常大的数据集,支持快速扩展并适应数据量的变化。

例子:

想象一下你有一个图书馆,里面有成千上万本书。你想要查找某一类书籍(比如“科幻”或“历史”),或者查找某位作者的作品。

印刷书籍: 每本书就像是一个数据存储单元。

图书管理员: 你作为图书管理员,负责管理这些书籍的分类(结构化数据)和存放位置(HDFS)。

如果你需要查找某个主题的书,使用卡片目录(相当于 HiveQL)就能快速找到所有相关的书籍,而不必翻阅每一本书。这就是 Hive 让数据查询和管理变得简单的原因。

前提准备

需要先将Hadoop全部进程启动

代码语言:shell复制
# 解压hive-3.1.3.tar.gz到/opt/module/目录下面
tar -zxvf hive-3.1.3.tar.gz -C /opt/module/

# 修改hive-3.1.3-bin.tar.gz的名称为hive
mv /opt/module/apache-hive-3.1.3-bin/ /opt/module/hive

# 配置环境变量
vim /etc/profile

# HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=:$HIVE_HOME/bin:$PATH

# 使环境变量生效
source /etc/profile

# 解决日志Jar包冲突
cd /opt/module/hive/lib

mv log4j-slf4j-impl-2.17.1.jar log4j-slf4j-impl-2.17.1.jar.bak

Hive元数据配置到MySQL

代码语言:shell复制
# 将MySQL的JDBC驱动拷贝到Hive的lib目录下。
cp /opt/software/mysql/mysql-connector-j-8.0.31.jar /opt/module/hive/lib/

配置Metastore到MySQL

在$HIVE_HOME/conf目录下新建hive-site.xml文件

cd $HIVE_HOME/conf

vim hive-site.xml

代码语言:xml复制
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!--配置Hive保存元数据信息所需的 MySQL URL地址-->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;allowPublicKeyRetrieval=true</value>  
    </property>
    <!--配置Hive连接MySQL的驱动全类名-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <!--配置Hive连接MySQL的用户名 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <!--配置Hive连接MySQL的密码 -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>000000</value>
    </property>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <property>
    <name>hive.server2.thrift.port</name>
    <value>10000</value>
    </property>
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop102</value>
    </property>
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    <property>
        <name>hive.cli.print.header</name>
        <value>true</value>
    </property>
    <property>
        <name>hive.cli.print.current.db</name>
        <value>true</value>
    </property>
</configuration>

初始化元数据库

初始化成功标志:

代码语言:shell复制
# 登陆MySQL
mysql -uroot -p000000

# 新建Hive元数据库
mysql> create database metastore;

# 退出mysql
mysql> quit;

# 初始化Hive元数据库
schematool -initSchema -dbType mysql -verbose

# 登陆MySQL
mysql -uroot -p000000
# 修改元数据库字符集
# Hive元数据库的字符集默认为Latin1,由于其不支持中文字符,所以建表语句中如果包含中文注释,会出现乱码现象。如需解决乱码问题,须做以下修改。
# 修改Hive元数据库中存储注释的字段的字符集为utf-8。
#(1)字段注释
mysql> use metastore;
mysql> alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
#(2)表注释
mysql> alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;

# 退出mysql
mysql> quit;

启动Hive

任意目录下启动(环境变量的作用)

代码语言:shell复制
hive

启动成功标志:

0 人点赞