环境:
VMware虚拟机15版本、CENTOS7.4 、hadoop3.2.0,mysql元数据库
一、安装HIVE&配置HIVE
1 下载HIVE包、解压、配置
[root@localhost opt]# tar -zxvf apache-hive-3.1.2-bin.tar.gz
[root@localhost opt]# sudo vim /etc/profile #增加HIVE环境变量的配置
#hive
export HIVE_HOME=/opt/apache-hive-3.1.2-bin
export PATH=$HIVE_HOME/bin:$PATH
[root@localhost conf]# source /etc/profile #更改完记得source一下
2 创建hdfs目录并赋予权限
[root@localhost opt]# hdfs dfs -mkdir -p /usr/hive/warehouse
[root@localhost opt]# hdfs dfs -mkdir -p /usr/hive/tmp
[root@localhost opt]# hdfs dfs -mkdir -p /usr/hive/log
[root@localhost opt]# hdfs dfs -chmod g+w /usr/hive/warehouse
[root@localhost opt]# hdfs dfs -chmod g+w /usr/hive/tmp
[root@localhost opt]# hdfs dfs -chmod g+w /usr/hive/log
3 hive-env.sh配置
#刚刚解压hive配置文件均以.template命名,复制一份进行配置并且使用
[root@localhost apache-hive-3.1.2-bin]# cd conf/
[root@localhost conf]# cp hive-env.sh.template hive-env.shvim hive-env.sh
#在hive中添加JAVA\HADOOP\HIVE等配置,让HIVE可以使用
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk/
export HADOOP_HOME=/usr/hadoop/hadoop-3.2.0
export HIVE_HOME=/opt/apache-hive-3.1.2-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib/*
4 hive-site.xml配置:
#和上边同目录,同样复制一份进行配置
[root@localhost conf]# cp -r hive-default.xml.template hive-site.xml
[root@localhost conf]# vi hive-site.xml
#在文件开头添加如下内容:
<configuration>
<property>
<name>system:java.io.tmpdir</name>
<value>/tmp/hive/java</value>
</property>
<property>
<name>system:user.name</name>
<value>${user.name}</value>
</property>
</configuration>
#修改以下属性的value值
<configuration>
<!-- WARNING!!! This file is auto generated for documentation purposes ONLY! -->
<!-- WARNING!!! Any changes you make to this file will be ignored by Hive. -->
<!-- WARNING!!! You must make your changes in hive-site.xml instead. -->
<!-- Hive Execution Parameters -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.32.128:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value>
</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>
</configuration>
5 使用schemaTool初始化mysql数据库
[root@localhost conf]# schematool -dbType mysql -initSchema
6 启动hive测试
# hive
二、疑难杂症
1、未找到schematool命令:
这一步是利用HIVE自带的SHCEMATOOL进行第一步初始化,简单创建实例,或者说相关字典什么的。由于我更改/etc/profile之后忘记了source一下,导致配置未生效,重新source一下即可。
2、Exception in thread “main” java.lang.RuntimeException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character ‘=’
Schematool初始化时候,由于配置文件不认真,混入了非正经字符,这个不难,根据报错位置修改就好。
3、org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver Underlying cause: java.lang.ClassNotFoundException : com.mysql.jdbc.Driver
3.1同样schematool初始化过程中,由于缺少驱动导致无法连接。这里是我遇到的第一个大坑,由于对各种环境不熟悉,只能根据度娘进行各种尝试。这种情况,猜测是缺少jdbc驱动,于是添加jdbc驱动到相应的包下面。报的错中提示了lib路径,添加一下即可。
mysql-connector-java-8.0.15.jar添加到hive的lib:
[root@localhost 下载]# cp mysql-connector-java-8.0.15.jar /opt/apache-hive-3.1.2-bin/lib/
至于这个jar,可从官网下载,然后提取,可从网友那里获取资源。官网网址:https://dev.mysql.com/downloads/connector/j/
3.2 驱动版本问题
为了找一个正经的驱动程序,废了半天时间。首先是oracle官网目前支持不登陆下载,由于鄙人不熟悉各个系统环境,找了半天才确认hive链接所需的驱动在这个网页下载,并且我的centos7.4其实就是Redhat嘛,所以选择如下版本。不过mysql\jdk\hadoop等其实是有版本依赖的,这点也很好理解,如果我用最低版本JDK,也无法支持最新版hadoop嘛。找到了一个JDBC mysql的版本的参考。
4.Underlying cause: java.sql.SQLException : Access denied for user ‘lee’@‘192.168.1.105’ (using password: YES)
这个简单更改一下权限就好了
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
5. java.lang.RuntimeException: The dir: /tmp/hive on HDFS should be writable. Current permissions are: rwxr-xr-x
命令行启动HVIE实例的时候,由于hdfs权限问题导致的无法读取目录,从而报错,赋权即可。
[root@localhost ~]# hadoop fs -chmod -R 777 /tmp/hive
[root@localhost ~]# hadoop fs -ls /tmp
6. FAILED: Hive Internal Error: java.net.UnknownHostException(bogon: bogon: 未知的名称或服务)
经过度娘搜索,这貌似是一个虚拟机通病,主机名偶发性变为bogon,无论之前你设置的是什么。但是bogon这个名字各服务各机器不认识bogon,所以会报错。解决办法就是告诉各位,bogon就是localhost。
在hosts文件中增加这一行(你主机的IP)192.168.196.3 localhost
[root@localhost conf]# vi /etc/hosts