NEIL's_學而時習之x不學無術~私藏IT技術經驗分享部落

關於部落格
NEIL. Cheng....寫作只是為了日後工作之備忘操作參考

本部落格文章撰寫前進邁向第五年(since 2009 ~至今)仍繼續推進分享IT學習!!About Windows/Linux Server,Virtualization


分享網誌: 由於,本人預先完成LAB後,才補上撰寫文章與截圖,若發現文圖對照說明有誤..本人將盡快校正,也請不吝指教! Thanks!

  • 141285

    累積人氣

  • 105

    今日人氣

    0

    訂閱人氣

雲端運算: Hadoop HDFS(二): 進階節點管理 by Navier

 

實驗目標: 

延續前篇發表的 雲端運算: Hadoop 平台建置/組態 HDFS 與慣用指令 (一) : 平台基礎架構 

所建立架構 稍微延宕一些時日是因為週末開始投入一個Front End Design課程,出發點:主要為

將來深入SEO網站結構優化追蹤成效這塊深入研究前所鋪路)
此外花了一些時間將原本"Hadoop架構"

Lab環境做了部分調整,
參考下圖



Navier 調整Lab架構如下:

Hadoop version:   原 2.7.0 升級到 hadoop 2.7.1 

Network IPAddress Range: 
10.10.10.0/24

Host x7 OS: 
 Ubuntu 14.04

JAVA version:    
原 jdk-8u-45  升級到 jdk-8u-60

NameNode Dir:
 /hadoop/nn

Secondary NameNode Dir:
/hadoop/nn2

DataNode Dir: 
/hadoop/dn

--------Navier Lab 架構主機群參考如下(延續前篇架構設計)-----------


NameNode: navierx (.10)                                     -----更名為"nn1"

Secondary NameNode: navierx2(.20)                 ---更名為"nn2"

Date Node: 
dn01(.30),dn02(.31),dn03(32)        #dn03 node, 目前預定未online

-----
[ Apache Hadoop 2.7.1 release ] 

Apache Hadoop 2.7.1 is a minor release in the 2.x.y release line, building upon the

previous release 2.7.0.
This is the next stable release after Apache Hadoop 2.6.x..

點我
 

Then Navier 本篇計畫完成以下幾個重點:
 
(a.)當Data node資源存儲空間不足時,輕易橫向擴充新增節點(計畫拿dn03來做新增節點上/線演示)

(b.) HDFS 自動調整分散式資料所存儲%使其存儲差異%趨近均衡(HDFS Balancer)

(c.) Ganglia/Hadoop Cluster:  監控各節點live狀況與資源使用率(CPU.RAM,HDD,Networkflow)


Hadoop 節點白名單(whitelist) 配置:  設置節點白名單以限定DataNode允許上線.... 

建立 whitelist  文字清單(可自命名)  "/hadoop/hadoop-2.7.1/etc/hadoop/whitelist" 

#加入 dn01,dn02  兩個資料節點
"#dn03"  將其註解,則不允許該節點上線 
   
           
Then 編輯 hdfs-site.xml  添加下述配置,

<property>
<name>dfs.hosts</name>
<value>/hadoop/hadoop-2.7.1/etc/hadoop/whitelist</value>
</property>
 儲存後執行" stop-dfs.sh && start-dfs.sh"  ,本人是使用" hdfs dfsadmin -refreshNodes"執行
 
  完成 whitelist (節點白名單) 配置後,只允許dn01,dn02 兩台主機上線(dn03 將限制不能上線)


倘若"slave"檔案中開放"dn03"節點加入,但 whitelist 未將"dn03"節點納入則

浮現: Dead datanodes (1) 字樣: 該節點已死

#假設不是再完成停止/重啟一次hadoop狀態下(將出現此窘境)
   
   當下次重啟Hadoop時就不會在出現此訊息


察看NameNode 日誌查證...    

/hadoop/logs/hadoop-navier-namenode-nn1.log
  #原設置在/tmp後, 修改專用Log儲存路徑

2015-10-09 13:31:36,441 INFO org.apache.hadoop.util.HostsFileReader: Adding dn03 to the list of included hosts from /hadoop/hadoop-2.7.1/etc/hadoop/whitelist

