完全分布式安装
完全分布式是基于上一篇伪分布式环境安装的基础上搭建的。完全分布式与伪分布式区别在于,将节点数增多,datanode分布在其他服务器上。(参考伪分布式环境搭建博客:https://blog.youkuaiyun.com/Suoluo114/article/details/83185815)
一、角色分配
组件 linux01 linux02 linux03
HDFS namenode datanode datanode
Yarn resourcemanger
Yarn nodemanager nodemanager nodemanager
history historyserver
二、环境准备
此处直接用搭建的伪分布式环境进行主机克隆出2台虚拟机,根据我的上一篇博客,只需注意在主机映射时把每台主机都要进行映射,因为3台之间要进行互相通信。(虚拟机搭建参考博客:https://blog.youkuaiyun.com/Suoluo114/article/details/84378229)
2.1系统和软件【3台】
CentOS 6.5 hadoop 2.5.0 jdk1.70—67
2.2 配置IP和DNS(root)
配置静态IP
DNS
//检查主机映射
$ cat /etc/hosts
//检查主机名
$cat /etc/sysconfig/network
//检查IP和DNS
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
2.3关闭防火墙 (3台) (root)
# service iptables stop
# chkconfig iptables off
关闭Linux安全子系统
# vi /etc/sysconfig/selinux
2.4创建相同普通用户名和密码 【3台】
# useradd hadoop
# echo 123456 | passwd --stdin hadoop
2.5配置主机映射 【三台都需要需要添加】
# vi /etc/hosts
192.168.7.9 hadoop.senior01
192.168.7.10 hadoop.senior02
192.168.7.11 hadoop.senior03
2.6卸载自带的jdk
# rpm -qa | grep jdk
# rpm -e --nodeps tzdata-java-2012j-1.el6.noarch
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
三、配置NTP服务,此为同步时区设置,可选择不进行设置。
*.把Linux01作为整个集群的时间同步服务器
*.集群中所有其他服务器都来这台服务器Linux01同步时间
1.检查每台服务器所在的时区
$ date -R --检查当前系统时区
Thu, 16 Feb 2017 17:06:18 +0800
# rm -rf /etc/localtime ---如果时区不是+0800
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2.安装ntp服务
# rpm -qa | grep ntp --查看ntp软件包是否已安装
#yum -y install ntp --如果没有那就需要安装ntp
3.修改ntp的配置文件(Linux01)
# vi /etc/ntp.conf
*去掉下面这行下面的#,并把网段修改成自己的网段
restrict 192.168.7.0 mask 255.255.255.0 nomodify notrap
*注释掉一下几行
#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 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10
4.启动ntp服务(默认是开启)Linux01
# service ntpd start
# chkconfig ntpd on
5.同步服务器的时间(Linux01)
# ntpdate cn.pool.ntp.org -->操作这一步时关闭ntp服务
16 Feb 17:14:40 ntpdate[26564]: step time server 188.39.37.91 offset -12.669996 sec
6.如果另外两台的ntp的进程开启,那么需要关闭
# service ntpd stop
# chkconfig ntpd off
7.第2、3台向第一台同步时间
# ntpdate hadoop.senior01
16 Feb 17:43:27 ntpdate[2554]: adjust time server 192.168.7.9 offset -0.001412 sec
8.制定周期性时间同步计划任务(第2、3台-Linux02 、Linux03)
## 每10分钟同步一次服务器时间
*/10 * * * * /usr/sbin/ntpdate hadoop.senior01
# date -s "19:05:56 2017/2/16"
四、配置免密钥登陆
使用ssh 登陆的时候不需要用户名和密码
$ ssh-keygen
* 回车,产生的当前主机的公钥和私钥
//分发密钥(要向3台都发送)
$ ssh-copy-id hadoop.senior01
$ ssh-copy-id hadoop.senior02
$ ssh-copy-id hadoop.senior03
(Linux01~03 )
$ ssh-keygen
$ ssh-copy-id hadoop.senior01
$ ssh-copy-id hadoop.senior02
$ ssh-copy-id hadoop.senior03
分发完成会在用户主目录下的.ssh目录生成以下文件:
authorized_keys id_rsa id_rsa.pub known_hosts
如果配置错误可以先删除.ssh目录,重新做一遍
五,修改hadoop配置文件,完成分布式配置
若是直接搭建的hadoop完全分布式环境,在解压了hadoop文件之后需修改以下配置文件。在hadoop-2.7.3/etc/hadoop目录下修改。
若在我上一伪分布式基础上则只需修改hdfs-site.xml文件中副本数改为3,以及在slaves文件中添加各datanode节点主机名用来指定datanode主机。修改这两处则配置文件修改完成。
====core-site.xml====
<!--指定第一台做namenode-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop.senior01:8020</value>//此为主机名:8020
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0/data</value>//此为工作目录若解压文件中没有则需创建。
</property>
=========slaves=====
主机名//写每一个datanode节点主机名
=========hdfs-site.xml=====
<!-- 分布式副本数设置为3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- secondarynamenode主机名 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop.senior02:50090</value>
</property>
<!-- namenode的web访问主机名:端口号 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop.senior01:50070</value>
</property>
<!-- 关闭权限检查用户或用户组 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
============yarn-site.xml=======
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop.senior02</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
</property>
=========================mapred-site.xml============
$ cp mapred-site.xml.template mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop.senior01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop.senior01:19888</value>
</property>
六,删除工作空间,进行格式化,启动hadoop服务
在各个主机上删除工作空间
#cd /opt/modules/hadoop-2.7.3
#rm -rf data/tmp
在namenode主机上进行格式化
#bin/hdfs namenode -format
提示成功则格式化成功,若有错误没提示成功则配置文件有错。
在namenode主机上启动服务
#sbin/start-all.sh
启动服务成功会提示在某节点上启动某服务。
用#jps查看进程,在datanode节点主机上会有datanode 和 nodemanager进程
在namenode节点主机上会有namenode,resourcemanager,secondarynamenode进程。
至此完全分布式环境搭建完毕并成功启动。