一、集群规划
- 系统环境如下:
- 操作系统:Linux
- Hadoop 2.7.2
- Hive2.1.1
- MySQL 5.7.18
- JDK 1.7
hadoop集群各节点规划如下:
IP | 主机名 | node | hive | metastore | mysql |
---|---|---|---|---|---|
134.xx.3.81 | master-hadoop | nn1 | hive | metastore | |
134.xx.3.54 | slave1-hadoop | nd1 | hive | client | |
134.xx.3.85 | slave2-hadoop | nd1 | hive | client | |
134.xx.3.86 | slave3-hadoop | nd1 | hive | client | |
134.xx.3.88 | slave5-hadoop | nd1 | hive | client | mysql |
说明:nn代表hadoop的namenode,dn代表datanode
我们把metastore服务装在81、MySQL装在88上(理论上metastore和mysql装在集群的哪台都行,有时间可以测试下)
在执行以下步骤之前,请确保已经安装了Hadoop集群
* 二、安装mysql(见我上一篇文章)*
* 三、安装hive-2.1.1(注意:hive最好安装在hadoop用户下,这样访问hdfs时不会出现权限问题) *
1. 下载最新的hive,直接去apache 里面找hive2.1.0下载就行。
2. 解压到/usr2/hadoop目录下(这是我hadoop用户默认的路径)
3. 将解压出来的文件夹重命名为hive-2.1.1
4. 设置环境变量
vi /etc/profile
export HIVE_HOME=/usr2/hadoop/hive-2.1.1
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$HIVE_HOME
四、配置mysql和metastore
1. 启动mysql服务:/etc/init.d/mysqld start
2. 因为使用MySQL作为存储元数据的数据库,所以需要把连接MySQL的 jar包放入或链接到$HIVE_HOME/lib目录下,我这里使用了最新的mysql-connector-java-5.1.40.tar.gz
3. 创建数据库和用户
进入mysql安装目录
bin/mysql -u root -p
Enter password:
mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> CREATE USER 'hive'@'metastorehost' IDENTIFIED BY 'mypassword';
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'metastorehost';
mysql> GRANT ALL ON metastore.* TO 'hive'@'metastorehost' IDENTIFIED BY 'hive';
mysql> GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive';
mysql> FLUSH PRIVILEGES;
mysql> ALTER DATABASE metastore CHARACTER SET latin1; (解决mysql/hive字符集问题)
mysql> quit;
五、Hive配置
1 Hive配置文件里要用到HDFS的一些路径,需要先手动创建。
hdfs dfs -mkdir /usr/hive/warehouse
hdfs dfs -mkdir /usr/hive/tmp
hdfs dfs -mkdir /usr/hive/log
上述语句涉及hive-site.xml hive.metastore.warehouse.dir等,表示数据在hdfs中的存储位置
2 hive-env.sh (所有节点)
export HADOOP_HOME=/usr/lib/hadoop
export HIVE_CONF_DIR=/usr/lib/hive/conf
3 hive-log4j.properties(所有节点)
首先创建log存放的文件夹
mkdir /usr2/hadoop/hive-2.1.1/logs
然后配置hive-log4j.properties
property.hive.log.dir = /usr2/hadoop/hive-2.1.1/logs
4 服务端hive-site.xml(服务端指的是Metastore服务所在的机器,即安装metastore的机器,这里是81 master-hadoop)
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://134.149.3.88:3306/metastore?createDatabaseIfNotExist=true</value>
<description>the URL of the MySQL database</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>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/usr/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/hive/log</value>
</property>
5 客户端hive-site.xml
<property>
<name>hive.metastore.uris</name>
<value>thrift://Goblin01:9083,Goblin02:9083</value>
<description>IP address (or fully-qualified domain name) and port of the metastore host</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/usr/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/hive/log</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr2/hadoop/hive-2.1.1/tmp/local</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr2/hadoop/hive-2.1.1/tmp/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
6 初始化数据库(注意一定要在metastore服务的那台执行)
cd /usr2/hadoop/hive-2.1.1/bin
./schematool --dbType mysql --initSchema
初始化时注意看有没有报错,没报错即成功
7 登录mysql,show tables看看有没有生成表
8 启动Hive服务端(metastore服务):
cd $HIVE_HOME
bin/hive --service metastore
后台启动:
bin/hive --service metastore 2>&1 >> /var/log.log &
后台启动,关闭shell连接依然存在:
nohup bin/hive --service metastore 2>&1 >> /var/log.log &
启动成功日志
关闭metastore服务
ps -ef|grep HiveMetaStore
找到进程
kill -9 进程号
9 启动Hive客户端
cd $HIVE_HOME
hive
启动成功日志