Hive3.1.2安装配置
Linux
Linux上的安装配置都比较简单
安装
- 安装配置Hadoop,hadoop配置参考
- 安装hive3.1.2,配置环境变量
- 建议将conf文件夹中日志的properties文件配置下,方便排查错误
在hdfs上创建hive工作目录
- 启动hdfs
- 在hdfs上创建目录
bin/hadoop fs -mkdir /tmp bin/hadoop fs -mkdir /user/hive/warehouse bin/hadoop fs -chmod g+w /tmp bin/hadoop fs -chmod g+w /user/hive/warehouse
默认元数据存储启动
元数据默认存储在derby中
- 启动hdfs
- 执行以下命令初始化元数据库
hive --service schematool -dbType=derby -initSchema
# 或者
schematool -dbType-derby -initSchema
- 启动hive
使用MySQL存储元数据
- 配置hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value> jdbc:mysql://192.168.8.1:3306/hive?createDatabaseIfNotExist=true&useSSL=false&serverTimezone=Asia/Shanghai</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
<!-- <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> -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://centos1:9083</value>
</property>
</configuration>
- 下载mysql-connector-java连接驱动,拷贝到hive目录lib下,本人使用的mysql8,驱动和类名(com.mysql.cj.jdbc.Driver)要对应上
- 使用上述命令初始化元数据库,dbType为mysql,执行完毕检查mysql中是否出现元数据库
- 启动hive
使用元数据服务方式访问Hive
- 配置hive-site.xml
<property> <name>hive.metastore.uris</name> <value>thrift://centos1:9083</value> </property>
- 启动元数据服务
hive --service metastore
- 启动hive
JDBC方式访问Hive
该方式访问流程为
hive client => hive server2 => hive metastore service => metastore_db
-
配置hive-site.xml
<!-- hive server2连接的host --> <property> <name>hive.server2.thrift.bind.host</name> <value>centos1</value> </property> <!-- hiveserver2连接的端口 --> <property> <name>hive.server2.thrift.bind.port</name> <value>10000</value> </property>
-
启动metastore服务
-
启动hive server2
bin/hiveserver2 # 或者 bin/hive --service hiveserevr2
-
使用hive默认jdbc工具beeline连接
使用beeline连接之前 -
查看metastore服务是否启动
-
查看hiveserver2是否启动,端口10000是否开启
-
监控日志,方便排查错误
beeline -u jdbc:hive2://centos1:10000 -n bigdata
-n指定用户,hadoop对用户进行认证,可能会报授权失败的错误,需要停止所有服务,配置hadoop core-site.xml配置用户,在启动所有服务。
总结
Linux上的启动较为简单,碰到的错误也很少,建议配置日志,方便排错。hive的日志在/tmp/当前用户/hive.log中。
Windows
Windows上安装配置相对复杂,网上资料较少,凭着一股倔劲,花了较多时间把他整出来了。
安装配置Hadoop
- 安装Hadoop,配置环境变量HADOOP_HOME。
- 配置xml文件
- etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
- etc/hadoop/hdfs-site.xml
以上为最基本的配置,单节点,副本数1,yarn、历史服务器等均未配置,更多配置可以参考Hadoop集群配置。<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
- 初始化namenode,(Hadoop3.x命令,不同版本可能不一样)
bin/hdfs namenode -format
如果是在Linux以上配置已经可以正常启动hdfs了,在本人的windows11上,还有两个问题
- 下载winutils
Hadoop在weindows上需要额外的dll文件和cmd脚本等,需要下载匹配的版本解压到bin目录下,winutils下载地址 - hdfs启动目录
本人电脑上,启动和关闭hdfs必须在Hadoop的bin目录下
直接cd到sbin下或者其他目录均会报错,可能与start-dfs.cmd脚本的编写有关。D:\prog\hadoop3.2>cd bin D:\prog\hadoop3.2\bin>..\sbin\start-dfs.cmd
安装配置Hive
安装下载、配置环境变量与在Linux上没有什么不同,但无法正常启动
-
没有windows启动脚本
下载hive命令的windows版本,解压到hive的bin目录下,下载文件中还有guava27.jar文件,复制到hive的lib目录下,同时删除lib目录下原有的guava包。 -
初始化元数据库
hive命令schematool无法在windows上使用,windows版本也没有schema.cmd(实际上bin/ext目录下有),所以初始化数据库命令为hive.cmd --service schematool -dbType derby -initSchema
-
初始化元数据库之后,hive正常启动
-
SELECT数据报错
原因是hive和hadoop的guava版本问题,hive我们替换为27版本,hadoop替换为19版本(其他版本未尝试),到maven仓库下载guava19,替换两处原有的guava包,删除原有的,使用guava19- share\hadoop\hdfs\lib
- share\hadoop\common\lib
替换后hive查询正常
总结
除了上述有坑的地方,Windows上hive配置和Linux都一样,其实基本上是在Linux上使用,Windows上没有必要,主要是一个排查问题,解决问题的过程。