这里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
<!-- 设定数据目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/soft/hive-2.3.4/warehouse</value>
</property>
<!-- 设定临时文件目录 -->
<property>
<name>hive.downloaded.resources.dir</name>
<value>/opt/soft/hive-2.3.4/tmp/resources</value>
</property>
<!-- 存放hive相关日志的目录 -->
<property>
<name>hive.querylog.location</name>
<value>/opt/soft/hive-2.3.4/log</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/opt/soft/hive-2.3.4/tmp/hiveJobsLog</value>
<description>Local scratch space for Hive jobs</description>
</property>
这时候先保存一下让我们缓一缓~上面是关于日志和资源文件的修改。然后在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
<!-- 这四个参数设置连接mysql -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Master:3306/hive_metadata?createDatabaseIfNotExist=true</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>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
<!-- 自动分区 -->
<property>
<name>hive.exec.dynamic.partition</name>
<value>true</value>
</property>
<property>
<name>hive.exec.dynamic.partition.mode</name>
<value>nonstrict</value>
</property>
<!-- 这里注意一下,如果meta元数据在远程的话可以在这里进行配置,如果在本地就不需要,这边mysql在Master上,所以不需要配置 -->
<property>
<name>hive.metastore.uris</name>
<value/>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>Master</value>
<description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>
<property>
<name>hive.server2.metrics.enabled</name>
<value>false</value>
<description>Enable metrics on the HiveServer2.</description>
</property>
<property>
<name>hive.server2.thrift.http.port</name>
<value>10001</value>
<description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'http'</description>
</property>
<!-- HiveServer2的WEB UI -->
<property>
<name>hive.server2.webui.host</name>
<value>Master</value>
</property>
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<property>
<name>hive.scratch.dir.permission</name>
<value>755</value>
</property>
终于!!!!终于改好了!!!还不知道对不对,是在太多了!
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
hive操作
这里使用了
show databases;
查看了一下数据库,发现有个default,可以use default;
show tables;
之类的命令,这里不多提了,sql也不在这里赘述了。
网友评论