题目一、基础配置
core-site.xml参数配置详情
官方文档:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml
core-default.xml与core-site.xml的功能是一样的,如果在core-site.xml里没有配置的属性,则会自动会获取core-default.xml里的相同属性的值
属性 | 值 | 说明 |
---|---|---|
fs.default.name | hdfs://??? | 定义master的URI和端口 |
hadoop.tmp.dir | /??? | 临时文件夹,指定后需将使用到的所有子级文件夹都要手动创建出来,否则无法正常启动服务。 |
hdfs-site.xml参数配置详情
属性 | 值 | 说明 |
---|---|---|
dfs.replication | ??? | hdfs数据块的复制份数,默认3,理论上份数越多跑数速度越快,但是需要的存储空间也更多。 |
dfs.namenode.name.dir | file:/usr/hadoop/hadoop-2.7.3/hdfs/??? | NN所使用的元数据保存 |
dfs.datanode.data.dir | file:/usr/hadoop/hadoop-2.7.3/hdfs/??? | 真正的datanode数据保存路径,可以写多块硬盘,逗号分隔 |
yarn-site.xml参数配置详情
属性 | 值 | 说明 |
---|---|---|
yarn.resourcemanager.admin.address | ${yarn.resourcemanager.hostname}:18141 | ResourceManager 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。 |
yarn.nodemanager.aux-services | mapreduce_shuffle | NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 |
mapred-site.xml参数配置详情
属性 | 值 | 说明 |
---|---|---|
mapreduce.framework.name | yarn | 指定MR运行框架,默认为local |
# 1.按照左侧虚拟机名称修改对应主机名(分别为master、slave1、slave2,使用hostnamectl命令)
# 操作环境:master、slave1、slave2
hostnamectl master && bash
hostnamectl slave1 && bash
hostnamectl slave2 && bash
# 2.修改host文件添加左侧master、slave1、slave2节点IP与主机名映射(使用内网IP)
# 操作环境:master、slave1、slave2
master 172.18.39.185
slave1 172.18.39.186
slave2 172.18.12.206
echo "
172.18.39.185 master
172.18.39.186 slave1
172.18.12.206 slave2
" >> /etc/hosts
# 3.时区更改为上海时间(CST+0800时区)
# 操作环境:master、slave1、slave2
tzselect
> 5
> 9
> 1
vim /etc/profile
TZ='Asia/Shanghai'; export TZ
# 应用配置
source /etc/profile
# 4.环境已经安装NTP,修改master节点NTP配置,设置master为本地时间服务器,屏蔽默认server,服务器层级设为10
# 操作环境:master
echo "server 127.127.1.0 " >> /etc/ntp.conf
echo "fudge 127.127.1.0 stratum 10" >> /etc/ntp.conf
# 5.开启NTP服务
# 操作环境:master
systemctl start ntpd.service
# 6.添加定时任务--在早十-晚五时间段内每隔半个小时同步一次本地服务器时间(24小时制、使用用户root任务调度crontab,服务器地址使用主机名)
# 操作环境:slave1、slave2
echo "*/30 10-17 * * * /usr/sbin/ntpdate master" >> /var/spool/cron/root
# 7.主节点生成公钥文件id_rsa.pub(数字签名RSA,用户root,主机名master)
# 操作环境:master
ssh-keygen
# 8.建立master自身使用root用户ssh访问localhost免密登录
# 操作环境:master
ssh-copy-id -i /root/.ssh/id_rsa.pub localhost
> yes
> master 密码
# 9.建立master使用root用户到slave1的ssh免密登录访问
# 操作环境:master
ssh-copy-id -i /root/.ssh/id_rsa.pub slave1
> yes
> slave1 密码
# 10.建立master使用root用户到slave2的ssh免密登录访问
# 操作环境:master
ssh-copy-id -i /root/.ssh/id_rsa.pub slave2
> yes
> slave2 密码
# 验证免密登录
ssh master
exit
ssh slave1
exit
ssh slave2
exit
# 11.将jdk安装包解压到/usr/java目录(安装包存放于/usr/package277/,路径自行创建,解压后文件夹为默认名称,其他安装同理)
# 操作环境:master、slave1、slave2
mkdir -p /usr/java
tar -zxvf /usr/package277/jdk-8u221-linux-x64.tar.gz -C /usr/java/
# java文件同步至 slave服务器 slave1 slave2, 并在slave 重复 12步
scp -r /usr/java/ root@slave1:/usr/
scp -r /usr/java/ root@slave2:/usr/
# 12.配置系统环境变量JAVA_HOME,同时将JDK安装路径中bin目录加入PATH系统变量,注意生效变量,查看JDK版本
# 操作环境:master、slave1、slave2
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_221
export PATH=$PATH:$JAVA_HOME/bin
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
# 应用配置
source /etc/profile
# 验证
java -version
题目二、zookeeper搭建
Zookeeper是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
预装的配置文件zoo_sample.cfg下面默认有五个属性,分别是:
1.tickTime
心跳间隔,单位是毫秒,系统默认是2000毫秒,也就是间隔两秒心跳一次。
tickTime的意义:客户端与服务器或者服务器与服务器之间维持心跳,也就是每个tickTime时间就会发送一次心跳。通过心跳不仅能够用来监听机器的工作状态,还可以通过心跳来控制Flower跟Leader的通信时间,默认情况下FL的会话时常是心跳间隔的两倍。
2.initLimit
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
3.syncLimit
集群中flower服务器(F)跟leader(L)服务器之间的请求和答应最多能容忍的心跳数。
4.clientPort
客户端连接的接口,客户端连接zookeeper服务器的端口,zookeeper会监听这个端口,接收客户端的请求访问,端口默认是2181。
5.dataDir
该属性对应的目录是用来存放myid信息跟一些版本,日志,跟服务器唯一的ID信息等。
在集群Zookeeper服务在启动的时候,会回去读取zoo.cfg这个文件,从这个文件中找到这个属性然后获取它的值也就是dataDir 的路径,它会从这个路径下面读取myid这个文件,从这个文件中获取要启动的当前服务器的地址。
集群信息的配置:
在配置文件中,配置集群信息是存在一定的格式:service.N =YYY: A:B
N:代表服务器编号(准确对应对应服务器中myid里面的值)
YYY:服务器地址
A:表示 Flower 跟 Leader的通信端口,简称服务端内部通信的端口(默认2888)
B:表示是选举端口(默认是3888)
例如:server.1=master:2888:3888
配置文件参考
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
# 配置数据存储路径
dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata
# 配置日志文件路径
dataLogDir=/usr/zookeeper/zookeeper-3.4.14/zkdatalog
# 配置集群列表
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
# 1.将zookeeper安装包解压到指定路径/usr/zookeeper(安装包存放于/usr/package277/)
# 操作环境:master、slave1、slave2
mkdir -p /usr/zookeeper && cd /usr/zookeeper
tar -zxvf /usr/package277/zookeeper-3.4.14.tar.gz -C /usr/zookeeper/
# zookeeper文件同步至 slave服务器 slave1 slave2, 并在slave
scp -r /usr/zookeeper/ root@slave1:/usr/
scp -r /usr/zookeeper/ root@slave2:/usr/
# 2.配置系统变量ZOOKEEPER_HOME,同时将Zookeeper安装路径中bin目录加入PATH系统变量,注意生效变量
# 操作环境:master、slave1、slave2
vim /etc/profile
export ZOOKEEPER_HOME=/usr/zookeeper/zookeeper-3.4.14
export PATH=$PATH:$ZOOKEEPER_HOME/bin
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
## 应用配置
source /etc/profile
# 3.Zookeeper的默认配置文件为Zookeeper安装路径下conf/zoo_sample.cfg,将其修改为zoo.cfg
# 操作环境:master、slave1、slave2
cd /usr/zookeeper/zookeeper-3.4.14/conf/
vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
clientPort=2181
# 配置数据存储路径
dataDir=/usr/zookeeper/zookeeper-3.4.14/zkdata
# 配置日志文件路径
dataLogDir=/usr/zookeeper/zookeeper-3.4.14/zkdatalog
# 配置集群列表
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
scp -r /usr/zookeeper/zookeeper-3.4.14/conf/zoo.cfg root@slave1:/usr/zookeeper/zookeeper-3.4.14/conf/
scp -r /usr/zookeeper/zookeeper-3.4.14/conf/zoo.cfg root@slave2:/usr/zookeeper/zookeeper-3.4.14/conf/
# 4.设置数据存储路径(dataDir)为/usr/zookeeper/zookeeper-3.4.14/zkdata
# 操作环境:master、slave1、slave2
# 已操作 见zoo.cfg
# 5. 设置日志文件路径(datalogDir)为/usr/zookeeper/zookeeper-3.4.14/zkdatalog
# 操作环境:master、slave1、slave2
# 已操作 见zoo.cfg
# 6.设置集群列表(要求master为1号服务器,slave1为2号服务器,slave2为3号服务器)
# 操作环境:master、slave1、slave2
# 已操作 见zoo.cfg
# 7.创建所需数据存储文件夹、日志存储文件夹
# 操作环境:master、slave1、slave2
cd /usr/zookeeper/zookeeper-3.4.14 && mkdir zkdata zkdatalog
# 8.数据存储路径下创建myid,写入对应的标识主机服务器序号
# 操作环境:master、slave1、slave2
## master 服务器
cd /usr/zookeeper/zookeeper-3.4.14/zkdata && echo 1 >> myid
cat myid
## slave1 服务器
cd /usr/zookeeper/zookeeper-3.4.14/zkdata && echo 2 >> myid
## slave2 服务器
cd /usr/zookeeper/zookeeper-3.4.14/zkdata && echo 3 >> myid
# 9.启动服务,查看进程QuorumPeerMain是否存在
# 操作环境:master、slave1、slave2
## 启动 zookeeper
zkServer.sh start
# 10.查看各节点服务器角色是否正常(leader/follower)
# 操作环境:master、slave1、slave2
## 查看 zookeeper 的状态
zkServer.sh status
题目三、Hadoop集群搭建
<configuration>
<property>
<name>fs.default.name</name>
<value>????</value>
</property>
</configuration>
# 1.将Hadoop安装包解压到指定路径/usr/hadoop(安装包存放于/usr/package277/)
# 操作环境:master、slave 1、slave2
mkdir -p /usr/hadoop && cd /usr/hadoop
tar -zxvf /usr/package277/hadoop-2.7.7.tar.gz -C /usr/hadoop/
# zookeeper文件同步至 slave服务器 slave1 slave2, 并在slave
scp -r /usr/hadoop/ root@slave1:/usr/
scp -r /usr/hadoop/ root@slave2:/usr/
# 2.配置环境交量HADOOP_HOME,将Hadoop安装路径中bin目录和sbin目录加入PATH系统交量,注意生效交量
# 操作环境:master、slave 1、 slave2
vim /etc/profile
#hadoop
#配置Hadoop安装目录
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
#在原PATH基础上加入Hadoop的bin和sbin目录
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
scp -r /etc/profile root@slave1:/etc/
scp -r /etc/profile root@slave2:/etc/
## 应用配置
source /etc/profile
# 3.配置Hadoop运行环境JAVA_HOME
# 操作环境:master、slave1、 slave2
cd /usr/hadoop/hadoop-2.7.7/etc/hadoop
echo "export JAVA_HOME=/usr/java/jdk1.8.0_221" >> hadoop-env.sh
echo "export JAVA_HOME=/usr/java/jdk1.8.0_221" >> yarn-env.sh
# 修改配置文件
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
vim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property>
<name>fs.default.name</name>
<!--用于指定NameNode的地址 -->
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!--Hadoop运行时产生文件的临时存储目录 -->
<value>/root/hadoopData/tmp</value>
</property>
</configuration>
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<!-- 数据共副本的数三,默认为3-->
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<!--NameNode在本地文件系统中持久存储命名空间和亨务日志的路街-->
<value>/root/hadoopData/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!--DataNode在本她文件系統中存放共的路径-->
<value>/root/hadoopData/data</value>
</property>
<property>
<name>dfs.permissions</name>
<!--关闭hadoop象群权限校验-->
<value>false</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<!--datanode之间的通信也通过域名方式-->
<value>true</value>
</property>
</configuration>
vim yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<!--指定reducer获取数据的方式-->
<!--NodeManager上运行的附属服务,也可以理解为 mapreduce获取数据的方式-->
<value>mapreduce_shuffle</value>
</property>
<property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.shuffleHandler</value>
</property>
</configuration>
vim mapred-site.xml
<configuration>
<property>
<!--指定Mapreduce运行在yarn上-->
<!--指定使用 YARN 运行 MapReduce 程序,默认为 local-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
scp -r /usr/hadoop/hadoop-2.7.7/etc/hadoop/core-site.xml root@slave1:/usr/hadoop/hadoop-2.7.7/etc/hadoop/
scp -r /usr/hadoop/hadoop-2.7.7/etc/hadoop/hdfs-site.xml root@slave1:/usr/hadoop/hadoop-2.7.7/etc/hadoop/
scp -r /usr/hadoop/hadoop-2.7.7/etc/hadoop/yarn-site.xml root@slave1:/usr/hadoop/hadoop-2.7.7/etc/hadoop/
scp -r /usr/hadoop/hadoop-2.7.7/etc/hadoop/mapred-site.xml root@slave1:/usr/hadoop/hadoop-2.7.7/etc/hadoop/
scp -r /usr/hadoop/hadoop-2.7.7/etc/hadoop/core-site.xml root@slave2:/usr/hadoop/hadoop-2.7.7/etc/hadoop/
scp -r /usr/hadoop/hadoop-2.7.7/etc/hadoop/hdfs-site.xml root@slave2:/usr/hadoop/hadoop-2.7.7/etc/hadoop/
scp -r /usr/hadoop/hadoop-2.7.7/etc/hadoop/yarn-site.xml root@slave2:/usr/hadoop/hadoop-2.7.7/etc/hadoop/
scp -r /usr/hadoop/hadoop-2.7.7/etc/hadoop/mapred-site.xml root@slave2:/usr/hadoop/hadoop-2.7.7/etc/hadoop/
# 4.设置全局参数,指定HDFS_上NameNode地址为master,端口默认为9000(core-site.xml文件设置)
# 操作环境:master、slave1、slave2
>> 修改配置 core-site.xml
# 5.指定临时存储目录为本地/root/hadoopData/tmp(要求为绝对路径,下同)
# 操作环境:master、slave 1、slave2
>> 修改配置 core-site.xml
# 6.设置HDFS参数,指定备份文本数量为2(hdfs-site.xml文件设置)
# 操作环境:master、slave 1、 slave2
>> 修改配置 hdfs-site.xml
# 7.设置HDFS参数,指定NN存放元数据信息路径为本地/root/hadoopData/name;指定DN存放元数据信息路径为本地/root/hadoopData/data(要求为绝对路径)
# 操作环境:master、slave1、slave2
>> 修改配置 hdfs-site.xml
# 8.设置HDFS参数,关闭hadoop集群权限校验(安全配置),允许其他用户连接集群;指定datanode之间通过域名方式进行通信
# 操作环境:master、slave1、slave2
>> 修改配置 hdfs-site.xml
# 9.设置YARN运行环境$JAVA_HOME蔘数
# 操作环境:master、 slave 1、 slave2
echo "export JAVA_HOME=/usr/java/jdk1.8.0_221" >> yarn-env.sh
# 10.设置YARN核心参数,指定ResourceManager进程所在主机为master,端口为18141;指定mapreduce 获取数据的方式为mapreduce_shuffle(yarn-site.xml文件设置)
# 操作环境:master、slave1、slave2
>> 修改配置 yarn-site.xml
# 11.设置计算框架参数,指定MR运行在yarn上 (mapred-site.xml文件设置)
# 操作环境:master、slave1、slave2
>> 修改配置 mapreduce-site.xml
# 12.设置节点文件,要求master为主节点;slave1、slave2为子节点
# 操作环境:master、slave1、slave2
echo master > master && echo slave1 > slaves && echo slave2 >> slaves
# 13.对文件系统进行格式化
# 操作环境:master
hadoop namenode -format
# 14.启动Hadoop集群查看各节点服务 (只在master节点操作)
# 操作环境:master、slave1、slave2
start-all.sh
> yes
# 15.查看集群运行状态是否正常
# 操作环境:master
jps
题目四、Hive集群搭建
第一步 安装数据库
## 前提说明
# 1.环境中已经安装mysql-community-server,注意mysql5.7默认安装后为root用户随机生成一个密码;
# 直接查看密码:
grep "temporary password" /var/log/mysqld.log
# 登入数据库:
mysql -uroot -p
# 输入随机密码即可登录
# 2.根据要求设置密码,注意对应的安全策路修改;
# 设置密码强度为低级:
set global validate_password_policy=????;
# 设置密码长度:
set global validate_password_length=????;
# 修改本地密码:
alter user 'root'@'localhost' identified by '7277';
# 3.根据要求满足任意主机节点root的远程访问权限(否则后续hive无法连接mysql);
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '????' WITH GRANT OPTION;
# 4.注意刷新权限;
flush privileges;
# 5.爹考命今
# 启动mysql服务:
systemctl start mysqld
#关闭mysql服务:
systemctl stop mysqld
#查看mysql服务:
systemctl status mysqld
## 考试条件
# 1.环境中已经安装mysql-community-server,关闭mysql开机自启服务
# 操作环境:slave2
# 查看MySQL服务的自启动状态
systemctl list-unit-files | grep 'mysql'
# 关闭MySQL开机自启动服务
systemctl disable mysqld
# 2.开启MysQL服务
# 操作环境:slave2
systemctl status mysqld
systemctl start mysqld
systemctl status mysqld
# 3.判断mysqld.log日志下是否生成初临时密码
# 操作环境:slave2
grep "temporary password" /var/log/mysqld.log
mysql -uroot -p
# 4.设置mysql数据库本地root用户密码为123456
# 操作环境:slave2
# 设置密码强度为低级:
set global validate_password_policy=0;
# 设置密码长度:
set global validate_password_length=4;
# 修改本地密码:
alter user 'root'@'localhost' identified by '123456';
# 要求满足任意主机节点root的远程访问权限(否则后续hive无法连接mysql);
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
# 刷新权限;
flush privileges;
quit
第二步 Hive基础环境配置
Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。
1.讲指定版本的Hive安装包解压到指定路径,添加系统并生效;
2.修改Hive运行环境
# 配置Hadoop安装路径
export HADOOP_HOME=????
# 配置Hive配置文件存放路径为conf
export HIVE_CONF_DIR=????
# 配置Hive运行资源库路径为lib
export HIVE_AUX_JARS_PATH=????
3.由于客户端需要和Hadoop通信,为避免jline版本冲突问题,将Hive中lib/jline-2.12.jar拷贝到Hadoop中,保留高版本.
# 1.将Hive安装包解压到指定路径/usr/hive(安装包存放于/usr/package277/)
# 操作环境:master、slave1
mkdir -p /usr/hive && cd /usr/hive
tar -zxvf /usr/package277/apache-hive-2.3.4-bin.tar.gz -C /usr/hive/
# 2.配置环境变量HIVE_HOME,将Hive安装路径中的bin目录加入PATH系统变量,注意生效变量
# 操作环境:master、slave1
vim /etc/profile
#配置Hive安装目录
export HIVE_HOME=/usr/hive/apache-hive-2.3.4-bin
#在原PATH基础上加入Hive的bin目录
export PATH=$PATH:$HIVE_HOME/bin
scp -r /etc/profile root@slave1:/etc/
## 应用配置
source /etc/profile
# 3.修改HIVE运行环境,配置Hadoop安装路径HADOOP_HOME
# 操作环境:master、slave1
cd /usr/hive/apache-hive-2.3.4-bin/conf && vim hive-env.sh
# 配置Hadoop安装路径
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.7
# 配置Hive配置文件存放路径
export HIVE_CONF_DIR=/usr/hive/apache-hive-2.3.4-bin/conf
# 配置Hive运行资源库路径
export HIVE_AUX_JARS_PATH=/usr/hive/apache-hive-2.3.4-bin/lib
# hive文件同步至 slave服务器 slave1
scp -r /usr/hive/ root@slave1:/usr/
# 4.修改HIVE运行环境,配置Hive配置文件存放路径HIVE_CONF_DIR
# 操作环境:master、slave1
# 已操作
# 5.修改HIVE运行环境,配置Hive运行资源库路径HIVE_AUX_JARS_PATH
# 操作环境:master、slave1
# 已操作
# 6.解决jline的版本冲突,将$HIVE_HOMEN/lib/jline-2.12jar同步至$HADOOP_HOME/share/hadoop/yarn/lib/
# 操作环境:master、slave1
cp /usr/hive/apache-hive-2.3.4-bin/lib/jline-2.12.jar /usr/hadoop/hadoop-2.7.7/share/hadoop/yarn/lib/
第三步 配置HIVE元数据至MySQL
1.slave1作为服务器端需要和Mysql通信,所以服务端需要将Mysql的依赖包放在Hive的lib目录下。
mysql-connector-java是MySQL的JDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包。
2.配置文件参考:
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>????</value>
</property>
<!-- 数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>????</value>
</property>
<!-- 数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://????:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!-- MySQL数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>????</value>
</property>
<!-- MySQL数据库密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>????</value>
</property>
</configuration>
hive-site.xml
<configuration>
<!--Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<!--数据库连接driver,即MySQL驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--数据库连接JDBC的URL地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<!--MySOL数据库用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!--MvsOL新提库应码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
</configuration>
# 1.驱动JDBC拷贝至hive安装目录对应lib下(依赖包存放于/usr/package277/)
# 操作环境:slave1
cp /usr/package277/mysql-connector-java-5.1.47-bin.jar /usr/hive/apache-hive-2.3.4-bin/lib/
# 2.配置元数据数据存储位置为/user/hive_remote/warehouse
# 操作环境:slave1
cd /usr/hive/apache-hive-2.3.4-bin/conf
vim hive-site.xml
# 3.配置数据库连接为MySQL
# 操作环境:slave1
# 4.配置连接JDBC的URL地址主机名及默认端口号3306,数据库为hive,如不存在自行创建,ssl连接方式为false
# 操作环境:slave1
# 5.配置数据库连接用户
# 操作环境:slave1
# 6.配置数据库连接密码
# 操作环境:slave1
第四步 配置HIVE客户端
1.master作为客户端,可进入终端进行操作;
2.关闭本地模式;
3.将hive.metastore.uris指向metastore服务器URL;
4.配置文件参考:
<configuration>
<!-- Hive产生的元数据存放位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>????</value>
</property>
<!--- 使用本地服务连接Hive,默认为true-->
<property>
<name>hive.metastore.local</name>
<value>????</value>
</property>
<!-- 连接服务器-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://????</value>
</property>
</configuration>
hive-site.xml
<configuration>
<!--five产生的元数据存放位置-->
<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>
</property>
</configuration>
# 1.配置元数据存储位置为/user/hive_remote/warehouse
# 操作环境:master
cd /usr/hive/apache-hive-2.3.4-bin/conf
vim hive-site.xml
# 2.关闭本地metastore模式
# 操作环境:master
# 3.配置指向metastore服务的主机为slave1,端口为9083
# 操作环境:master
第五步 启动Hive
1.服务器端初始化数据库,并启动metastore服务;
2.客户端开启Hive client,即可根据创建相关数据操作。
# 1.服务器端初始化数据库,启动metastore服务
# 操作环境:slave1
# slave1 节点 启动服务
schematool -dbType mysql -initSchema
hive --service metastore &
# 2.客户端开启进入hive,创建hive数据库
# 操作环境:master
hive
> create database hive;