大数据技术栈环境搭建-Hadoop集群
文章内容输出来源:拉勾教育大数据开发高薪训练营集群规划HDFS组件:NN+2NN+DNYarn组件:RM+NMhadoop1hadoop2hadoop3hadoop4hadoop5NameNode(NN)√SecondaryNameNode(2NN)√DataNode(DN)√√√√√ResourceManager(RM)√NodeManager(NM)√√√√√前提条件每台机器都具备jdk
文章内容输出来源:拉勾教育大数据开发高薪训练营
集群规划
HDFS组件:NN+2NN+DN Yarn组件:RM+NM |
hadoop1 | hadoop2 | hadoop3 | hadoop4 | hadoop5 |
---|---|---|---|---|---|
NameNode(NN) | √ | ||||
SecondaryNameNode(2NN) | √ | ||||
DataNode(DN) | √ | √ | √ | √ | √ |
ResourceManager(RM) | √ | ||||
NodeManager(NM) | √ | √ | √ | √ | √ |
前提条件
-
每台机器都具备jdk环境,下述操作的jdk路径为
/opt/install/jdk1.8.0_231
-
各机器之间实现了免密登录
提示
- 执行下述命令中,若在自己的机器上提示缺少命令,安装对应命令即可
- Hadoop版本为Apache Hadoop 2.9.2
准备安装文件
本篇需要的文件有:
- hadoop-2.9.2 压缩安装包
百度网盘-提取码:8848
上传hadoop-2.9.2.tar.gz
到hadoop1
的/opt/software
并解压,按照我的习惯,我会解压到/opt/install
tar -zxvf hadoop-2.9.2.tar.gz -C /opt/install/
配置
环境变量
vim /etc/profile
##### Hadoop环境变量 #####
export HADOOP_HOME=/opt/install/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
### 使环境变量生效 ###
source /etc/profile
### 验证安装结果和查看版本 ###
hadoop version
### 若出现如下则表示安装成功 ###
Hadoop 2.9.2
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 826afbeae31ca687bc2f8471dc841b66ed2c6704
Compiled by ajisaka on 2018-11-13T12:42Z
Compiled with protoc 2.5.0
From source with checksum 3a9939967262218aa556c684d107985
This command was run using /opt/install/hadoop-2.9.2/share/hadoop/common/hadoop-common-2.9.2.jar
Hadoop
Hadoop配置 = HDFS配置 + MapReduce配置 + Yarn配置,本小结操作仅在131节点完成,配置完毕后会采用分发的方式复制到其余节点
HDFS集群配置
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
# 将JDK路径明确配置给HDFS(修改hadoop-env.sh)
export JAVA_HOME=/opt/install/jdk1.8.0_231
vim $HADOOP_HOME/etc/hadoop/core-site.xml
# 指定NameNode节点以及数据存储目录(修改core-site.xml),在<configuration>标签中添加
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定Hadoop运行时产生的文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/install/hadoop-2.9.2/data/tmp</value>
</property>
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
# 指定SecondaryNameNode节点(修改hdfs-site.xml),在<configuration>标签中添加
<!-- 指定Hadoop SecondaryNameNode节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:50090</value>
</property>
<!--副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
vim $HADOOP_HOME/etc/hadoop/slaves
# 指定DataNode节点(修改slaves文件,每个节点配置信息占一行)
hadoop1
hadoop2
hadoop3
hadoop4
hadoop5
MapReduce集群配置
vim $HADOOP_HOME/etc/hadoop/mapred-env.sh
# 将JDK路径明确配置给MapReduce(修改mapred-env.sh)
export JAVA_HOME=/opt/install/jdk1.8.0_231
mv $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
# 指定MapReduce计算框架运行Yarn资源调度框架(修改mapred-site.xml),在<configuration>标签中添加
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Yarn集群配置
vim $HADOOP_HOME/etc/hadoop/yarn-env.sh
# 将JDK路径明确配置给Yarn(修改yarn-env.sh)
export JAVA_HOME=/opt/install/jdk1.8.0_231
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
# 指定ResourceManager老大节点所在计算机节点(修改yarn-site.xml),在<configuration>标签中添加
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
# 指定NodeManager节点(会通过slaves文件内容确定)
# 由于在之前配置HDFS时已经配置过了,这里无需再次配置
注意:Hadoop安装目录所属用户和所属用户组信息,默认是501 dialout,而我们操作Hadoop集群的用户使用的是虚拟机的root用户,所以为了避免出现信息混乱,需要修改Hadoop安装目录所属用户和用户组。
chown -R root:root /opt/install/hadoop-2.9.2
分发文件
# 每台机器上都安装rsync
yum install -y rsync
# 在131节点的/usr/local/bin目录下创建文件rsync-script,内容如下
vim /usr/local/bin/rsync-script
#!/bin/bash
#1 获取命令输入参数的个数,如果个数为0,直接退出命令
paramnum=$#
if((paramnum==0)); then
echo no params;
exit;
fi
#2 根据传入参数获取文件名称
p1=$1
file_name=`basename $p1`
echo fname=$file_name
#3 获取输入参数的绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取用户名称
user=`whoami`
#5 循环执行rsync
for((host=1; host<6; host++)); do
echo ------------------- linux$host --------------
rsync -rvl $pdir/$file_name $user@hadoop$host:$pdir
done
# 修改脚本 rsync-script 具有执行权限
chmod 777 /usr/local/bin/rsync-script
# 分发脚本和/etc/profile
rsync-script /usr/local/bin/rsync-script
rsync-script /etc/profile
# 到各台机器上使配置文件生效
source /etc/profile
# 分发Hadoop
rsync-script $HADOOP_HOME
启动集群
单节点启动HDFS
# 所有节点进到hadoop安装路径bin目录下准备执行命令
cd $HADOOP_HOME
# 131节点执行格式化操作。如果集群是第一次启动,需要在Namenode所在节点格式化NameNode,否则不用执行格式化Namenode操作,如果不小心多做了这一步,也不是不可挽回,但不在此赘述
hadoop namenode -format
# 其余节点执行
hadoop-daemon.sh start namenode
# 可以使用jps命令检查是否成功启动
jps
若有再寄主机针对虚拟机配置DNS信息的话,可以请求http://hadoop1:50070/dfshealth.html#tab-overview通过web界面访问HDFS操作界面
之所以能通过hadoop1:50070访问
单节点启动Yarn
# ResourceManager节点,即hadoop1上执行
yarn-daemon.sh start resourcemanager
# 其余节点执行
yarn-daemon.sh start nodemanager
集群启动Hadoop
# HDFS组件群起
start-dfs.sh
# Yarn组件群起
start-yarn.sh
使用jps命令可以看到Hadoop启动结果:所有节点都是HDFS中的DataNode、Yarn中的NodeManager,在此基础上,hadoop1还兼任NameNode和ResourceManager,hadoop2还兼任SecondNameNode,符合我们最初的集群规划。
更多推荐
所有评论(0)