Datanode denied communication with namenode because the host is not in the include-list: DatanodeRegistration(10.10.10.32:50010, datanodeUuid=eecf2972-b9e2-419c-a4e1-f6bf30e55882, infoPort=50075, infoSecurePort=0, ipcPort=50020, storageInfo=lv=-56;cid=CID-481c46b7-c5fc-4ed2-b99c-a3259f6c9697;nsid=819259826;c=0)



最近看到  作者:我得了一種吃菜就會死得病-螺痣祥 畫的一張圖很有感觸(不解釋....)


 DataNode 動態節點新增以(dn03)為例 

<情境說明>

目前whitelist,slave檔案組態狀況如下(Hadoop上線中,僅有dn01,dn02 兩datanode上線)

現計畫讓新節點"dn03"上線擴展節點以及Hadoop儲存容量
目前Hadoop線上節點有dn01(30),dn02(31):  DFS剩餘可使用空間108.41GB
現新增節點(dn03:32) 擴增HDFS儲存空間:

(A.)編輯"slave" :  加入"dn03 " 主機對應紀錄(一併新增/etc/hosts 主機:IP對應記錄)
(B.)編輯"whitelist" 節點白名單:"dn03"加入白名單
(C.)其他組態提醒:前篇介紹Hadoop,JAVA環境變數對應,各節點金鑰驗證皆需組態好(不贅述)

      Then 於nn1主機上

       執行
"hdfs dfsadmin -refreshNodes"   #動態更新dfs.hosts和dfs.hosts.exclude配置
 (D.)  連線登入"dn03"  啟動"datanode "主機服務

          Then 執行指令:"hadoop-daemon.sh start datanode"

