前提条件:客户机已安装并配置好环境变量
如果需要配置客户机,请查看Hadoop完全分布式集群之CentOS配置
0. 集群规划
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
HDFS | NameNode / DataNode | DataNode | SecondaryNameNode / DataNode |
YARN | NodeManager | ResourceManager / NodeManager | NodeManager |
1. 配置ssh
cd ~/.ssh/
进入.ssh目录下
ssh-keygen -t rsa
生产密钥对,按三次回车
ssh-copy-id hadoop101 / hadoop102 / hadoop103
将公钥拷贝到三台服务器上
2. 编写集群分发脚本
vim ~/bin/xsync
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if ((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for host in hadoop101 hadoop102 hadoop103
do
echo ------------------- $host --------------
rsync -av $pdir/$fname $user@$host:$pdir
done
chmod 777 xsync
为分发脚本添加权限
3. 配置集群
3.1 核心配置 core-site.xml
- 指定HDFS的NameNode地址
- 指定Hadoop运行时产生文件的目录
vim core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
3.2 HDFS配置
hadoop-env.sh
- 配置hadoop-env.sh中的jdk环境变量
hdfs-site.xml
- 配置HDFS的副本数
- 配置HDFS的SecondaryNameNode
vim hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
vim hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>
</property>
3.3 YARN配置
yarn-env.sh
- 在sh中配置jdk环境变量
yarn-site.xml
- 配置Reducer获取数据的方式
- 指定YARN的ResourceManager的地址
vim yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144
vim yarn-site.xml
<!-- 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>
3.4 MR配置
mapred-env.sh
- 配置jdk 的环境变量
mapred-site.xml
- 指定MR运行在Yarn上
vim mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_144`
vim mapred-sire.xml
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
3.5 JobHistory配置
vim mapred-site.xml
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop101:19888</value>
</property>
3.6 配置日志的聚集
注意:开启日志聚集功能,如果已启动RM/NM, 需要重新启动NodeManager 、ResourceManager和HistoryManager。
vim yarn-site.xml
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
4. 配置集群slaves
vim hadoop-2.7.2/etc/hadoop/slaves
hadoop101
hadoop102
hadoop103
5. 集群分发
xsync hadoop-2.7.2/
6. 集群群起
- 在hadoop101 :如果时第一次启动,则需要初始化集群;不是请跳过
bin/hdfs namenode -format
- 在hadoop101 启动HDFS
sbin/start-dfs.sh
- 在hadoop101 启动JobHistory
sbin/mr-jobhistory-daemon.sh start historyserver
- 在hadoop102 启动YARN
sbin/start-yarn.sh
- Web查看
http://hadoop101:50070
查看HDFS
http://hadoop102:8088
查看YARN
http://hadoop101:19888
查看历史服务器
7. 配置时间同步
切换到root用户下操作 root@hadoop101
vim /etc/ntp.conf
a)修改1(授权192.168.1.0-192.168.1.255网段上的所有机器可以从这台机器上查询和同步时间)
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
b)修改2(集群在局域网中,不使用其他互联网上的时间)
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
c)添加3(当该节点丢失网络连接,依然可以采用本地时间作为时间服务器为集群中的其他节点提供时间同步)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
末行+++
SYNC_HWCLOCK=yes
重启ntpd服务
service ntpd restart
设置ntpd服务开机启动
chkconfig ntpd on
同步时间服务器时间
crontab -e
*/10 * * * * /usr/sbin/ntpdate -u hadoop101