Hadoop完全分布式集群部署
1 集群规划
以四台机器为例,linux用的是CentOS 6.5 x64的机器对集群部署进行规划,所有机器的用户名及密码均为hadoop。
主机名 | 安装软件 | JPS | ||
hdfs | yarn | HistoryServer | ||
cdh.hadoo.com | Jdk/hadoop | NameNode | RecourceManager | JobHistoryServer |
slave1.hadoop.com | Jdk/hadoop | DataNode SecondaryNamenode | Nodemanager |
|
slave2.hadoop.com | Jdk/hadoop | DataNode | Nodemanager |
|
slave3.hadoop.com | Jdk/hadoop | DataNode | Nodemanager |
|
为了编写方便,以下分别按照顺序PC1、PC2、PC3、PC4命名。
2 准备环境
Linux环境准备工作,均在root用户下进行。
2.1 环境配置(root)
1、环境准备
安装环境准备 | ||
序号 | 操作步骤 | 操作内容 |
1 | 修改主机名 [不能数字开头,特殊字符] | # vi /etc/sysconfig/network $ cat /etc/sysconfig/network |
2 | 主机映射 | # vi /etc/hosts ip地址 主机名 windows下主机映射 C:/windows/system32/driver/hosts 四台机器都需要映射 |
3 | 配置网络静态化 | $ cat /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes BOOTPROTO=static |
4 | 关闭Linux 防火墙 | # service iptables status ##查看防火墙状态 iptables: Firewall is not running. # service iptables stop ##关闭防火墙 |
5 | 关闭开机启动防火墙 | # chkconfig iptables off ##不随机启动 |
6 | 关闭安全子系统 | # vi /etc/sysconfig/selinux SELINUX=disabled |
7 | 普通用户sudo命令配置 | 切换root用户 # chmod u+w /etc/sudoers # vim /etc/sudoers 添加 hadoop ALL=(ALL) ALL # chmod u-w /etc/sudoers |
8 | 配置SSH免密钥登录 | $ ssh-keygen -t rsa * 回车,生产当前主机的公钥和私钥 id_rsa -》私钥 id_rsa.pub -》公钥 $ ssh-copy-id cdh.hadoop.com |
分别在四台机器上配置好上表所列的配置信息并验证配置信息是否成功。
2.2、配置主机映射
在四台机器上分别配置主机映射。
# vi /etc/hosts
192.168.126.220 cdh.hadoop.com
192.168.126.231 slave1.hadoop.com
192.168.126.232 slave2.hadoop.com
192.168.126.233 slave3.hadoop.com
2.3 配置NTP服务(root)
把cdh.Hadoop.com作为整个集群的时间同步服务器,集群中所有其他服务器都来这台服务器cdh.Hadoop.com同步时间。
1、检查每台服务器所在的时区
$date -R
Thu, 23 Mar 2017 11:13:57 +0800
如果不是+800,如要通过如下命令调整
# rm -rf /etc/localtime ---如果时区不是+0800
# ln -s/usr/share/zoneinfo/Asia/Shanghai /etc/localtime
2、安装ntp服务
# rpm -qa | grep ntp --查看ntp软件包是否已安装
ntp-4.2.6p5-1.el6.centos.x86_64
ntpdate-4.2.6p5-1.el6.centos.x86_64
# yum -y install ntp --如果没有那就需要安装ntp
3、修改ntp的配置文件(cdh.hadoop.com)
# vi /etc/ntp.conf
去掉第18行的# 修改成自己的网段
restrict 192.168.7.0 mask255.255.255.0 nomodify notrap
注释掉以下几行(22行)
#server0.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
CentsOS6.4去掉注释第35 36行
CentsOS6.5去手动添加以下内容
server127.127.1.0 #local clock
fudge127.127.1.0 stratum 10
4、启动ntp服务(默认式开始)cdh.hadoop.com root用户操作
# service ntpd start
# chkconfig ntopd on
5、同步服务器的时间(cdh.hadoop.com)
# ntpdate cn.pool.ntp.org -->操作这一步时关闭ntp服务
23 Mar 11:36:56ntpdate[26856]: step time server 173.255.246.13 offset -12.240613 sec
6、如果另外三台主机的ntp的进程开启,那么需要关闭
# service ntpd stop
# chkconfig ntpd off
7、第2、3、4台向第一台同步时间
# ntpdate slave1.hadoop.com
16 Feb 17:43:27 ntpdate[2554]: adjust timeserver 192.168.7.9 offset -0.001412 sec
#ntpdate slave2.hadoop.com
#ntpdate slave3.hadoop.com
8.制定周期性时间同步计划任务(PC2、PC3、PC4定时向PC1手动同步时间)
在第2、3、4台服务器上,每10分钟同步一次时间
# crontab -e
*/10* * * * /usr/sbin/ntpdate cdh.hadoop.com
[注意]:如果确实无法向第一台同步时间,请在交互窗口(可以同时设置4台时间)执行手动设置时间
# date -s "11:48:00 2017/3/23"
2.3 SSH免密配置
四台机器上分别配置SSH免密登录。
主机名 | SSH免密分发 |
cdh.hadoop.com | $ ssh-copy-id slave1.hadoo.com $ ssh-copy-id slave2.hadoo.com $ ssh-copy-id slave3.hadoo.com |
slave1.hadoo.com | $ ssh-copy-id cdh.hadoo.com $ ssh-copy-id slave2.hadoo.com $ ssh-copy-id slave3.hadoo.com |
slave2.hadoo.com | $ ssh-copy-id cdh.hadoo.com $ ssh-copy-id slave1.hadoo.com $ ssh-copy-id slave3.hadoo.com |
slave2.hadoo.com | $ ssh-copy-id cdh.hadoo.com $ ssh-copy-id slave1.hadoo.com $ ssh-copy-id slave2.hadoo.com |
2.4 安装jdk
使用普通用户(不是root用户), 在四台机器上分别安装jdk环境。
1、卸载openJDK
# rpm -qa | grep jdk
# rpm -e --nodeps XXX.rpm //不验证依赖进行卸载
2、安装jdk
$ tar -zxf jdk-7u67-linux-x64.tar.gz -C /opt/modules/
3、配置环境变量
$sudo vim /etc/profile
# JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export PATH=$PATH:$JAVA_HOME/bin
4、环境变量pei配置生效
$ source /etc/profile
3 配置hadoop
在PC1主机上安装hadoop和配置hadoop,然后使用scp分别分发hadoop到另外的三个主机上。
3.1 安装hadoop
1、安装
$tar -zxf hadoop-2.5.0.tar.gz -C /opt/modules/cdh
2、删除doc
删除${HADOOP_HOME}/share/doc
$ rm -rf doc/
3.2 文件配置
1、配置java环境
在${HADOOP_HOME}/etc/hadoop目录下,在文件hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中配置Java环境。
exportJAVA_HOME=/opt/modules/jdk1.7.0_67
2、集群配置
在${HADOOP_HOME}/etc/hadoop目录下,分别配置一下文件。
2、core-site.xml配置
<!--指定第一台作为NameNode-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://cdh.hadoop.com:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/cdh/hadoop/data</value>
</property>
3、hdfs-site.xml配置
<!--分布式副本数设置为3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- secondarynamenode主机名 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1.hadoop.com</value>
</property>
<!-- namenode的web访问主机名:端口号 -->
<property>
<name>dfs.namenode.http-address</name>
<value>cdh.hadoop.com:50070</value>
</property>
<!-- 关闭权限检查用户或用户组 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
4、mapred-site.xml配置
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>cdh.hadoop.com:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>cdh.hadoop.com:19888</value>
</property>
5、yarn-site.xml配置
<property>
<name>yarn.resourcemanager.hostname</name>
<value>cdh.hadoop.com</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>
<!--日志保存时间 默认保存 3-7天--->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.web-proxy.address</name>
<value>cdh.hadoop.com:8088</value>
</property>
6、Slaves配置
salve1.hadoopc.com
salve2.hadoopc.com
salve3.hadoopc.com
【注意事项】
1.slaves中配置集群中所有的主机名
2.所有节点上的配置文件内容都是一样的(联盟模式例外)
3.要按照集群规划配置所属进程
4 配置分发
4.1 配置分发操作
在(PC1)分发hadoop(已经配置好的)目录到其他三台(PC2、PC3、PC4)服务器上。
模版:scp -r PC1的hadoop目录(带路径) PC2:/要复制到的目录
$ scp -r /opt/modules/cdh/hadoop salve1.hadoop.com:/opt/modules/cdh
$ scp -r /opt/modules/cdh/hadoopsalve2.hadoop.com:/opt/modules/cdh
$ scp -r /opt/modules/cdh/hadoopsalve3.hadoop.com:/opt/modules/cdh
5 启动集群
5.1格式化Namenode
在PC1上的${HADOOP_HOME}/bin
$ bin/hdfs namenode -format
【注意】
1.先将PC1的hadoop配置目录分发到PC2、PC3、PC4上
2.保证4台上的配置内容一模一样
3.先确保将4台之前残留的data 和 logs删除掉
4.最后格式化
5.2 启动进程
在PC1上使用如下命令启动HDFS
$sbin/start-dfs.sh
在PC1上使用如下命令启动YARN
$sbin/start-yarn.sh
5.3停止进程
在PC1上使用如下命令启动HDFS
$sbin/stop-dfs.sh
在PC1上使用如下命令启动YARN
$sbin/stop-yarn.sh
【注意】
修改任何配置文件,请先停止所有进程,然后重新启动