Hadoop2.6.5高可用集群搭建

軟件環(huán)境:

linux系統(tǒng): CentOS6.7
Hadoop版本: 2.6.5
zookeeper版本: 3.4.8

</br>

主機(jī)配置:

一共m1, m2, m3這五部機(jī), 每部主機(jī)的用戶名都為centos
192.168.179.201: m1 
192.168.179.202: m2 
192.168.179.203: m3 

m1: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Master, Worker
m2: Zookeeper, Namenode, DataNode, ResourceManager, NodeManager, Worker
m3: Zookeeper, DataNode, NodeManager, Worker

</br>

前期準(zhǔn)備

1.配置主機(jī)IP:
sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
2.配置主機(jī)名:
sudo vi /etc/sysconfig/network
3.配置主機(jī)名和IP的映射關(guān)系:
sudo vi /etc/hosts
4.關(guān)閉防火墻
  1. 臨時(shí)關(guān)閉:
service iptables   stop
service iptables   status
  1. 開機(jī)時(shí)自動(dòng)關(guān)閉:
chkconfig iptables   off
chkconfig iptables   --list

</br>

搭建步驟:

一.安裝配置Zookeeper集群(在m1,m2,m3三部主機(jī)上)
1.解壓
tar  -zxvf zookeeper-3.4.8.tar.gz  -C  /home/hadoop/soft/zookeeper

2.配置環(huán)境變量
vi  /etc/profile
## Zookeeper
export   ZK_HOME=/home/centos/soft/zookeeper
export   CLASSPATH=$CLASSPATH:$ZK_HOME/lib
export   PATH=$PATH:$ZK_HOME/sbin:$ZK_HOME/bin
source  /etc/profile

3.修改配置
  1. 配置zoo.cfg文件
cd  /home/centos/soft/zookeeper/conf/
cp  zoo_sample.cfg  zoo.cfg
vi  zoo.cfg
## 修改dataDir此項(xiàng)配置
dataDir=/home/centos/soft/zookeeper/tmp
## 添加以下三項(xiàng)配置
server.1=m1:2888:3888
server.2=m2:2888:3888
server.3=m3:2888:3888
  1. 創(chuàng)建tmp目錄
mkdir /home/centos/soft/zookeeper/tmp
  1. 編輯myid文件
touch   /home/centos/soft/zookeeper/tmp/myid
echo  1  >   /home/centos/soft/zookeeper/tmp/myid            ## 在m1主機(jī)上myid=1
  1. 配置zookeeper日志存放位置
  2. 編輯zkEnv.sh文件
vi  /home/centos/soft/zookeeper/bin/zkEnv.sh
# 編輯下列該項(xiàng)配置
if   [ "x${ZOO_LOG_DIR}" = "x" ]
 then
        ZOO_LOG_DIR="/home/centos/soft/zookeeper/logs"            ## 修改此項(xiàng)
fi
  1. 創(chuàng)建logs目錄
mkdir /home/centos/soft/zookeeper/logs

5. 拷貝到其他主機(jī)并修改myid
  1. 拷貝到其他主機(jī)
scp -r /home/centos/soft/zookeeper/ m2:/home/centos/soft/
scp -r /home/centos/soft/zookeeper/ m3:/home/centos/soft/
  1. 修改myid
echo 2 > /home/centos/soft/zookeeper/tmp/myid     ## m2主機(jī)
echo 3 > /home/centos/soft/zookeeper/tmp/myid     ## m3主機(jī)

</br>
</br>

二.安裝配置hadoop集群(在m1上操作)

1.解壓
tar  -zxvf  hadoop-2.6.5.tar.gz  -C  /home/centos/soft/hadoop

2.將Hadoop配置進(jìn)環(huán)境變量
vi   /etc/profile
## Java
export JAVA_HOME=/home/centos/soft/jdk
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

## Hadoop
export HADOOP_USER_NAME=centos
export HADOOP_HOME=/home/centos/soft/hadoop
export CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
export PATH=$PATH:$HADOOP_HOME/bin
source /etc/profile

3.修改Hadoop的配置文件 (切記:不可在配置文件中使用變量, 如$HADOOP_HOME, 不然會(huì)死的很慘), hadoop所有的配置文件都在${HADOOP_HOME}/etc/hadoop目錄下, 一共有6個(gè)配置文件需要改**
  1. 編輯$hadoop-env.sh文件
export  JAVA_HOME=/home/centos/soft/jdk
  1. 編輯core-site.xml文件