(E.) 回到NameNode(nn1) 底下察看HDFS 報告資訊

       # 看 "dn03" 節點已成功上線(動態擴增節點完成)
           DFS Remaining (剩餘使用空間亦由原先108gb 延展至162.61GB
現演示"刪除節點"(dn03:32) 

(a.)  於dn03 停用datanode 服務 

        執行指令:
"hadoop-daemon.sh stop datanode"   #確認dn03節點停止datanode服務
(b.)nn1: 檢查HDFS檔案系統狀況: 
  
           
執行指令:hdfs fsck / -files -blocks -locations"     # "/" is  HEALTHY
   
      檢視HDFS Report :     Hadoop 自動檢查節點失效花費時間有點久....終偵測到dn03 Dead
 檢查nn1 log :  Hadoop偵測"dn03"失效將其節點移除

2015-10-16 20:24:08,334 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: FSCK started by navier (auth:SIMPLE) from /10.10.10.10 for path / at Fri Oct 16 20:24:08 CST 2015
2015-10-16 20:25:56,804 INFO org.apache.hadoop.hdfs.StateChange: BLOCK* removeDeadDatanode: lost heartbeat from 10.10.10.32:50010
2015-10-16 20:25:56,806 INFO org.apache.hadoop.net.NetworkTopology: Removing a node: /default-rack/10.10.10.32:50010

(C.)Then 我們將編輯"slave" , "whitelist"  內"dn03"主機註解掉

      下次重新啟動Hadoop後,dn03 節點將不會上線(不浮現Dead Nodes資訊): 卸載節點完成

       執行  
"stop-dfs.sh && start-dfs.sh"   #目前Lab又恢復到兩節點dn01,dn02 情境

HDFS Balancer :  執行均衡分配N節點DataNode分散儲存比率 % :   延續上個Lab環境實作

編輯
 "hdfs-site.xml"  添加以下設定修改預設"bandwidthPersSec:每秒資料遷移速率預設1MB/s

<name>dfs.datanode.balance.bandwidthPerSec </name>
<value>1024000</value>                                       #現修改為10MB/s 頻寬遷移資料速率
</property>

 執行  "stop-dfs.sh && start-dfs.sh" 生效配置      #請衡量網路傳輸頻寬配置上述值

 Then  NavierHDFS "/" 建立一個名為"adaburu" 資料夾,並將一個容量大小21GB檔案上傳到

     該目錄
並檢查其健康狀況OK

       The filesystem under path '/adaburu/Big-Data' is HEALTHY

      察看HDFS 目前儲存資訊報告:

     Sum  DFS Used%: 37.19% ,  

     
dn01 DFS Used%: 33.64%  

     dn02 DFS Used%:  33.64%

     dn03  DFS Used%:    0%

     # dn01,dn02 兩者儲存比率差距0,等會我們將dn03重新加入來檢視看看
           dn02:  資料儲存狀況檢視 DFS Used%: 33.64
          dn03:  資料儲存狀況檢視 DFS Used%: 0 , 方才附加dn03 因沒資料寫入得"0"
 
                        #因此我們可以手動執行"HDFS Blancer" 讓資料分佈趨近均衡

       執行指令: " hdfs balancer -threshold 5 "  

 #各節點間儲存比率差距>=5%以上,進行資料儲存遷移,用以解決各節點儲存比率失衡狀況


 
 
15/10/17 09:38:31 INFO balancer.Balancer: 1 underutilized: [10.10.10.32:50010:DISK]
15/10/17 09:38:31 INFO balancer.Balancer: Need to move 10.44 GB to make the cluster balanced.
15/10/17 09:38:31 INFO balancer.Balancer: Decided to move 3.00 GB bytes from 10.10.10.30:50010:DISK to 10.10.10.32:50010:DISK                           #從.30 node 搬遷(3GB)到.32)
15/10/17 09:38:31 INFO balancer.Balancer: Will move 3.00 GB in this iteration

                                                       [HDFS Blancer 執行中....等待結果]
    #過了一些時間後,又看到  從.31(dn02)  搬遷 3GB 到 .32 (dn03)  紀錄

1
5/10/17 09:49:45 INFO balancer.Balancer: 2 over-utilized: [10.10.10.31:50010:DISK, 10.10.10.30:50010:DISK]
15/10/17 09:49:45 INFO balancer.Balancer: 1 underutilized: [10.10.10.32:50010:DISK]
15/10/17 09:49:45 INFO balancer.Balancer: Need to move 9.48 GB to make the cluster balanced.
15/10/17 09:49:45 INFO balancer.Balancer: Decided to move 3.00 GB bytes from 10.10.10.31:50010:DISK to 10.10.10.32:50010:DISK
15/10/17 09:49:45 INFO balancer.Balancer: Will move 3.00 GB in this iteration
  移動資料完後檢視各節點DFS Use %

     dn01:
調整後由 原33.64% - > 28.39%
    dn02: 調整後由 原33.64% - > 27.33%

   dn03: 調整後由 原0% - > 11.56%    

   #經手動調整後HDFS 經過盡可能均衡調配各節點儲存比率%
Hadoop 另存在一支背景自動偵測執行HDFS Balancer指令:

當偵測節點儲存比率差距=>10%將自動進行HDFS Blancer 動作

執行 "start-balancer.sh"


組建Ganglia Monitor :   以利系統管理員日後監控Hadoop 集群狀況 以Ubuntu 14.04 環境為例

計畫將WebUI介面安裝在NameNode(nn1.10)主機上(已預先安裝好 apache2,php5)

nn1 軟件安裝:
 

sudo apt-get install ganglia-monitor rrdtool gmetad ganglia-webfrontend 

Then 編輯 "gmetad.conf"

sudo vi /etc/ganglia/gmetad.conf

 data_source "Navier-Hadoop" nn1 nn2 dn01 dn02 dn03    #定義叢集名稱與配置監控節點

Then 編輯 gmontd.conf    #配置客戶端監控代理服務(nn2,dn01,dn02,dn03只需安裝gmontd)

sudo apt-get install ganglia-monitor              #各gmontd節點配置一致參考以下(不贅述) 


sudo vi  /etc/ganglia/gmond.conf      #"name" 參數名稱需與gmetad.conf  "datasource"一致

udp_send_channel {
  /*mcast_join = 239.2.11.71*/            
  host = 10.10.10.10             #指定namenode主機:nn1
  port = 8649
  ttl = 1
}
 
udp_recv_channel {
  /*mcast_join = 239.2.11.71*/
  port = 8649
  /*bind = 239.2.11.71*/
}

重啟各節點 gmetd,ganglia-monitor 生效配置 

/etc/init.d/gmetad restart

/etc/init.d/ganglia-monitor resatrt

 
組態WebUI: 該網址為:http://nn1/ganglia  or http://10.10.10.10/ganglia

sudo ln -s /usr/share/ganglia-webfrontend/ 
/var/www/html/ganglia   

/etc/init.d/apache2 restart

瀏覽Ganglia WebUI 介面:

<主頁面>
     Monitor: procs/s mem/s network-flow   
   此外,也提供CPUs Total:4 ,HostsUP主機偵測,HostDown 偵測節點死亡, CPU平均負載%...等
相簿設定
標籤設定
相簿狀態