版本信息:
Ubuntu:16.04
JDK:1.8.0_144
Hadoop:2.7.4
Hive:2.1.1
MySQL:5.7.22
今天捣鼓了一下午关于Hadoop集群安装Hive,遇到了一些问题,在此记录下来。
在安装Hive之前,需要确保JDK,Hadoop安装完毕,在此不做赘述,网上教程一大堆。
1.安装MySQL:
这个安装很简单,因为我已经是登录root账户,所以直接shell依次键入:
(1)sudo apt-get install mysql-server
(2)sudo apt-get install mysql-client
(3)sudo apt-get install libmysqlclient-dev
(4)sudo apt-get install libmysql-java
然后将/usr/share/java/目录中的mysql-connector-java-5.1.38.jar拷贝出来,留作备用。
2.下载Hive,我这里直接下载的是apache官方版本,传送门:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
选择下载
并解压,同时配置环境变量:
export HIVE_HOME=‘自己的安装位置’
export PATH=$HIVE_HOME/bin:$PATH
3.配置Hive:
在$HIVE_HOME/conf目录下:
cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
对hive-env.sh进行修改,添加内容:
exportJAVA_HOME=/home/xqshi/Downloads/hadoop/jdk1.8.0_91
exportHIVE_HOME=/home/xqshi/Downloads/hadoop/apache-hive-2.1.1-bin
exportHADOOP_HOME=/home/xqshi/Downloads/hadoop/hadoop-2.8.0
对hive-site.xml进行修改:
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive
JDBC connect string for a JDBC metastore
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
Driver class name for a JDBC metastore
javax.jdo.option.ConnectionUserName
数据库用户名
Username to use against metastore database
javax.jdo.option.ConnectionPassword
数据库密码
password to use against metastore database
#下面的部分不配置会报错
hive.exec.local.scratchdir
自定义目录
Local scratch space for Hive jobs
hive.downloaded.resources.dir
自定义目录
Temporary local directory for added resources in the remote file system.
hive.querylog.location
自定义目录
Location of Hive run time structured log file
hive.server2.logging.operation.log.location
自定义目录/operation_logs
Top level directory where operation logs are stored if logging functionality is enabled
上面最关键的是:不能自己脑洞大开,把localhost换成自己的主机映射,因为我自己就在这个地方卡了大半个下午,查了很多资料都解决不了,结果改成localhost反而就行了,应该是因为接下来的关于创建mysql中hive账户的原因。
4.修改hive-log4j2.properties:
hive.log-dir=自定义目录/logs
5.登录mysql,创建hive账户:
mysql -u root -p
create user 'hive'@'%' identified by 'hive'; // 创建账户hive,并设置密码为hive
grant all privileges on *.* to 'hive'@'%' with grant option; // 将所有权限赋予hive
flush privileges; // 刷新权限
select user,host from mysql.user; // 在mysql中的用户里查找所有用户和名称,可以看到其他的都是loca lhost,其中%代表所有服务都可以连接,不仅仅是本地才能连接
exit;
6.重启mysql,并登录hive账户,并创建database:
service mysql restart
mysql -u hive -p
create database hive_metadata; // 建立hive专属元数据库
show databases;
7.将第1步中的mysql-connector-java-5.1.38.jar拷贝到$HIVE_HOME/lib下
8.在HDFS上创建/tmp和/user/hive/warehouse,并赋予写权限:
hdfs dfs -mkdir /tmp
hdfs dfs -mkdir /user/hive/warehouse
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /user/hive/warehouse
9.Hive2需要对元数据库进行初始化:
bin/schematool -dbType mysql -initSchema
10.初始化后就可以启动hive了,运行hive:
bin/hive
运行成功,键入:
hive> show databases;
OK
default
至此,在Ubuntu上安装Hive和MySQL完成。