说明:hive-1版本和hive-3版本的搭建不一样,hive-3*增加了账户密码验证功能。此文是hive-3.1.1版本,需要账号密码来验证。
安装包清单
软件本身需提供版本,配置文件或者安装说明等等无需提供版本。
文件名称 | 版本号 | 使用简述 | 说明 |
---|---|---|---|
apache-hive-3.1.1-bin.tar.gz | 3.1.1 | 解压缩 | hive软件安装包 |
mysql-connector-java-8.0.13.jar | 8.0.13 | 直接放入指定目录 | mysql连接jar包 |
软件安装步骤
1. 将apache-hive-3.1.1-bin.tar.gz上传至安装目录
2. 使用tar -zxvf apache-hive-3.1.1-bin.tar.gz 对安装包解压
3. 切换到apache-hive-3.1.1-bin/conf目录下创建配置文件hive-site.xml
4. 将下面xml配置(最底部)复制到hive-site.xml下并且对{}包含的内容如实填写(填写后不再需要{}包裹)
5. 切换到apache-hive-3.1.1-bin/conf目录下使用cp hive-env.sh.template hive-env.sh 命令创建hive-env.sh文件,编辑hive-site.xml文件加入下面配置
6. 将mysql-connector-java-8.0.13.jar文件上传至apache-hive-3.1.1-bin/lib目录下
7. cd ${HIVE_HOME}/bin执行`./schematool -dbType mysql -initSchema`进行初始化操作,如果报错需要检查mysql连接的相关参数,并在mysql中确保没有hive库再进行初始化。
hive软件启动
1. 软件启动保证mysql正常使用并可连接,hadoop正常使用
2. 切换到 apache-hive-3.1.1-bin/bin 目录下,使用nohup ./hive --service hiveserver2 & 命令启动hiveserver2
hive启动验证及日志查看
1. jps -lvm | grep HiveServer2 能查看到hive进程运行
2. 查看日志,切换到 /tmp/${user.name}(当前用户名) 目录下,使用命令tail -F -n 100 hive.log 监控日志,如果jps进程存在但是日志报错,按照日志进行修改
3. 如果没有报错切换到apache-hive-3.1.1-bin/bin 目录下执行 ./beeline 命令后,输入!connect jdbc:hive2://{hive部署地址:10000} 连接hive
!connect jdbc:hive2://192.168.7.14:10000
,用户名和密码是本机系统的用户名和密码
4. 连接成功后输入show databases; , 正常显示hive所有库名 ,输入!close 退出连接输入!exit退出beeline
5. 修改后使用kill -9 hiveserver2的进程ID 关闭进程后重新启动hiveserver2
hive-env.sh加入以下配置
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 设置hive任务关于小文件合并的问题 -->
<property>
<name>hive.merge.mapfiles</name>
<value>true</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<property>
<name>hive.merge.mapredfiles</name>
<value>true</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<property>
<name>hive.merge.size.per.task</name>
<value>256000000</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<property>
<name>hive.merge.smallfiles.avgsize</name>
<value>64000000</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<!-- cli查询显示表头 -->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
<description>Whether to print the names of the columns in query output.</description>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
<description>Whether to include the current database in the Hive prompt.</description>
</property>
<!-- 允许动态插入分区 -->
<property>
<name>hive.exec.dynamic.partition</name>
<value>true</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<!-- 开启fetch抓取 -->
<property>
<name>hive.fetch.task.conversion</name>
<value>more</value>
</property>
<property>
<name>hive.exec.mode.local.auto</name>
<value>true</value>
</property>
<!-- 配置HiveServer2服务 -->
<!-- hive server2 端口配置 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<!-- hive安装host地址 -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>{hive安装host地址}</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://{mysql连接地址:端口}/hive?eUnicode=true&characterEncoding=UTF-8&createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<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>{hive连接mysql使用的用户名}</value>
</property>
<!-- hive连接mysql使用的密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>{hive连接mysql使用的密码}</value>
</property>
<!--下面是hive3.1.1的新配置,mr如果不设置默认为tez,但是现在没有tez,doAs如果不为false那么用户名密码无法连接权限认证不通过-->
<property>
<name>hive.execution.engine</name>
<value>mr</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>