<configuration>
<property>
?  <name>fs.defaultFS</name>
?  <value>hdfs://ns1</value>
</property>
<property>
?  <name>hadoop.tmp.dir</name>
?  <value>/home/centos/soft/hadoop/tmp</value>
</property>
<property>
?  <name>ha.zookeeper.quorum</name>
?  <value>m1:2181,m2:2181,m3:2181</value>
</property>
<!-- 在Hive的hplsql功能中用到: Hadoop的代理接口與代理名, 其中centos為HDFS的主NameNode的用戶, 根據(jù)實(shí)際情況修改 -->
<property>
      <name>hadoop.proxyuser.centos.hosts</name>
      <value>*</value>
</property>
<property>
?  <name>hadoop.proxyuser.centos.groups</name>
      <value>*</value>
</property>
</configuration>
  1. 編輯hdfs-site.xml文件
<configuration>
<property>
?  <name>dfs.nameservices</name>
?  <value>ns1</value>
</property>
<property>
?  <name>dfs.ha.namenodes.ns1</name>
?  <value>nn1,nn2</value>
</property>
<property>
?  <name>dfs.namenode.rpc-address.ns1.nn1</name>
?  <value>m1:9000</value>
</property>
<property>
?  <name>dfs.namenode.http-address.ns1.nn1</name>
?  <value>m1:50070</value>
</property>
<property>
?  <name>dfs.namenode.rpc-address.ns1.nn2</name>
?  <value>m2:9000</value>
</property>
<property>
?  <name>dfs.namenode.http-address.ns1.nn2</name>
?  <value>m2:50070</value>
</property>
<property>
?  <name>dfs.namenode.shared.edits.dir</name>
?  <value>qjournal://m1:8485;m28485;m3:8485/ns1</value>
</property>
<property>
?  <name>dfs.journalnode.edits.dir</name>
?  <value>/home/centos/soft/hadoop/journal</value>
</property>
<property>
?  <name>dfs.namenode.name.dir</name>
?  <value>/home/centos/soft/hadoop/tmp/dfs/name</value>
</property>
<property>  
?<name>dfs.datanode.data.dir</name>
?<value>/home/centos/soft/hadoop/tmp/dfs/data</value>
</property>
<property>
?  <name>dfs.replication</name>
?  <value>1</value>
</property>
<property>
?  <name>dfs.ha.automatic-failover.enabled</name>
?  <value>true</value>
</property>
<property>
?  <name>dfs.webhdfs.enabled</name>
?  <value>true</value>
</property>
<property>
?  <name>dfs.client.failover.proxy.provider.ns1</name>
?  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
 ? <name>dfs.ha.fencing.methods</name>
?  <value>
???      sshfence
???      shell(/bin/true)
?  </value>
</property>
<property>
?  <name>dfs.ha.fencing.ssh.private-key-files</name>
?  <value>/home/centos/.ssh/id_rsa</value>
</property>
<property>
?  <name>dfs.ha.fencing.ssh.connect-timeout</name>
?  <value>30000</value>
</property>
<property>
?  <name>dfs.permissions</name>
?  <value>false</value>
</property>
<property>
 ?  <name>heartbeat.recheck.interval</name>
?  <value>2000</value>
</property>
<property>
?  <name>dfs.heartbeat.interval</name>
      <value>1</value>
</property>
<property>
      <name>dfs.blockreport.intervalMsec</name>
      <value>3600000</value>
      <description>Determines block reporting interval in milliseconds.</description>
</property>
</configuration>
```

4. 編輯mapred-site.xml文件
```
<configuration>
<property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
</property>
<property>
      <name>mapreduce.jobhistory.address</name>
      <value>0.0.0.0:10020</value>
      <description>MapReduce JobHistory Server IPC host:port</description>
</property>
<property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>0.0.0.0:19888</value>
      <description>MapReduce JobHistory Server Web UI host:port</description>
</property>
<property>
      <name>mapreduce.task.io.sort.mb</name>
      <value>1</value>
</property>
<property>
      <name>yarn.app.mapreduce.am.staging-dir</name>
      <value>/user</value>
</property>
<property>
      <name>mapreduce.jobhistory.intermediate-done-dir</name>
      <value>/user/history/done_intermediate</value>
</property>
<property>
      <name>mapreduce.jobhistory.done-dir</name>
      <value>/user/history</value>
</property>
</configuration>    
```

5. 編輯yarn-site.xml文件
```
<configuration>
<property>
      <name>yarn.resourcemanager.ha.enabled</name>
      <value>true</value>
