徹底分佈式安裝:
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.第二、3臺向第一臺同步時間
# ntpdate hadoop.senior01
16 Feb 17:43:27 ntpdate[2554]: adjust time server 192.168.7.9 offset -0.001412 sec
h.制定週期性時間同步計劃任務(第二、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
java