完全分布式的安装
一、集群规划
组件 |
PC1 |
PC2 |
PC3 |
HDFS |
Namenode |
SecondaryNamenode |
|
|
Datanode |
Datanode |
Datanode |
Yarn |
|
|
RecourceManager |
|
Nodemanager |
Nodemanager |
Nodemanager |
Histrory |
HistroryServer |
|
|
二、基本环境准备
CentOS 6.5 hadoop 2.5.0(仅需在1台有即可) jdk1.70—67
这些我们可以直接使用我上一篇文章中的克隆技术,直接克隆得到。
配置静态IP
DNS
//检查主机名
$cat /etc/sysconfig/network
//检查IP和DNS
$cat /etc/sysconfig/network-scripts/ifcfg-eth0
//检查主机映射
$cat /etc/hosts ->Linux
C:\Windows\System32\drivers\etc\hosts ->Windows
#service iptables stop
#chkconfig iptables off
检查:
$sudo service iptables status
会有提示iptables: Firewall is not running.
$sudo chkconfig --list | grep iptables
0:off 1:off 2:off 3:off 4:off 5:off 6:off
关闭Linux安全子系统
#vi /etc/sysconfig/selinux
为了提交性能,可以考虑将启动方式调整为不带桌面
sudovim /etc/inittab
id:3:initdefault:
添加用户:# useradd hadoop
添加密码:# echo 123456 | passwd --stdin hadoop
#vi /etc/hosts
192.168.7.9hadoop.senior01
192.168.7.10hadoop.senior02
192.168.7.11hadoop.senior03
#rpm -qa | grep jdk
# rpm -e --nodepstzdata-java-2012j-1.el6.noarch
# rpm -e --nodepsjava-1.6.0-openjdk-1.6.0.0-1.50.1.11.5.el6_3.x86_64
# rpm -e --nodepsjava-1.7.0-openjdk-1.7.0.9-2.3.4.1.el6_3.x86_64
配置Java环境变量
#vi /etc/profile
#JAVA_HOME
exportJAVA_HOME=/opt/modules/jdk1.7.0_67
exportPATH=$PATH:$JAVA_HOME/bin
生效配置
source/etc/profile
检查Java环境变量
java-version
显示:java version "1.7.0_67"
Java(TM)SE Runtime Environment (build 1.7.0_67-b01)
三、配置NTP服务
*.把PC1作为整个集群的时间同步服务器
*.集群中所有其他服务器都来这台服务器PC1同步时间
$ date-R
显示:Tue, 29 Aug 2017 20:16:41 +0800
如果不是+0800,如要通过如下命令调整
# rm -rf /etc/localtime ---先删除
# ln -s/usr/share/zoneinfo/Asia/Shanghai /etc/localtime --添加上海地区
Ntp一般都是在centos中安装好的。
# rpm -qa | grep ntp --查看ntp软件包是否已安装
如果已经安装ntp软件包会显示如下:
ntp-4.2.6p5-1.el6.centos.x86_64
ntpdate-4.2.6p5-1.el6.centos.x86_64
如果没有那就需要安装ntp:
# yum -y install ntp --如果没有那就需要安装ntp
# vi /etc/ntp.conf
在命令模式下输入“: set nu”来显示行数
去掉第18行中的的“#”字符,并修改成自己的网段
比如:192.168.224.0,其他则不需要修改
restrict 192.168.224.0 mask 255.255.255.0nomodify notrap
注释掉以下几行(从22行开始)
#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
如果是CentsOS6.4 去掉注释第35 36行
如果是CentsOS6.5 去手动添加以下内容:
server127.127.1.0 #local clock
fudge127.127.1.0 stratum 10
# ntpdatecn.pool.ntp.org -->操作这一步时关闭ntp服务
23 Mar 11:36:56ntpdate[26856]: step time server 173.255.246.13 offset -12.240613 sec
# service ntpd start
# chkconfig ntopd on
$ sudo chkconfig --list | grep ntpd
此时应该显示:
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off
此时如果手动同步时间:
$ sudo ntpdate 202.120.2.101
会显示: 9 Jun 15:27:49 ntpdate[2689]: the NTPsocket is in use, exiting //ntpd一旦开启就不能手动同步时间
关闭:# service ntpd stop
或者:# chkconfig ntpd off
输入:# ntpdate hadoop.senior01
显示成功:16 Feb 17:43:27 ntpdate[2554]: adjust time server192.168.7.9 offset -0.001412 sec
在PC2 PC3每10分钟同步一次时间
# crontab -e
*/10 * * * */usr/bin/sudo /usr/sbin/ntpdate 主机名
[注意]:如果确实无法向第一台同步时间,请在交互窗口(可以同时设置3台时间)执行手动设置时间
# date -s"11:48:00 2017/3/23"
$ sudodate -s '2017/08/29 15:34:30'
使用ssh登录的时候,我们在第一台主机中登录到第二台或者第三台是不需要输入用户名密码的,同理,我们在第二台主机中登录到第一台或者第三台也是不需要输入用户名密码的。
$ssh-keygen
* 四次回车,生产当前主机的公钥和私钥并显示将密匙存放在:
(/home/hadoop/.ssh/id_rsa);
//分发密钥(要向3台都发送)
$ssh-copy-id hadoop.senior01
$ssh-copy-id hadoop.senior02
$ssh-copy-id hadoop.senior03
(PC1~PC3)
$ssh-keygen
$ssh-copy-id hadoop.senior01
$ssh-copy-id hadoop.senior02
$ssh-copy-id hadoop.senior03
分发完成之后会在用户主目录下.ssh目录生成以下文件
$ ls .ssh/
authorized_keys id_rsa id_rsa.pub known_hosts
测试失败,需要先删除.ssh目录,重做一遍
$ rm -r ~/.ssh
$ tar -zxfhadoop-2.5.0.tar.gz -C /opt/modules/
$ rm -rf doc/
在hadoop-env.sh mapred-env.sh yarn-env.sh中配置
export JAVA_HOME=/opt/modules/jdk1.7.0_67
hadoop.senior01
hadoop.senior02
hadoop.senior03
.=======core-site.xml===
=============hdfs-site.xml==========
=================mapred-site.xml=======
================yarn-site.xml======
===============================
hadoop.senior01
hadoop.senior02
hadoop.senior03
【注意事项】:
1.slaves中配置集群中所有的主机名
2.所有节点上的配置文件内容都是一样的(联盟模式例外)
3.要按照集群规划配置所属进程
scp -r PC1的hadoop目录(带路径) PC2:/要复制到的目录
$ scp -r /opt/modules/hadoop-2.5.0/hadoop.senior02:/opt/modules/
$ scp -r/opt/modules/hadoop-2.5.0/ hadoop.senior03:/opt/modules/
$ scp -r etc/hadoop bigdata.Linux3:/opt/modules/hadoop-2.5.0/etc/
$ scp -r etc/hadoop bigdata.Linux3:/opt/modules/hadoop-2.5.0/etc/
在PC1上的${HADOOP_HOME}/bin
$ bin/hdfsnamendoe -format
【注意】
1.先将PC1的hadoop配置目录分发到PC2和PC3
2.保证3台上的配置内容一模一样
3.先确保将3台之前残留的data 和 logs删除掉
4.最后格式化
在PC1上使用如下命令启动HDFS
$ sbin/start-dfs.sh
在PC3上使用如下命令启动YARN
$ sbin/start-yarn.sh
停止进程
在PC1上使用如下命令停止HDFS
$ sbin/stop-dfs.sh
在PC3上使用如下命令停止YARN
$ sbin/stop-yarn.sh
【注意】
修改任何配置文件,请先停止所有进程,然后重新启动
八、检查启动是否正常
3台主机上jps查看进程,参考之前的集群规划
分别显示:
PC1:
28626 DataNode
28883 NodeManager
28989 Jps
28531 NameNode
PC2:
7528 DataNode
7826 Jps
7717 NodeManager
7583 SecondaryNameNode
PC3
7622 NodeManager
7922 Jps
7527 ResourceManager
7405 DataNode