</property>
<property>
      <name>yarn.resourcemanager.cluster-id</name>
      <value>yrc</value>
</property>
<property>
      <name>yarn.resourcemanager.ha.rm-ids</name>
      <value>rm1,rm2</value>
</property>
<property>
      <name>yarn.resourcemanager.hostname.rm1</name>
      <value>m1</value>
</property>
<property>
      <name>yarn.resourcemanager.hostname.rm2</name>
      <value>m2</value>
</property>
<property>
      <name>yarn.resourcemanager.zk-address</name>
      <value>m1:2181,m2:2181,m3:2181</value>
</property>
<property>
      <name>yarn.nodemanager.aux-services</name>
      <value>mapreduce_shuffle,spark_shuffle</value>
</property>
<property>
      <name>yarn.nodemanager.resource.memory-mb</name>
      <value>2048</value>
</property>
<property>
      <name>yarn.scheduler.maximum-allocation-mb</name>
      <value>4096</value>
</property>
<property>
      <name>yarn.nodemanager.log-dirs</name>
      <value>/home/centos/soft/hadoop/logs</value>
</property>
<property>
      <name>yarn.resourcemanager.scheduler.class</name>
      <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>  
      <name>yarn.nodemanager.aux-services.spark_shuffle.class</name>  
      <value>org.apache.spark.network.yarn.YarnShuffleService</value>  
</property> 
<property>
      <name>yarn.nodemanager.pmem-check-enabled</name>
      <value>false</value>
      <description>是否啟動(dòng)一個(gè)線程檢查每個(gè)任務(wù)正使用的物理內(nèi)存量珠增,如果任務(wù)超出分配值超歌,則直接將其殺掉,默認(rèn)是true</description>
</property>
<property>
      <name>yarn.nodemanager.vmem-check-enabled</name>
      <value>false</value>
      <description>是否啟動(dòng)一個(gè)線程檢查每個(gè)任務(wù)正使用的物理內(nèi)存量蒂教,如果任務(wù)超出分配值巍举,則直接將其殺掉,默認(rèn)是true</description>
</property>
<property>
      <name>spark.shuffle.service.port</name>
      <value>7337</value>
</property>
</configuration>
```

6. 編輯slaves文件, slaves是指定子節(jié)點(diǎn)的位置, 在HDFS上為DataNode的節(jié)點(diǎn)位置, 在YARN上為NodeManager的節(jié)點(diǎn)位置, 以你的實(shí)際情況而定
```
m1
m2
m3
```


****
</br>
</br>
##三.初始化Hadoop
#####1. 配置主機(jī)之間免密碼登陸
1. 在m1上生產(chǎn)一對(duì)密匙
```
ssh-keygen -t rsa
```

2. 將公鑰拷貝到其他節(jié)點(diǎn)悴品,包括本主機(jī)
```
ssh-coyp-id 127.0.0.1
ssh-coyp-id localhost
ssh-coyp-id m1
ssh-coyp-id m2
ssh-coyp-id m3
```

3. 在其他主機(jī)上重復(fù)(1)(2)的操作
                

---
#####2.將配置好的hadoop拷貝到其他節(jié)點(diǎn)
```
scp -r /home/centos/soft/hadoop m2:/home/centos/soft/
scp -r /home/centos/soft/hadoop m3:/home/centos/soft/
```



---
</br>
####注意:嚴(yán)格按照下面的步驟
#####3.啟動(dòng)zookeeper集群(分別在m1禀综、m2简烘、m3上啟動(dòng)zk)
1. 啟動(dòng)zookeeper服務(wù)
```
cd /home/centos/soft/zookeeper-3.4.8/bin/
```
```
./zkServer.sh start
```

2. 查看狀態(tài):一個(gè)leader苔严,兩個(gè)follower
```
./zkServer.sh status
```

    
----
#####4.啟動(dòng)journalnode (分別在m1、m2孤澎、m3主機(jī)上執(zhí)行, 必須在HDFS格式化前執(zhí)行, 不然會(huì)報(bào)錯(cuò))
1. 啟動(dòng)JournalNode服務(wù)
```
cd /home/centos/soft/hadoop
```
```
sbin/hadoop-daemon.sh start journalnode
```

2. 運(yùn)行jps命令檢驗(yàn)届氢,m1、m2覆旭、m3上多了JournalNode進(jìn)程
```
jps
```

---
#####5.格式化HDFS(在m1上執(zhí)行即可)
1. 在m1上執(zhí)行命令:
```
hdfs namenode -format
```

2. 格式化后會(huì)在根據(jù)core-site.xml中的hadoop.tmp.dir配置生成個(gè)文件退子,這里我配置的是/home/centos/soft/hadoop/tmp,然后將m1主機(jī)上的/home/centos/soft/hadoop下的tmp目錄拷貝到m2主機(jī)上的/home/centos/soft/hadoop目錄下
```
scp -r /home/centos/soft/hadoop/tmp/ m2:/home/centos/soft/hadoop/
```


---
#####6.格式化ZK(在m1上執(zhí)行)
```
hdfs zkfc -formatZK
```


---
#####7.啟動(dòng)HDFS(在m1上執(zhí)行)
```
sbin/start-dfs.sh
```


---
#####8.啟動(dòng)YARN(在m1,m2上執(zhí)行)
```
sbin/start-yarn.sh
```


---
##### 至此型将,Hadoop-2.6.5配置完畢!!!



---
</br>
</br>
###四.檢驗(yàn)Hadoop集群搭建成功
######0.在Windows下編輯hosts文件, 配置主機(jī)名與IP的映射(此步驟可跳過)**
```
C:\Windows\System32\drivers\etc\hosts

