大数据基础设施搭建 - Hive

文章目录

一、上传压缩包

https://hive.apache.org/

注意:Hive需要在NodeNode所在节点安装!

二、解压压缩包

bash 复制代码
[hadoop@hadoop102 software]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/

三、配置环境变量

bash 复制代码
[hadoop@hadoop102 apache-hive-3.1.2-bin]$ sudo vim /etc/profile.d/my_env.sh

新增内容:

bash 复制代码
#HIVE_HOME
export HIVE_HOME=/opt/module/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin

使环境变量生效:

bash 复制代码
[hadoop@hadoop102 apache-hive-3.1.2-bin]$ source /etc/profile.d/my_env.sh

四、初始化元数据库

hive元数据概述:记录了hive中表的名称、列名、数据类型、分区信息、数据存储路径等。

hive元数据存储:默认是元数据存储于hive内置的derby数据库,是用Java写的。一定要切换到MySQL,内嵌derby局限性太高!当一个hive客户端启动时,就会独占derby元数据库且不与其他客户端共享元数据,所以无法同时开启多个hive客户端进行操作!

4.1 配置MySQL地址

bash 复制代码
[hadoop@hadoop102 ~]$ vim $HIVE_HOME/conf/hive-site.xml

新增内容:

xml 复制代码
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!-- jdbc连接的URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://mall:3306/metastore?useSSL=false</value>
    </property>

    <!-- jdbc连接的Driver-->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

	<!-- jdbc连接的username-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <!-- jdbc连接的password -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>

    <!-- Hive默认在HDFS的工作目录;数据库被创建之后默认存储的位置。 eg:/warehouse/xx_dw_dwb.db -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/warehouse</value>
    </property>
    
   <!-- Hive元数据存储的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
   
    <!-- 元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
</configuration>

4.2 拷贝MySQL驱动

bash 复制代码
[hadoop@hadoop102 ~]$ cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib

4.3 初始化元数据库

4.3.1 创建数据库

bash 复制代码
[mall@mall ~]$ mysql -uroot -p123456
bash 复制代码
mysql> create database metastore;
mysql> quit;

4.3.2 初始化元数据库

-verbose参数:显示初始化过程日志

-dbType:指定数据库类型

bash 复制代码
[hadoop@hadoop102 ~]$ schematool -initSchema -dbType mysql -verbose

五、启动元数据服务metastore

metastore服务用于访问hive元数据。有两种提供服务的方式,分别是嵌入式模式和独立服务模式。

生产中使用独立服务模式,因为在嵌入式模式下,每个Hive CLI都需要直接连接元数据库,当Hive CLI较多时,数据库压力会比较大。

内嵌式模式:

独立服务模式:

5.1 修改配置文件

如果配置文件中有此项配置,说明hive在连接元数据的时候需要走第三方服务thrift,必须启动独立服务模式metastore服务!

bash 复制代码
[hadoop@hadoop102 ~]$ vim $HIVE_HOME/conf/hive-site.xml

新增内容:

xml 复制代码
    <!-- hive元数据服务metastore的ip和端口号 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop102:9083</value>
    </property>

5.2 启动/关闭metastore服务

bash 复制代码
# 启动
[hadoop@hadoop102 ~]$ nohup hive --service metastore &>/dev/null 2>/dev/null &
# 关闭
[hadoop@hadoop102 ~]$ ps -ef | grep metastore
[hadoop@hadoop102 ~]$ kill 28832

六、启动hiveserver2服务

6.1 修改配置文件

bash 复制代码
[hadoop@hadoop102 ~]$ vim $HIVE_HOME/conf/hive-site.xml

新增内容:

xml 复制代码
    <!-- 指定hiveserver2连接的host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop102</value>
    </property>

    <!-- 指定hiveserver2连接的端口号 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>

6.2 启动/关闭hiveserver2服务

bash 复制代码
# 启动
[hadoop@hadoop102 apache-hive-3.1.2-bin]$ nohup bin/hive --service hiveserver2 &>/dev/null 2>/dev/null &
# 关闭
[hadoop@hadoop102 ~]$ ps -ef | grep hiveserver2
[hadoop@hadoop102 ~]$ kill 29204

七、访问Hive

7.1 通过hive客户端访问

bash 复制代码
[hadoop@hadoop102 ~]$ cd /opt/module/apache-hive-3.1.2-bin/
[hadoop@hadoop102 apache-hive-3.1.2-bin]$ bin/hive

查看数据库:

hive> show databases;

OK

default

Time taken: 0.756 seconds, Fetched: 1 row(s)

7.2 通过beeline客户端访问(JDBC)

-u参数:hiveserver2所在ip和端口号

-n参数:账号

bash 复制代码
[hadoop@hadoop102 apache-hive-3.1.2-bin]$ bin/beeline -u jdbc:hive2://hadoop102:10000 -n hadoop

八、修改元数据库字符集(TODO)

Hive元数据库字符集默认是Latin1,如果建表语句中有中文注释,会出现乱码现象。

8.1 修改hive元数据库中存储注释的字段的字符集为utf-8

以utf-8编码向元数据库中写入数据

bash 复制代码
mysql -uroot -p

(1)字段注释

bash 复制代码
use metastore;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

(2)表注释

bash 复制代码
alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;

8.2 修改hive-site.xml配置文件

以utf-8编码从元数据库中读取数据

bash 复制代码
[hadoop@hadoop102 ~]$ vim $HIVE_HOME/conf/hive-site.xml

修改内容:

xml 复制代码
    <!-- jdbc连接的URL -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://mall:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
    </property>

九、整合HDFS(TODO)

将HDFS文件包装成hive中的表

十、升级为hive集群(TODO)

相关推荐
阿里云大数据AI技术5 小时前
大数据公有云市场第一,阿里云占比47%!
大数据
Lx3529 小时前
Hadoop容错机制深度解析:保障作业稳定运行
大数据·hadoop
T062051414 小时前
工具变量-5G试点城市DID数据(2014-2025年
大数据
向往鹰的翱翔14 小时前
BKY莱德因:5大黑科技逆转时光
大数据·人工智能·科技·生活·健康医疗
鸿乃江边鸟15 小时前
向量化和列式存储
大数据·sql·向量化
IT毕设梦工厂16 小时前
大数据毕业设计选题推荐-基于大数据的客户购物订单数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·数据分析·spark·毕业设计·源码·bigdata
java水泥工16 小时前
基于Echarts+HTML5可视化数据大屏展示-白茶大数据溯源平台V2
大数据·echarts·html5
广州腾科助你拿下华为认证18 小时前
华为考试:HCIE数通考试难度分析
大数据·华为
在未来等你20 小时前
Elasticsearch面试精讲 Day 17:查询性能调优实践
大数据·分布式·elasticsearch·搜索引擎·面试
大数据CLUB1 天前
基于spark的澳洲光伏发电站选址预测
大数据·hadoop·分布式·数据分析·spark·数据开发