Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
提前准备MySQL服务
看这篇文章MySQL-5.7数据库离线安装
环境说明:
服务端登录地址详见各任务服务端说明。 补充说明:宿主机可通过Asbru工具或SSH客户端进行SSH访问; 相关软件安装包在宿主机的/opt目录下,请选择对应的安装包进行安装,用不到的可忽略; 所有任务中应用命令必须采用绝对路径; 进入Master节点的方式为 docker exec -it master /bin/bash 进入Slave1节点的方式为 docker exec -it slave1 /bin/bash 进入Slave2节点的方式为 docker exec -it slave2 /bin/bash 三个容器节点的root密码均为123456
提前准备好apache-hive-3.1.2-bin.tar.gz、mysql-connector-java-5.1.37.jar放在宿主机的/opt/下(模拟的自己准备,比赛时会提供)
Hadoop 完全分布式安装配置
环境搭建请看这篇文章大数据模块A环境搭建
前提条件已经在容器里搭建完hadoop了,没搭建的请看这篇Hadoop 完全分布式安装配置
Hive安装配置
本任务需要使用root用户完成相关配置,已安装Hadoop及需要配置前置环境,具体要求如下:
1、 从宿主机/opt目录下将文件apache-hive-3.1.2-bin.tar.gz、mysql-connector-java-5.1.37.jar复制到容器Master中的/opt/software路径中(若路径不存在,则需新建),将Master节点Hive安装包解压到/opt/module目录下,将命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
第一步:从宿主机/opt目录下将文件apache-hive-3.1.2-bin.tar.gz、mysql-connector-java-5.1.37.jar复制到容器Master中的/opt/software路径中(若路径不存在,则需新建)
[root@Bigdata ~]# docker cp /opt/apache-hive-3.1.2-bin.tar.gz master:/opt/software
[root@Bigdata ~]# docker cp /opt/mysql-connector-java-5.1.37.jar master:/opt/software
第二步:将Master节点Hive安装包解压到/opt/module目录下
[root@master ~]# tar zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
重命名
[root@master ~]# mv /opt/module/apache-hive-3.1.2-bin /opt/module/hive
2、 设置Hive环境变量,并使环境变量生效,执行命令hive --version并将命令与结果截图容复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
第一步:设置Hive环境变量/etc/profile
[root@master ~]# vi /etc/profile
在文件末行插入
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH:$HIVE_HOME/bin
第二步:使环境变量生效
[root@master ~]# source /etc/profile
第三步:执行命令hive --version
[root@master ~]# hive --version
解决冲突问题
[root@master ~]# rm -rf /opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar
再次运行hive --version
[root@master ~]# hive --version
3、 完成相关配置并添加所依赖包,将MySQL数据库作为Hive元数据库。初始化Hive元数据,并通过schematool相关命令执行初始化,将初始化结果截图(范围为命令执行结束的最后10行)复制粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下。
第一步:完成相关配置并添加所依赖包,将MySQL数据库作为Hive元数据库
将mysql-connector-java-5.1.37.jar放到hive的lib里
[root@master ~]# cp /opt/software/mysql-connector-java-5.1.37.jar /opt/module/hive/lib/
hive的guava包与hadoop版本不同,将hadoop的guava包放到hive中
cp /opt/module/hadoop/share/hadoop/common/lib/guava-27.0-jre-jar /opt/module/hive/lib
删除hive中较低版本的guava-19.0.jar
[root@master ~]# rm -rf /opt/module/hive/lib/guava-19.0.jar
复制一份模板hive-env.sh
[root@master ~]# cp /opt/module/hive/conf/hive-env.sh.template /opt/module/hive/conf/hive-env.sh
加入一下环境变量
[root@master ~]# vi /opt/module/hive/conf/hive-env.sh
文件最后添加以下:
export JAVA_HOME=/opt/module/java
export HADOOP_HOME=/opt/module/hadoop
export HIVE_CONF_DIR=/opt/module/hive/conf
export HIVE_AUX_JARS_PATH=/opt/module/hive/lib
第二步:配置hive-site.xml
[root@master ~]# vi /opt/module/hive/conf/hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--mysql的连接地址将下面的ip改成宿主机或mysql服务器的ip-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.6.64:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--mysql用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--mysql中hive用户密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<!--mysql驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
</configuration>
第三步:始化Hive元数据,并通过schematool相关命令执行初始化,将初始化结果截图(范围为命令执行结束的最后10行)
启动Hadoop集群(启动过了就不用启动了)
start.all.sh
在hdfs上创建一个文件夹
[root@master ~]# hdfs dfs -mkdir -p /user/hive/warehouse
开始初始化
[root@master ~]# schematool -dbType mysql -initSchema --verbose
命令解释:
schematool:这是 Hive 自带的一个工具,用于管理和维护 Hive 元数据库(Metastore)的模式。通过它,你可以执行数据库模式的初始化、升级等操作。
-dbType mysql:指定你使用的数据库类型,这里是 mysql,意味着你将连接到 MySQL 数据库。如果你使用的是其他数据库(如 PostgreSQL、Oracle),可以将 mysql 替换为对应的数据库类型。
-initSchema:这个选项表示初始化 Hive 的数据库模式。执行此操作时,它会根据 Hive 的版本自动在 MySQL 数据库中创建表和必要的结构(例如表、索引等),以便 Hive 能够正常存储和查询元数据。
--verbose:该选项会在执行过程中提供详细的输出,帮助你查看执行的步骤和日志,便于排查问题。
上面的步骤已经完成任务了
下面是多余的操作
解决启动hive时有大量的日志问题
解决前
把hive-log4j2.properties.template替换为log4j.properties
[root@master ~]# mv /opt/module/hive/conf/hive-log4j2.properties.template /opt/module/hive/conf/log4j.properties
解决后
执行下查看databases
END
一键三连是我写文章的动力!
声明:此文章为个人学习笔记,如文章有问题欢迎留言探讨,也希望您的指正 !