折腾了两天,总算把Hive环境搭建好了,这里做下总结,方便日后回顾(可惜,RNG输给了SKT)。
准备
首先走到这一步,说明你的Hadoop集群已经搭建成功,这里不再赘述,如果不清楚可查阅一下内容:
1.1环境准备
- Windows通过虚拟机搭建Ubuntu环境:
http://blog.csdn.net/qq_36743482/article/details/78025852 - Hadoop伪分布式环境搭建
http://www.powerxing.com/install-hadoop/ - Hadoop全分布式环境搭建
http://www.powerxing.com/install-hadoop-cluster/
笔者这里使用的环境:全分布式
1.2备份系统
在正式开始之前,请一定先为每一个节点拍摄一个Ubuntu的快照。这样当你搭建Hive环境出问题时,可随时返回之前的状态。
操作方式:右键-快照-拍摄快照
1.3软件及jar包准备
- Hive压缩包:apache-hive-2.2.0-bin.tar.gz
http://mirrors.hust.edu.cn/apache/hive/hive-2.2.0/
或者直接百度hive,去官网下载 - Mysql连接JDBC包:mysql-connector-java-5.1.44.zip
解压改文件,有个jar文件:mysql-connector-java-5.1.44-bin.jar
https://dev.mysql.com/downloads/connector/j/
安装Mysql
打开终端:sudo apt-get install mysql-server
遇到Y就恢复Y,让设置密码,设置一个简单的,比如:0登录mysql:mysql -u root -p
- 建立数据库hive:mysql>create database hive;
- 查看数据库:mysql>show databases;
- 修改mysql字符集:mysql>alter database hive character set latin1;
- 为root设置最大权限:mysql>grant all privileges on . to ‘root’@’%’ identified by ‘0’ with grant option;
- 更新权限:mysql>flush privileges;
- 切换databases:mysql> use mysql;
- 删除不需要的用户:mysql> delete from user where host <> ‘%’;
- 查看mysql版本:mysql>select version();//这里是5.7.11-0ubuntu6
- 刷新权限:mysql>flush privileges;
安装Hive(这里搭建:单用户模式)
- 将压缩包解压到制定目录:
sudo tar -zxvf ./Desktop/apache-hive-2.2.0-bin.tar.gz -C /usr/local
- 重命名文件件
sudo mv apache-hive-2.2.0-bin hive
- 配置hive-site.xml文件
在/usr/local/hive/conf 目录下,复制 hive-default.xml 生成 hive-site.xml,或者可以直接vim hive-site.xml 自己创建
sudo cp hive-default.xml.template hive-site.xml
配置内容如下:
<configuration>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1:3306/hive?createDatabaseIfNotExist=true</value>
<!--该项是Mysql连接地址,因为单用户模式,mysql和hive在一台服务器,可以下127.0.0.1-->
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<!--JDBC-->
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<!--mysql用户名-->
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>0</value>
<!--mysql密码-->
</property>
</configuration>
请把xml文件中的注释去掉,并根据自己实际情况修改。
4. 配置hive-env.sh文件
在/usr/local/hive/conf 目录下,从模板文件hive-env.sh.template拷贝出来使用:
sudo cp hive-env.sh.template hive-env.sh
修改为:
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/usr/local/hadoop
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/usr/local/hive/conf
# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib
- 拷贝jdbc驱动到hive/lib下
sudo cp mysql-connector-java-5.1.44-bin.jar /usr/local/hive/lib
- 配置环境变量
sudo vim /etc/profile
在最后添加一下内容
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:${HIVE_HOME}/bin
export CLASSPATH=$CLASSPATH.:{HIVE_HOME}/lib
使配置生效
source /etc/profile
启动Hive
- 启动hadoop:start-dfs.sh
- 初始化hive
第一次需执行初始化命令 schematool -dbTypemysql –initSchema
schematool -initSchema -dbType mysql -userName=root-passWord=0 - 查看初始化后信息 schematool -dbType mysql –info
- 执行:hive
- 查看databases:hive>show databases;
- 至此安装完成!!!
常见问题
- 报错信息:
mysql> GRANT all ON hive.* TO hadoop@’localhost’ IDENTIFIED BY ‘0123’;
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
原因及解决方法:http://www.cnblogs.com/ivictor/p/5142809.html
- 报错信息
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive-2.3.0/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
原因:jar包冲突
解决方法:删除一个jar包即可,路径在报错信息里。