版本信息:
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/
选择下载
apache-hive-2.1.1-bin.tar.gz
并解压,同时配置环境变量:
- 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进行修改,添加内容:
- export JAVA_HOME=/home/xqshi/Downloads/hadoop/jdk1.8.0_91
- export HIVE_HOME=/home/xqshi/Downloads/hadoop/apache-hive-2.1.1-bin
- export HADOOP_HOME=/home/xqshi/Downloads/hadoop/hadoop-2.8.0
对hive-site.xml进行修改:
- <property>
- <name>javax.jdo.option.ConnectionURL</name>
- <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true$amp;useSSL=false</value>
- <description>JDBC connect string for a JDBC metastore</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionDriverName</name>
- <value>com.mysql.jdbc.Driver</value>
- <description>Driver class name for a JDBC metastore</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionUserName</name>
- <value>数据库用户名</value>
- <description>Username to use against metastore database</description>
- </property>
- <property>
- <name>javax.jdo.option.ConnectionPassword</name>
- <value>数据库密码</value>
- <description>password to use against metastore database</description>
- </property>
- #下面的部分不配置会报错
- <property>
- <name>hive.exec.local.scratchdir</name>
- <value>自定义目录</value>
- <description>Local scratch space for Hive jobs</description>
- </property>
- <property>
- <name>hive.downloaded.resources.dir</name>
- <value>自定义目录</value>
- <description>Temporary local directory for added resources in the remote file system.</description>
- </property>
- <property>
- <name>hive.querylog.location</name>
- <value>自定义目录</value>
- <description>Location of Hive run time structured log file</description>
- </property>
- <property>
- <name>hive.server2.logging.operation.log.location</name>
- <value>自定义目录/operation_logs</value>
- <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
- </property>
上面最关键的是:不能自己脑洞大开,把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完成。