1. 程式人生 > >Hadoop叢集及高可用

Hadoop叢集及高可用

原理待補充



實驗配置
五臺虛擬機器server1-5都是rhel6.5版本 所有虛擬機器建立hadoop使用者 uid gid一致 密碼相同 以server1為例

獲取安裝包hadoop-2.7.3.tar.gz  jdk-7u79-linux-x64.tar.gz解壓安裝

下載解壓相關軟體

修改環境變數,使hadoop執行在java平臺之上



修改java變數




單節點部署
建立資料夾 將資料匯入資料夾中

wordcount 統計單詞演算法

檢視統計結果



偽節點部署
配置檔案系統


配置檔案儲存的份數


設定ssh免密碼認證

[[email protected] hadoop]$ scp -r /home/hadoop/.ssh/  
[email protected]
:~ [[email protected] hadoop]$ scp -r /home/hadoop/.ssh/ [email protected]:~ [[email protected] hadoop]$ scp -r /home/hadoop/.ssh/ [email protected]:~ [[email protected] hadoop]$ scp -r /home/hadoop/.ssh/ [email protected]:~

配置datanode節點

返回值為0表示格式化成功

啟動服務 檢視程序狀態


##網頁測試  瀏覽器訪問

http://172.25.62.1:50070/


建立目錄上傳

點選最右邊的  點選第一個檢視目錄



上傳檔案至服務端

再次檢視

使用命令檢視結果


刪除並檢視其顯示結果







高階配置mapred配置




啟動服務  並檢視

檢視是否成功   瀏覽器訪問http://172.25.62.1:8088/cluster/cluster



分散式配置   先停止偽節點
停止偽節點

切換到超級使用者


配置共享儲存  重新整理檢視是否成功

客戶端server2安裝服務  並設定開機自動掛載   注意啟動順序



server3與server2一樣  注意服務啟動順序

[[email protected] ~]# yum install -y nfs-utils rpcbind
[
[email protected]
~]# /etc/init.d/rpcbind start [[email protected] ~]# /etc/init.d/nfs start [[email protected] ~]# chkconfig rpcbind on [[email protected] ~]# mount 172.25.62.1:/home/hadoop/ /home/hadoop/ [[email protected] ~]# df -h

檢視是否成功

配置datanode節點

配置備份儲存2份


格式化namenode節點

返回值為0表示正常

啟動服務並檢視

datanode節點檢視服務


檢視節點是否存在並正常掛載



線上新增節點server4

[[email protected] ~]# yum install -y nfs-utils rpcbind
[[email protected] ~]# /etc/init.d/rpcbind start
[[email protected] ~]# /etc/init.d/nfs start
[[email protected] ~]# chkconfig rpcbind on
[[email protected] ~]# mount 172.25.62.1:/home/hadoop/  /home/hadoop/
[[email protected] ~]# df -h

免密啟動服務  並檢視程序


檢視其是否加入儲存體系中


節點資料遷移

檢視是否上傳成功

檢視節點的儲存狀態


配置下線


配置下線使用者為server3

使配置生效

檢視server3的狀態如果是Decommissioned則表示遷移完成 否則表示未完成


同時可以發現其他節點儲存增加了  

關閉datanode節點

開啟其他節點的nodemanager服務



HDFS高可用   原理待補充
先關閉之前的服務

配置服務


刪除原有配置

server1到server4都清空配置以免影響



安裝服務zookeeper  總節點數為奇數個
server1到server5都獲取安裝包

指定對應的ID



server3和server4上如下操作


server2.3.4上啟動服務



檢視哪個是leader



看到server3是leader  在leader上啟動服務並檢視相關配置

輸入quit退出


配置叢集
 配置指定hdfs的namenode 為master(名稱隨意)指定zookeeper 叢集主機地址(server2,server3,server4的IP地址)


編輯hdfs-site.xml檔案

A 指定hdfs的nameservices為master

B 定義namenode節點(server1,server5)

C 指定namenode元資料在journalNode上存放的位置

D 指定journalnode在本地磁碟存放資料的位置

E 開啟namenode 失敗自動切換,及自動切換實現方式,隔離機制方式以及使用sshfence 隔離機制需要ssh免密以及隔離機制超時時間等引數

配置server5進行掛載


啟動日誌伺服器server2 server3 server4



格式化HDFS叢集


將生成的資料傳送到另一個高可用節點server5

免密在之前已經做過  沒做過的話執行下面的命令

啟動zkfc服務    格式化zookeeper

啟動hdfs叢集

檢視server1和server5   server2.3.4的狀態
server1狀態和server5一致  234狀態一致



在瀏覽器檢視   server1為master  server5為standby
http://172.25.62.1:50070/dfshealth.html#tab-overview

http://172.25.62.5:50070/dfshealth.html#tab-overview

模擬故障切換

在瀏覽器檢視namenode為server5    server1不可連線
http://172.25.62.5:50070/dfshealth.html#tab-overview

再次啟動server1的namenode  master依然是server5

瀏覽器再次檢視


yarn高可用


<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
##指定yarn的框架為mapreduce
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
##配置可以在nodemanager上執行mapreduce程式
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
##啟用RM高可用
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
##指定RM的叢集ID
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>RM_CLUSTER</value>
</property>
##定義RM節點
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>172.25.62.1</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>172.25.62.5</value>
</property>
##啟用RM自動恢復
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
##配置RM狀態資訊儲存方式  有memstore和ZKstore
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
##配置zookeeper儲存時,指定zookerper叢集的地址
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>172.25.62.2:2181,172.25.62.3:2181,172.25.62.4:2181</value>
</property>
</configuration>

啟動服務

另一個節點server5需要手動啟動

在瀏覽器訪問
http://server1:8088/cluster/cluster

http://server5:8088/cluster/cluster

yarn故障測試
在server1上斷開主節點

檢視狀態  server5接管資源

再次啟動server1

再次訪問  還是server5在處理

服務的關閉
server1上

server5節點上

server2.3.4關閉的方法一樣