一、集群配置
1. 集群部署规划
| hadoop101 | hadoop102 | hadoop103 | |
| HDFS | NameNode DataNode | DataNode | SecondaryNamaNode DataNode |
| YARN | NodeManager | ResourceManager NodeManager | NodeManager |
2. 配置集群
(1)核心配置文件
配置core-site.xml
yoyo@hadoop101:~/hadoop-2.7.2/etc/hadoop$ vim core-site.xml
在该文件中编写如下配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定HDFS中NameNode的地址 hostname -s看到的名字-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/yoyo/hadoop-2.7.2/tmp</value>
</property>
</configuration>
(2)HDFS配置文件
修改hadoop-env.sh
yoyo@hadoop101:~/hadoop-2.7.2/etc/hadoop$ vim hadoop-env.sh
export JAVA_HOME=/home/yoyo/jdk1.8.0_131
配置hdfs-site.xml
yoyo@hadoop101:~/hadoop-2.7.2/etc/hadoop$ vim hdfs-site.xml
在该文件中编写如下配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 第一个property配不配都行,因为默认就是3-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 表示可以通过hadoop103:50090访问secondary -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>
</property>
</configuration>
配置yarn-site.xml
yoyo@hadoop101:~/hadoop-2.7.2/etc/hadoop$ vim yarn-site.xml
配置如下
<?xml version="1.0"?>
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
(4)MapReduce配置文件
配置mapred-site.xml
yoyo@hadoop101:~/hadoop-2.7.2/etc/hadoop$ vim mapred-site.xml
配置如下
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定MR运行在YARN上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
</configuration>
3.在集群上分发配置好的Hadoop配置文件
yoyo@hadoop101:~/hadoop-2.7.2/etc/hadoop$ bash xsync hadoop-2.7.2/
xsync脚本为
#!/bin/bash
#检测脚本参数是否合法
# $#表示参数的个数
if(($#==0))
then
echo "参数非法,请传入需要分发的文件!"
exit;
fi
#获取绝对路径
filename=`basename $1`
#$1是传递给该shell脚本的第一个参数
dirname=$(cd `dirname $1`; pwd -P)
#-P是因为可能是因为执行bash xsync脚本命令的工作目录是软连接
echo "要传输的文件路径是:$dirname/$filename"
#获取当前用户名
user=`whoami`
#将当前文件循环分发到集群的所有主技
for((host=101;host<=103;host++))
do
echo "-------hadoop$host---------"
rsync -rvlt $dirname/$filename $user@hadoop$host:$dirname
done
二、群起集群
1. 配置slaves(在一个主机上配置就行)
yoyo@hadoop101:~/hadoop-2.7.2/etc/hadoop$ vim slaves
编辑如下:
hadoop101
hadoop102
hadoop103
2. 启动集群
1)如果集群是第一次启动,需要格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除tmp和log数据)
xcall rm -rf /home/yoyo/hadoop-2.7.2/tmp/
xcall rm -rf /home/yoyo/hadoop-2.7.2/logs/
xcall脚本如下
#!/bin/bash
#检测脚本参数是否合法
# $#表示参数的个数
if(($#==0))
then
echo "参数非法,请传入需要分发的命令!"
exit;
fi
echo "要执行的命令是:$@"
#获取当前用户名
user=`whoami`
#将当前文件循环分发到集群的所有主技
for((host=101;host<=103;host++))
do
echo "-------hadoop$host---------"
ssh hadoop$host $@
done

格式化namenode
yoyo@hadoop101:~/hadoop-2.7.2/etc/hadoop$ hdfs namenode -format
2)启动集群
yoyo@hadoop102:~/hadoop-2.7.2$ start-all.sh
注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。https://www.iteye.com/blog/qi20088-2248386



本文详细介绍Hadoop集群的部署规划、配置流程及启动步骤,包括核心配置文件、HDFS、YARN、MapReduce等关键组件的配置,以及通过脚本实现配置文件分发和集群初始化。
715

被折叠的 条评论
为什么被折叠?



