简介
master 作为client 客户端
slave1 作为hive server 服务器端
slave2 安装mysql server
1、slave2上安装mysql server
(1)安装 EPEL 源
yum -y install epel-release
(2)安装 MySQL server 包,下载源安装包
yum -y install wget #centos精简版是没有wget功能滴,所以需要安装
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
(3)安装源
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
安装完成,查看是否有包mysql-community.repo和mysql-community-source.repo:
cd /etc/yum.repos.d
安装 MySQL:
yum -y install mysql-community-server
(4)启动服务,重载所有修改过的配置文件
systemctl daemon-reload
开启服务:
systemctl start mysqld
开机自启:
systemctl enable mysqld
(5)获取mysql初始密码
安装完毕后,/var/log/mysqld.log文件中会自动生成一个随机的密码,我们需要先取得这个随机密码,以用于登录 MySQL 服务端:
获取初密码:
grep ‘temporarypassword’/var/log/mysqld.log
初始密码就在/var/log/mysqld.log文件当中
登陆 MySQL:
mysql -uroot -p
(6)MySQL 密码安全策略
设置密码强度为低级:
set global validate_password_policy=0;
设置密码长度:
set global validate_password_length=4;
修改本地密码:
alter user 'root'@'localhost' identified by '123456';
退出:\q
密码强度分级如下:
强度 | 解释 |
---|---|
0 | low 级别,只检查长度; |
1 | medium 级别(默认),符合长度为 8,且必须含有数字,大小写,特殊字符; |
2 | strong 级别,密码难度更大一些,需要包括字典文件。 |
密码长度最低长为 4,当设置长度为 1、2、3 时,其长度依然为 4。
(7)设置远程登录
以新密码登陆 MySQL:
mysql -uroot -p123456
创建用户:
create user 'root'@'%' identified by '123456';
允许远程连接:
grant all privileges on *.* to 'root'@'%' with grant option;
刷新权限:
flush privileges;
2、slave1 上安装 hive
(1)创建工作路径,并将 hive 解压
首先我们需要创建工作路径,并将 hive 解压。环境中 master 作为客户端,slave1 作为服务器端,因此都需要使用到 hive。
master 中操作如下:
mkdir -p /usr/hive
tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/hive/
同样slave1上建立问价夹/usr/hive ,然后将吗master中将安装包远程复制到slave1当中。
scp -r /usr/hive/apache-hive-2.1.1-bin root@slave1:/usr/hive/
(2)修改/etc/profile 文件设置 hive 环境变量(master 和 slave1 都执行)
vi /etc/profile
#set hive
export HIVE_HOME=/usr/hive/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin
生效环境变量:
source /etc/profile
(3)服务端和 Mysql 通信
因为服务端需要和 Mysql 通信,所以服务端需要 Mysql 的 lib 安装包到 Hive_Home/conf 目录下。(此处需要自己将下载的mysql.jar包放在slave2的/lib目录下)mysql.jar 放在 slave2 中的/lib 目录下,需要将其远程复制到 slave1 的 hive 的 lib 中。
slave2 中进行如下操作:
scp mysql-connector-java-5.1.47-bin.jar root@slave1:/usr/hive/apache-hive-2.1.1-bin/lib
总之在slave1的hive的lib下得有mysql包
(4)回到 slave1,cd conf/修改 hive-env.sh 中 HADOOP_HOME 环境变量。
cp hive-env.sh.template hive-env.sh
HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
(5)修改 slave1 hive-site.xml 文件
注意:此处千万不要复制hive-site.xml.template包,直接vi编辑一个新的hive-site.xml文件就ok,下面的master同样不能复制。
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!-- 数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true</value>
<!--连接MySQL所在的ip(主机名)及端口-->
</property>
<!-- 数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- MySQL数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- MySQL数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
</configuration>
3、Master 作为客户端
(1)解决版本冲突和 jar 包依赖问题。
由于客户端需要和 Hadoop 通信,所以需要更改 Hadoop 中 jline 的版本。即保留一个高版本的 jline jar 包,从 hive 的 lib 包中拷贝到 Hadoop 中 lib 位置。
cp /usr/hive/apache-hive-2.1.1-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib/
(2)修改 master hive-env.sh
cp hive-env.sh.template hive-env.sh
HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
(3)编写hive-site.xml
注意:不要复制hive-site.xml.template文件。
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--- 使用本地服务连接Hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<!-- 连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
<!--hive客户端通过thrift服务器服务连接MySQL数据库,这里的thrift服务器就是slave1的ip(主机名)-->
</property>
</configuration>
4、启动 Hive
(1)启动 hive server(slave1 上)
bin/hive --service metastore
成功!!!
(2)启动 hive client(master 上)
测试 hive 是否启动成功:
hive>show databases;