这里Hadoop的版本用的是 2.7.5
hive版本选择的是 2.3.4
请看好与hadoop版本搭配的hive,官方目前继续提供2.x和3.x的支持。
机器依然是hadoop的:
192.168.20.3 Master
192.168.20.4 Slave1
192.168.20.5 Slave2
关于hadoop搭建请看:https://www.jianshu.com/p/25a0650b4a40 和 https://www.jianshu.com/p/bcb2f77d90e8
首先要说明一下:hive的搭建除了hadoop之外还有mysql,所以这边先简单说一下centos下关于mysql的安装。
1.MYSQL的准备
1.首先卸载CentOs自带的mysql
执行rpm -qa | grep mysql
选择出现的机器上自带的mysql
执行rpm -e 机器上mysql的名字 --nodeps
执行yum -y install mysql-server
安装新的
如果此时提示 mysql-server没有可用包,分别执行:
yum -y install wget
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
yum install mysql-server
执行service mysqld start
开启服务,然后执行service mysqld status
看到开启了,继续接下来的步骤:
执行cd /usr/bin
去目录下执行命令./mysql_secure_installation
因为第一次启动密码为空,所以回车就可以,然后会要求设置密码
后面会进行初始化设置:
1.是否删除匿名用户
Remove anonymous users? [Y/n] Y
... Success!
2.是否不允许用户远程连接
Disallow root login remotely? [Y/n] N
... Success!
3.是否删除test数据库
Remove test database and access to it? [Y/n] Y
Dropping test database...
... Success!
Removing privileges on test database...
... Success!
4.是否重装
Reload privilege tables now? [Y/n] Y
... Success!
然后就完成了。我们登录mysql
mysql -uroot -p
分别执行:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit;
mysql配置就完成了!
2.接下来就是Hive的时间了
我们去官网下载一个hive,注意版本!
然后放到文件夹下,这边路径是 /opt/soft
此时文件的所有者是root,可以修改一下
分别是:
chgrp 用户名 文件名 -R
更改文件所属用户组
chown 用户名 文件名 -R
更改文件所属用户
去/etc/profile配置环境变量
export HIVE_HOME=/opt/soft/hive-2.3.4
export HIVE_CONF_DIR=$HIVE_HOME/conf
export CLASSPATH=$CLASSPATH:$HIVE_HOME/lib
export PATH=$PATH:$HIVE_HOME/bin
执行source /etc/profile
1.hive-env.sh
增加以下:
JAVA_HOME=/opt/java/jdk1.8.0_201
HADOOP_HOME=/opt/soft/hadoop-2.7.1
HIVE_HOME=/opt/soft/hive-2.3.4
export HIVE_CONF_DIR=$HIVE_HOME/conf
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$HADOOP_HOME/lib:$HIVE_HOME/lib
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
接下来就是编辑hive的配置文件了,这个是最费劲的!建议多使用vim的查找功能 也就是 Esc键之后 "/"键 写单词再回车!N是前一个单词,n是后一个单词。
在这之前先去hive的目录创建四个文件夹分别是:warehouse、log、tmp/resources、tmp/hiveJobsLog
2.hive-site.xml
首先要把hive-default.xml.template文件名字改成hive-site.xml
hive.metastore.warehouse.dir
/opt/soft/hive-2.3.4/warehouse
hive.downloaded.resources.dir
/opt/soft/hive-2.3.4/tmp/resources
hive.querylog.location
/opt/soft/hive-2.3.4/log
hive.exec.local.scratchdir
/opt/soft/hive-2.3.4/tmp/hiveJobsLog
Local scratch space for Hive jobs
这时候先保存一下让我们缓一缓~上面是关于日志和资源文件的修改。然后在hdfs上创建相同的目录
依次执行:
hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/warehouse
hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/tmp/resources
hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/tmp/hiveJobsLog
hdfs dfs -mkdir -p /opt/soft/hive-2.3.4/log
hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/warehouse
hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/tmp/resources
hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/tmp/hiveJobsLog
hdfs dfs -chmod g+w /opt/soft/hive-2.3.4/log
接下来我们去修改其他关于mysql的配置。
依然是 hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql://Master:3306/hive_metadata?createDatabaseIfNotExist=true
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
root
username to use against metastore database
javax.jdo.option.ConnectionPassword
root
password to use against metastore database
hive.exec.dynamic.partition
true
hive.exec.dynamic.partition.mode
nonstrict
hive.metastore.uris
Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.
hive.server2.thrift.bind.host
Master
Bind host on which to run the HiveServer2 Thrift service.
hive.server2.metrics.enabled
false
Enable metrics on the HiveServer2.
hive.server2.thrift.http.port
10001
Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'http'
hive.server2.webui.host
Master
hive.server2.webui.port
10002
hive.scratch.dir.permission
755
终于!!!!终于改好了!!!还不知道对不对,是在太多了!
3.接下来是 配置日志的地址, 修改hive-log4j.properties文件
cp hive-log4j.properties.template hive-log4j.properties
vi hive-log4j.properties
hive.log.dir=/opt/soft/hive-2.3.4/log4jFile
要先去创建文件夹哦!!!
4.然后拷贝一个JDBC包也就是mysql的连接包到hive的lib目录下
由于我是用虚拟机,所以可以这么弄。。。
cp /mnt/hgfs/shareOS/mysql-connector-java-5.1.6.jar /opt/soft/hive-2.3.4/lib/
- 拷贝jline扩展包
将$HIVE_HOME/lib
目录下的jline-2.12.jar包拷贝到$HADOOP_HOME/share/hadoop/yarn/lib
目录下
如果hadoop那个lib里有旧版本,就先把旧版本干掉!
他是个java命令行交互输入库。
cp /opt/soft/hive-2.3.4/lib/jline-2.12.jar /opt/soft/hadoop-2.7.1/share/hadoop/yarn/lib/
6.拷贝tools.jar包
复制$JAVA_HOME/lib
目录下的tools.jar到$HIVE_HOME/lib
下
cp $JAVA_HOME/lib/tools.jar /opt/soft/hive-2.3.4/lib/
- 执行初始化Hive操作
现在有两个选择用MySql或者Derby,我们选择mysql,当然把Derby的粘贴出来一下。
mysql :schematool -dbType mysql -initSchema
Derby:schematool -dbType mysql -initSchema
mysql主要是用mysql做存储hive元数据的数据库,我们配置里已经写好了hive_metadata
现在!!!!终于要使用了!!!!
1.开启metastore
nohup hive --service metastore 2>&1 &
2.开启hiveserver2
nohup hive --service hiveserver2 2>&1 &
ok!!启动完之后看一下jps会多出两个Runjar
然后去看一下 http://192.168.20.3:10002/
发现ui可以的。
执行
hive
这里使用了
show databases;
查看了一下数据库,发现有个default,可以
use default;
show tables;
之类的命令,这里不多提了,sql也不在这里赘述了。