Hive远程模式说明:
1 安装环境介绍
1.1 相关组件版本
组件版本说明 |
|
|
组件名称 | 版本号 | 备注 |
Ubuntu | 16.06 | 64-bit |
Hadoop | hadoop-2.5.2 | 包括HDFS、YARN |
Hive | hive-1.2.1 | N/A |
MySQL | 5.7.19-0ubuntu0.16.04.1 | N/A |
1.2 安装顺序
2 安装过程
2.1 安装Hadoop
安装步骤略。运行时进行如下所示:
模块名称 | 操作系统 | IP地址 | 主机名 | 账户 | 服务 |
Hadoop | Ubuntu | 192.168.209.131 | node1 | root/root | 主节点: 4865 DataNode 4759 NameNode 5306 NodeManager 5050 SecondaryNameNode 5195 ResourceManager |
192.168.209.132 | node2 | root/root | 4483 NodeManager 4372 DataNode | ||
192.168.209.133 | node3 | root/root | 4011 DataNode 4124 NodeManager |
2.2 安装MySQL
Hive在远程模式下,使用MySQL数据库存储metastore元数据,因此需要先部署MySQL。
步骤 1 在node1节点安装MySQL。以root用户执行如下命令:
apt-get install mysql-server
安装期间需要设置用户名和密码,设置为root/root。
apt-get install mysql-client
apt-get install libmysqlclient-dev
安装完成后,MySQL是开机自启动的,通过如下命令可以检查MySQL是否在运行:
netstat -tap|grepmysql
步骤 2 修改MySQL字符集。
1. 登录MySQL。
mysql -uroot -proot
2. 查看数据库字符集
show variables like'character%';
client是utf8编码,而server是latin1编码,系统也是utf8编码;而开发环境字符集为utf8,所以需修改server的编码。
3. 修改数据库字符集。
vi /etc/mysql/mysql.conf.d/mysqld.cnf
修改后的配置如下所示:
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
#增加客户端的字符编码
default-character-set=utf8
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir= /usr/share/mysql
skip-external-locking
# 增加服务器端的字符编码
character-set-server=utf8
collation-server=utf8_general_ci
# 注释bind-address
#bind-address = 127.0.0.1
4. 重启MySQL。
service mysql restart
5. 查看字符集。
步骤 3 修改MySQL字符集。
1. 在MySQL中创建hive数据库。
createdatabasehive;
2. 使用hive数据库。
use hive;
3. 在hive数据库里创建user用户表。
createtableuser(Host char(20),Userchar(10),Password char(20));
4. 进入MySQL赋予权限
mysql -uroot-proot
insert intouser(Host,User,Password)values("localhost","hive","hive");
FLUSHPRIVILEGES;
GRANT ALLPRIVILEGES ON *.* TO 'hive'@'localhost'IDENTIFIED BY 'hive';
FLUSHPRIVILEGES;
2.3 安装Hive
Hive的安装比较简单,本节示例中和hadoop一样安装在root用户下。
步骤 1 上传软件包。
将Hive安装包apache-hive-1.2.1-bin.tar.gz上传到node1节点的“/home”目录下。
步骤 2 解压安装包并修改名称。
tar -zxvf apache-hive-1.2.1-bin.tar.gz
mv apache-hive-1.2.1-bin hive-1.2.1
步骤 3 配置环境变量。
vi /etc/profile
exportHIVE_HOME=/home/hive-1.2.1
exportPATH=$PATH:$HIVE_HOME/bin:/home/hive-1.2.1/conf
source /etc/profile
步骤 4 创建iotmp文件夹。
cd /home/hive-1.2.1
mkdir iotmp
步骤 5 修改Hive配置文件。
1. 修改配置文件hive-env.sh.
cd /home/hive-1.2.1/conf
cp hive-env.sh.template hive-env.sh
# SetHADOOP_HOME to point to a specific hadoop install directory
#HADOOP_HOME=${bin}/../../hadoop
HADOOP_HOME=/home/hadoop-2.5.2
# HiveConfiguration Directory can be controlled by:
export HIVE_CONF_DIR=/home/hive-1.2.1/conf
# Foldercontaining extra ibraries required for hive compilation/execution can becontrolled by:
exportHIVE_AUX_JARS_PATH=/home/hive-1.2.1/lib
2. 修改配置文件hive-site.xml.
cd /home/hive-1.2.1/conf
cp hive-env.sh.template hive-env.sh
配置示例如下所示:
<name>hive.exec.local.scratchdir</name>
<value>/home/hive-1.2.1/iotmp</value>
<description>Local scratch space for Hive jobs</description>
</property>
<name>hive.downloaded.resources.dir</name>
<value>/home/hive-1.2.1/iotmp/${hive.session.id}_resources</value>
<description>Temporary localdirectory for added resources in the remote file system.</description>
</property>
<name>hive.querylog.location</name>
<value>/home/hive-1.2.1/iotmp</value>
<description>Location of Hive runtime structured log file</description>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
<description>Thrift URI for theremote metastore. Used by metastore client to connect to remotemetastore.</description>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for aJDBC metastore</description>
</property>
<property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for aJDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
<description>Username to use againstmetastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
<description>password to use againstmetastore database</description>
</property>
<property>
<name>hive.aux.jars.path</name>
<value>/home/hive-1.2.1/auxlib</value>
<description>The location of theplugin jars that contain implementations of user defined functions andserdes.</description>
</property>
<name>hive.server2.logging.operation.log.location</name>
<value>/home/hive-1.2.1/iotmp/operation_logs</value>
<description>Top level directory where operation logs are storedif logging functionality is enabled</description>
</property>
3. 修改配置文件hive-config.sh
cd /home/hive-1.2.1/bin
vi hive-config.sh
配置示例如下所示:
export HADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-256}
export JAVA_HOME=/root/jdk1.8.0_131
export HADOOP_HOME=/home/hadoop-2.5.2
export HIVE_HOME=/home/hive-1.2.1
步骤 6 下载mysql-connector-java-5.1.31-bin.jar并上传到$HIVE_HOME/lib目录下。
步骤 7 替换 jline.jar 包
cp /home/hive-1.2.1/lib/jline-2.12.jar /home/hadoop-2.5.2/share/hadoop/yarn/lib/
步骤 8 在HDFS上创建Hive仓库的目录(这些路径是在hive-site.xml里配置的默认路径)。
hadoop fs -mkdir /tmp
hadoop fs -mkdir /user/hive/warehouse
hadoop fs -chmod g+w /tmp
hadoop fs -chmod g+w /user/hive/warehouse
步骤 9 启动Hive。
启动MetaStore: hive --service metastore &
启动HiveServer: hive --service hiveserver2 &
启动Hive CLI: hive
上述每个命令都会启动一个RunJar进程。
启动过程中会有报错,在网上查找解决即可。
参考:http://blog.csdn.net/yizheyouye/article/details/53841084
http://f.dataguru.cn/thread-32809-1-1.html
http://f.dataguru.cn/thread-32711-1-1.html