完全分布式安装:
1.集群规划
a.服务分配
组件 Linux.one Linux.two Linux.three
HDFS NameNode Sencondarynamenode
DataNode DataNode DataNode
--------------------------------------------------------------------------
YARN ResourceManager
NodeManager NodeManager NodeManager
--------------------------------------------------------------------------
MapReduce JobHistoryServer
2.基本环境准备
A.三台装有CenterOs的PC
B.将修改成静态IP (如果是克隆的虚拟机需要修改Mac地址 否则三台虚拟机无法ping通)
#vi /etc/sysconfig/network-script/ifcfg-eth0
C.修改Hostname
#vi /etc/sysconfig/network
D.设置主机映射
# vi /etc/hosts
E.关闭防火墙
# service iptables stop
# chkconfig iptables off
F.关闭安全子系统
# vi /etc/sysconfig/selinux
G.卸载Linux自带的Jdk (minimal安装是没有安装的 所以不用卸载)
查看系统自带的jdk rpm -qa | grep java
# 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
H.安装Jdk
a.编辑 /etc/profile 文件 添加
export JAVA_HOME=/opt/modules/jdk1.7.0_67
export $PATH:$JAVA_HOME/bin
b.重新加载配置
source /etc/profile
3.配置NTP服务
*将Linux.one 作为整个集群的时间同步服务器
A.检查NTP服务是否安装 (minimal安装是没有安装的)
rpm -qa | grep ntp
B.安装ntp服务
yum -y install ntp
C.修改NTP的配置文件 (修改Linux.one)
# vi /etc/ntp.conf
a.去掉下面这行下面的#,并把网段修改成自己的网段
restrict 192.168.7.0 mask 255.255.255.0 nomodify notrap
b.注释掉一下几行 (修改Linux.one)
#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.把下面前面两行的#号去掉,如果没有,需要手动去添加 (修改Linux.one)
server 127.127.1.0 #local clock
fudge 127.127.1.0 stratum 10
d.启动ntp服务(默认是开启)Linux01 (修改Linux.one)
# service ntpd start
# chkconfig ntpd on
e.同步服务器的时间(Linux01) (修改Linux.one)
# ntpdate cn.pool.ntp.org -->操作这一步时关闭ntp服务
16 Feb 17:14:40 ntpdate[26564]: step time server 188.39.37.91 offset -12.669996 sec
f.如果另外两台的ntp的进程开启,那么需要关闭
# service ntpd stop
# chkconfig ntpd off
g.第2、3台向第一台同步时间
# ntpdate hadoop.senior01
16 Feb 17:43:27 ntpdate[2554]: adjust time server 192.168.7.9 offset -0.001412 sec
h.制定周期性时间同步计划任务(第2、3台-Linux02 、Linux03)
## 每10分钟同步一次服务器时间
*/10 * * * * /usr/sbin/ntpdate hadoop.senior01
d.若以上失败则三台全部执行以下命令(时间以当前时间为准)
# date -s "19:05:56 2017/2/16"
4.配置SSH免秘钥登陆
A.检查Linux上是否安装openssh (minimal安装是没有自带的openssh服务的)
rpm -qa | grep openssh
B.安装openssh
#yum -y install openssh-clients
C.生成秘钥 (注意生成秘钥的用户)
ssh-keygen
D.将秘钥发送给其他服务器 (每台服务器都要执行此操作已确保三台服务器能够随意切换)
ssh-copy-id hadoop.two
E.测试免秘钥登陆是否成功 (互相登陆是否成功)
ssh hadoop.one
F.分发完成会在用户主目录下的.ssh目录生成以下文件:
authorized_keys id_rsa id_rsa.pub known_hosts
如果配置错误可以先删除.ssh目录,重新做一遍
5.安装Hadoop
A.从hadoop.apache.org 官网下载 hadoop 使用FileZilla上传到服务器进行解压
$tar -zxf hadoop.tar.gz
B.配置hadoop的java环境支持, ${HADOOP_HOME}/etc/hadoop目录下
hadoop-env.sh
mapred-env.sh
yarn-env.sh
在这3个文件中都配置
export JAVA_HOME=/opt/modules/jdk1.7.0_67
C. 修改配置文件
====core-site.xml====
<!--指定第一台做namenode-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop.one:8020</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-2.5.0/data</value>
</property>
=========hdfs-site.xml=====
<!-- 分布式副本数设置为3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- secondarynamenode主机名 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop.two:50090</value>
</property>
<!-- namenode的web访问主机名:端口号 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop.one:50070</value>
</property>
<!-- 关闭权限检查用户或用户组 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
============yarn-site.xml=======
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop.three</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>
D.将配置好的文件夹发送给其他服务器
scp /opt/modules/app/hadoop-2.5.0 hadoop.two:/opt/modules/app/
E.格式化namenode
/opt/modules/app/hadoop/bin/hdfs namenode -format
F.启动服务
在配置了namenode的服务器上启动namenode服务
/opt/modules/app/hadoop-2.5.0/sbin/start-dfs.sh
在配置了ResourceManager的服务器上启动ResourceManager
/opt/modules/app/hadoop-2.5.0/sbin/start-yarn.sh