持续更新中...
软件环境:jdk8, hadoop-3.3.1.tar.gz, apache-hive-3.1.2-bin.tar.gz
硬件环境:3台服务器(192.1.168.1.201, 192.1.168.1.202, 192.1.168.1.203)
1. 服务器准备
1.1. 安装centos7 系统;
给机器安装centos7系统,注意不要安装最小化系统。
1.2.安装java8环境;
- 到 https://www.oracle.com/java/ 下载所需的jdk包,本次下载的是 jdk-8u211-linux-x64.rpm
- 检查机器是否有java环境
java -version
javac -version
rpm -qa | grep java
rpm -qa | grep jdk
- 如果有java环境,先卸载掉,卸载命令示例:
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64
- 进入jdk-8u211-linux-x64.rpm所在目录,安装java
···
rpm -ivh jdk-8u211-linux-x64.rpm
··· - 配置环境变量
输入vi /etc/profile去编辑环境变量,滚动到最底部,按键盘上的o键切换到编辑模式,加入如下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
按键盘上的Esc键退出编辑模式,输入:wq进行保存并退出
source /etc/profile
使配置立即生效
1.3.固定机器IP;
可参考: https://www.cnblogs.com/yhongji/p/9336247.html
将三台机器的ip分别设置为192.1.168.1.201, 192.1.168.1.202, 192.1.168.1.203
1.4.设置hostname;
设置hostname命令:
hostnamectl set-hostname hadoop201
本次设置的hostname对应关系为
192.1.168.1.201 hadoop201
192.1.168.1.202 hadoop201
192.1.168.1.203 hadoop201
1.5.设置hosts;
修改三台机器的 /etc/hosts 内容,输入vi /etc/hosts, 加入如下内容:
192.168.1.201 hadoop201
192.168.1.202 hadoop202
192.168.1.203 hadoop203
1.6.设置三台服务器内部ssh免密登录;
在每台机器上都进行如下操作:
# 生成密钥对, 输入此命令后连敲三次回车
ssh-keygen -t rsa
# 将密钥分发给其他机器
ssh-copy-id hadoop201
ssh-copy-id hadoop202
ssh-copy-id hadoop203
# 使用ssh登录其他机器试试(第一次可能还是需要密码)
ssh hadoop202
机器环境准备完毕,接下来安装hadoop集群。
2. 安装hadoop集群
2.1 下载安装包
- 到hadoop官网(http://hadoop.apache.org/)下载hadoop-3.3.1.tar.gz ,并上传到/home/hadoop/下;
2.压缩包解压
tar -zxvf hadoop-3.3.1.tar.gz
2.2 配置环境变量
输入vi /etc/profile去编辑环境变量,滚动到最底部,删除之前加的内容,加入如下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export HADOOP_HOME=/home/hadoop/hadoop-3.3.1
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin
然后 source /etc/profile,使配置立即生效。
2.3 修改配置文件
进入 /home/hadoop/hadoop-3.3.1/etc/hadoop ,修改5个文件
- 配置core-site.xml
fs.defaultFS
hdfs://hadoop201:8020
hadoop.tmp.dir
/home/hadoop/temp
- 配置hdfs-site.xml
dfs.namenode.http-address
hadoop201:9870
dfs.namenode.secondary.http-address
hadoop202:9868
dfs.namenode.name.dir
/home/hadoop/dfs/name
dfs.datanode.data.dir
/home/hadoop/dfs/data
dfs.replication
3
- 配置yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
hadoop201
- 配置mapred-site.xml
mapreduce.framework.name
yarn
- 配置workers
注意不能有空格、换行
hadoop201
hadoop202
hadoop203
- 配置 hadoop-env.sh
在文件末尾追加如下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
export HDFS_DATANODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
以上操作需要在三台机器上都保持一致!(2.6有便捷脚本)
2.4 初始化NameNode
在201机器上执行如下命令:
hdfs namenode -format
2.5 启动/停止hadoop集群
cd /home/hadoop/hadoop-3.3.1/
# 启动
sbin/start-all.sh
# 停止命令为: sbin/stop-all.sh
到每个机器执行 jps 命令查看集群启动情况,然后打开浏览器访问 http://192.168.1.201:9870/ 验证启动效果:
hadoop集群环境安装完成;
2.6 方便集群环境操作的两个脚本
可以将本地文件同步到其他机器的脚本(ha-rsync.sh):
#!/bin/bash
if [ $# -lt 1 ]
then
echo Not Arguement!
exit!
fi
for host in hadoop201 hadoop202 hadoop203
do
echo ================ $host ================
for file in $@
do
if [ -e $file ]
then
pdir=$(cd -P $(dirname $file); pwd)
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file does not exists!
fi
done
done
可以同时查看其他机器上java进程的脚本(jps-all.sh):
#!/bin/bash
for host in hadoop201 hadoop202 hadoop203
do
echo ================ $host ================
ssh $host jps
done
3. 安装Hive
hive就是一个连接hadoop的客户端,不需要做集群,只在201这台机器上安装一个即可。
3.1 下载安装包
- 到hive官网(https://hive.apache.org/)下载apache-hive-3.1.2-bin.tar.gz ,并上传到/home/hive/下;
2.压缩包解压
tar -zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin/ hive-3.1.2/
3.2 配置环境变量
输入vi /etc/profile去编辑环境变量,滚动到最底部,删除之前加的内容,加入如下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export HADOOP_HOME=/home/hadoop/hadoop-3.3.1
export HIVE_HOME=/home/hive/hive-3.1.2
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin
然后 source /etc/profile,使配置立即生效。
3.3 修改配置文件
进入文件夹 /home/hive/hive-3.1.2/conf
- 参考hive-default.xml.template,新增文件hive-site.xml
javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.1.203:3306/hive_db
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
Root@123
hive.metastore.schema.verification
false
hive.server2.thrift.bind.host
hadoop201
hive.server2.thrift.port
10000
- 参考hive-log4j2.properties.template,新增文件hive-log4j2.properties
cp hive-log4j2.properties.template hive-log4j2.properties
# 然后将 hive-log4j2.properties 中的日志路径改成 /home/hive/logs
3.4 在203机器上安装mysql5.7
略...
3.5 添加mysql的驱动包到hive/lib下
这个jar包可以到本地maven库找,5.*版本的jar都可以连mysql5.7
3.6 初始化hive数据库
用navcat连接203上的mysql数据库,创建表空间hive_db;
schematool -dbType mysql -initSchema
然后看看hive_db下的表有没有自动创建成功。
3.6 配置hadoop
进入 /home/hadoop/hadoop-3.3.1/etc/hadoop/
在core-site.xml中加入如下内容
hadoop.proxyuser.root.hosts
*
hadoop.proxyuser.root.groups
*
重启hadoop,然后执行如下命令,在hdfs中创建hive的工作目录:
hadoop dfs -mkdir -p /user/hive/warehouse
3.7 启动hive,启动hiveserver2
# 直接执行 hive 命令,进入交互式终端
hive
# 启动hiveserver2,可以用jdbc远程连接hive
hive --service hiveserver2
# 以后台进程方式,启动hiveserver2
nohup hive --service hiveserver2 > /home/hive/logs/start.log 2>&1 &
hiveserver2的启动需要一段时间,请耐心等待几分钟。
访问 http://192.168.1.201:10002/ 查看hive启动情况: