hive安装配置
- 介绍
- 安装hive
- hive配置
- hive-site.xml配置
- mysql驱动复制
- 环境变量添加
- 启动hive
- 遇见问题
介绍
hive是在Hadoop中非常重要的角色。hive在1.2.0之前可以将编写的SQL翻译为MapReduce程序,在2.0版本后将程序翻译为Spark程序。安装前提
- Hadoop环境(hive不存储实际的业务数据,数据存储在HDFS上)
- mysql(此处hive中元数据存储在mysql)
Hadoop环境
不在赘述,可以参考博文: Hadoop之Hadoop安装
mysql环境准备
- 此处安装mysql版本为5.7
- 允许远程登录,不在赘述,可以参考博文: mysql允许root远程登录
注意: 如果正式环境,在了解真正的风险前,还请不要允许root远程登录。 - 创建数据库
mysql> CREATE DATABASE `hive_db` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';
安装hive
与linux下其他软件一样,下载,解压、配置。
如果不清楚兼容那个版本的Hadoop建议根据CDH提供的版本进行安装。如果资源足够使用,使用CDH安装和管理Hadoop更为简易快捷。
CDH官方版本配置
hive配置
hive-site.xml配置
[gugu@master ~]$ vim ~/application/apache-hive-2.3.6-bin/conf/hive-site.xml
添加以下内容
<?xml version&#61;"1.0"?>
<?xml-stylesheet type&#61;"text/xsl" href&#61;"configuration.xsl"?>
<configuration><property><name>hive.metastore.local</name><value>true</value></property>
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://master:3306/hive_db?characterEncoding&#61;UTF-8&useSSL&#61;false</value><!-- 指定元数据数据库jdbc链接&#xff0c;注意原来链接地址上的&要修改成&否者会提示&后面必须要“;”的错误 --></property><property><name>hive.metastore.schema.verification</name><value>false</value><!-- 初始化的时候设置检查版本&#xff0c;否者有可能初始化错误 --></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><!-- 指定元数据数据库驱动类型 --></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><!-- 元数据数据库用户名 --></property><property><name>javax.jdo.option.ConnectionPassword</name><value>root</value><!-- 元数据数据库密码 --></property><property><name>datanucleus.schema.autoCreateAll</name><value>true</value></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value><!-- hive在HDFS存储路径 --></property>
</configuration>
mysql驱动复制
在hive-site.xml中指定了驱动是mysql&#xff0c;我们需要将mysql的驱动复制到hive的lib下&#xff0c;hive才能连接mysql
[gugu&#64;master ~]$ cp file/mysql-connector-java-5.1.47.jar ~/application/apache-hive-2.3.6-bin/lib/
环境变量添加
[gugu&#64;master ~]$ vim .bash_profile
添加下面内容
export HIVE_HOME&#61;/home/gugu/application/apache-hive-2.3.6-binexport PATH&#61;$PATH:$HIVE_HOME/bin
启动hive
hive的启动可以包含以下方式
- hive直接以交互式启动
[gugu&#64;master ~]$ hive
- 将hive启动为一个服务
可以在任意一台机器上使用beeline客户端连接hive服务&#xff0c;进行交互式查询
[gugu&#64;master ~] nohup hive --service metastore >> /home/gugu/application/apache-hive-2.3.6-bin/log/metastore/metastore.log 2>&1 &
[gugu&#64;master ~] nohup hive --service hiveserver2 >> /home/gugu/application/apache-hive-2.3.6-bin/log/hiveserver/hiveserver.log 2>&1 &
上面命令的介绍
"nohup"可以防止终端的session关闭时&#xff0c;服务退出
“>>” 表示输出重定向&#xff0c;且以追加的方式&#xff0c;后面的路径是标准输出的输出路径&#xff0c;
“2>&1” 2表示的是错误输出&#xff0c;&1指标准输出&#xff0c;合起来就是将错误输出和标准输出到同一个文件
“&”最后面的指这条命令运行在后台
linux输出输入扩展
设备 | 设备文件名 | 文件描述符 | 类型 |
---|
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stdout | 2 | 错误输出 |
遇见问题
- 启动时因为xml中&转义报错
错误信息如下&#xff1a;
[Fatal Error] hive-site.xml:10:80: The reference to entity "useSSL" must end with the &#39;;&#39; delimiter.
Exception in thread "main" java.lang.RuntimeException: org.xml.sax.SAXParseException; systemId: file:/home/gugu/application/apache-hive-2.3.6-bin/conf/hive-site.xml; lineNumber: 10; columnNumber: 80; The reference to entity "useSSL" must end with the &#39;;&#39; delimiter.
出现原因&#xff1a;xml中&需要转义
解决方法&#xff1a;将hive-site.xml中的"&“改成”&"
- 启动时校验版本报错
错误如下:
MetaException(message:Version information not found in metastore. )at org.apache.hadoop.hive.metastore.RetryingHMSHandler.(RetryingHMSHandler.java:83)at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:92)at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6896)at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6891)at org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:7149)at org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:7076)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.hadoop.util.RunJar.run(RunJar.java:239)at org.apache.hadoop.util.RunJar.main(RunJar.java:153)
解决方法&#xff1a;
在hive-site.xml中添加
hive.metastore.schema.verificationfalse