天天看點

08-Hadoop-HAHadoop

Hadoop

Hadoop-HA思維導圖下載下傳連結

hdfs API

部署包

  • 本地環境使用JAR包
    • hadoop-2.6.5
      • share
        • doc(文檔)
        • hadoop
          • common
          • hdfs
          • httpdfs
          • kms
          • mapreduce
          • tools
          • yarn

源碼包

  • 綁定源碼

lib包整合

  • **.jar

Winows環境

  • 環境變量
    • HADOOP_HOME
      • F:/usr/hadoop-2.6.5
    • Path
      • F:/usr/hadoop-2.6.5/bin
    • HADOOP_USER_NAME
      • root
  • bin中替換
  • hadoop.dll放置到System32檔案下

eclipse

Hadoop MapReduce V2

MR原語:map + reduce

  • 輸入(格式化k,v)資料集map映射成一個中間資料集(k,v)reduce (sql)
    • “相同”的key為一組,調用一次reduce方法,方法内疊代這一組資料進行計算 (類似的sql)
  • 排序
    • 比較
  • 周遊
    • 計算
    • 各種次元花銷,音樂, 其他

MapReduce:MapTask & ReduceTask

Shuffler<洗牌>:架構内部實作機制

分布式計算節點資料流轉:連接配接MapTask與ReduceTask

計算架構MR(wordcount 單詞統計)

了解:

  • Map:
    • 讀懂資料
    • 映射為KV模型
    • 并行分布式
    • 計算向資料移動
  • Reduce:
    • 資料全量/分量加工(partition/group)
    • Reduce中可以包含不同的key
    • 相同的Key彙聚到一個Reduce中
    • 相同的Key調用一次reduce方法
    • 排序實作key的彙聚
  • K,V使用自定義資料類型
    • 作為參數傳遞,節省開發成本,提高程式自由度
    • Writable序列化:使能分布式程式資料互動
    • Comparable比較器:實作具體排序(字典序,數值序等)

Hadoop 1.x – mr 1.x

運作架構:展現計算向資料移動

計算架構Mapper

計算架構Reducer

MRv1角色:

  • JobTracker
    • 核心,主,單點
    • 排程所有的作業
    • 監控整個叢集的資源負載
  • TaskTracker
    • 從,自身節點資源管理
    • 和JobTracker心跳,彙報資源,擷取Task
  • Client
    • 作業為機關
    • 規劃作業計算分布
    • 送出作業資源到HDFS
    • 最終送出作業到JobTracker

弊端:

  • JobTracker:負載過重,單點故障
  • 資源管理與計算排程強耦合,其他計算架構需要重複實作資源管理
  • 不同架構對資源不能全局管理

Hadoop YARN (MRv2)

YARN:解耦資源與計算

  • ResourceManager
    • 主,核心
    • 叢集節點資源管理
  • NodeManager
    • 與RM彙報資源
    • 管理Container生命周期
    • 計算架構中的角色都以Container表示
  • Container:【節點NM,CPU,MEM,I/O大小,啟動指令】
    • 預設NodeManager啟動線程監控Container大小,超出申請資源額度,kill
    • 支援Linux核心的Cgroup

MR :

  • MR-ApplicationMaster-Container
    • 作業為機關,避免單點故障,負載到不同的節點
    • 建立Task需要和RM申請資源(Container /MR 1024MB)
  • Task-Container

Client:

  • RM-Client:請求資源建立AM
  • AM-Client:與AM互動

YARN

  • YARN:Yet Another Resource Negotiator;
  • Hadoop 2.0新引入的資源管理系統,直接從MRv1演化而來的;
    • 核心思想:将MRv1中JobTracker的資源管理和任務排程兩個功能分開,分别由ResourceManager和ApplicationMaster程序實作
    • ResourceManager:負責整個叢集的資源管理和排程
    • ApplicationMaster:負責應用程式相關的事務,比如任務排程、任務監控和容錯等
  • YARN的引入,使得多個計算架構可運作在一個叢集中
    • 每個應用程式對應一個ApplicationMaster
    • 目前多個計算架構可以運作在YARN上,比如MapReduce、Spark、Storm等

MapReduce On YARN

  • MapReduce On YARN:MRv2
  • 将MapReduce作業直接運作在YARN上,而不是由JobTracker和TaskTracker建構的MRv1系統中
  • 基本功能子產品
    • YARN:負責資源管理和排程
    • MRAppMaster:負責任務切分、任務排程、任務監控和容錯等
    • MapTask/ReduceTask:任務驅動引擎,與MRv1一緻
  • 每個MapRaduce作業對應一個MRAppMaster
    • MRAppMaster任務排程
    • YARN将資源配置設定給MRAppMaster
    • MRAppMaster進一步将資源配置設定給内部的任務
  • MRAppMaster容錯
    • 失敗後,由YARN重新啟動
    • 任務失敗後,MRAppMaster重新申請資源

高可用搭建實操

hadoop

  • mapred-site.xml
    • mapreduce.framework.name yarn
  • yarn-site.xml
    • yarn.nodemanager.aux-services mapreduce_shuffle
    - yarn.resourcemanager.ha.enabled true

- yarn.resourcemanager.cluster-id cluster1 - yarn.resourcemanager.ha.rm-ids rm1,rm2 - yarn.resourcemanager.hostname.rm1 node0003 yarn.resourcemanager.hostname.rm2 node0004 - yarn.resourcemanager.zk-address node0002:2181,node0003:2181,node0004:2181

啟動

  • zkServer.sh start
  • start-dfs.sh
  • start-yarn.sh
  • yarn-daemon.sh start resourcemanager

通路

  • ss -nal
  • http://192.168.137.133:8088/cluster

繼續閱讀