192.168.179.201     m1
192.168.179.202     m2
192.168.179.203     m3
```


----
######1.可以統(tǒng)計(jì)瀏覽器訪問:
```
  http://m1:50070
      NameNode 'm1:9000' (active)
  http://m2:50070
      NameNode 'm2:9000' (standby)
```

---
######2.驗(yàn)證HDFS HA
1. 首先向hdfs上傳一個(gè)文件
```
hadoop fs -put /etc/profile /profile
```

2. 查看是否已上傳到HDFS上
```
hadoop fs -ls /
```

3. 然后再kill掉active的NameNode
```
kill -9 <pid of NN>
```

4. 通過瀏覽器訪問:http://m2:50070
```
NameNode 'm2:9000' (active)             ## 主機(jī)m2上的NameNode變成了active
```

5. 執(zhí)行命令:
```
hadoop fs -ls /                          ## 看之前在m1上傳的文件是否還存在<畔椤!七兜!
```

6. 手動(dòng)在m1上啟動(dòng)掛掉的NameNode
```
sbin/hadoop-daemon.sh start namenode
```

7. 通過瀏覽器訪問:http://m1:50070
```
NameNode 'm1:9000' (standby)
```



---
######3.驗(yàn)證YARN:
1. 用瀏覽器訪問: http://m1:8088, 查看是否有NodeManager服務(wù)在運(yùn)行
2. 運(yùn)行一下hadoop提供的demo中的WordCount程序, 在linux上執(zhí)行以下命令
```
hadoop jar /home/centos/soft/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount InputParameter OutputParameter
```
在http://m1:8088 上是否有application在運(yùn)行,若有則YARN沒問題
---


</br>
######OK丸凭,大功告成!!惜犀!

</br>
</br>
</br>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末铛碑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子虽界,更是在濱河造成了極大的恐慌汽烦,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件莉御,死亡現(xiàn)場(chǎng)離奇詭異撇吞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)颈将,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門梢夯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人晴圾,你說我怎么就攤上這事颂砸。” “怎么了死姚?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵人乓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我都毒,道長(zhǎng)色罚,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任账劲,我火速辦了婚禮戳护,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瀑焦。我一直安慰自己腌且,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布榛瓮。 她就那樣靜靜地躺著铺董,像睡著了一般。 火紅的嫁衣襯著肌膚如雪禀晓。 梳的紋絲不亂的頭發(fā)上精续,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音粹懒,去河邊找鬼重付。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凫乖,可吹牛的內(nèi)容都是我干的确垫。 我是一名探鬼主播愕把,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼森爽!你這毒婦竟也來了恨豁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤爬迟,失蹤者是張志新(化名)和其女友劉穎橘蜜,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體付呕,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡计福,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了徽职。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片象颖。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖姆钉,靈堂內(nèi)的尸體忽然破棺而出说订,到底是詐尸還是另有隱情,我是刑警寧澤潮瓶,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布陶冷,位于F島的核電站,受9級(jí)特大地震影響毯辅,放射性物質(zhì)發(fā)生泄漏埂伦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一思恐、第九天 我趴在偏房一處隱蔽的房頂上張望沾谜。 院中可真熱鬧,春花似錦胀莹、人聲如沸基跑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涩僻。三九已至缭召,卻和暖如春栈顷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嵌巷。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工萄凤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搪哪。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓靡努,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惑朦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容