HDFS配置:
客戶端中的配置參數可以覆蓋服務端的參數。
例如:副本數,切塊大小
HDFS文件存儲:
服務端存儲block的實際大小,但是不適合存儲小文件,小文件會佔用namenode的元數據空間。
對於小文件數據的優化,可以在上傳之前先合併再上傳。
例如:壓縮、文本文件合併
HDFS擴展:
hdfs支持rest API,與平臺無關
jetty 容器
hdfs支持rest command
分佈式任務傳統方式:
任務資源分發 jar配置文件。。。硬件資源的分配
任務在各個任務節點上設置運行環境,啓動執行
監視各個階段任務執行狀態
任務失敗,重試
中間結果調度,彙總
hadoop對分佈式抽象
yarn:資源調度器,負責硬件資源調度、任務分配、環境配置、啓動任務。
mapredce:分佈式運算框架,監視任務執行、失敗重試、中間結果調度。
spark、storm:實時計算
mapreduce
- mapper:
一次讀取一行數據
輸出一組keyValue
mapper個數等於block塊數 - shuffle:
合併數據 - reduce:
業務邏輯處理
hadoop序列化機制:
- hadoop中目前的序列化機制是writable,後續版本中會替換爲avro
mapreduce任務提交方式
- jar包,hadoop jar wordcount.jar Count
mr會被提交到集羣,屬於集羣的運行方式 - local模式
在eclipse裏直接運行main方法 - eclipse hadoop 插件
mapreduce任務執行流程
- RunJar:客戶端
- ResourceManager:資源管理器,老大
- NodeManager:執行任務管理器
- MrAppMaste:任務啓動、監控、失敗重試
- yarnchild:mapper和reducer
- RunJar向ResourceManager申請提交一個job
- ResourceManager返回jobid和一個job的提交的路徑(hdfs://)
- RunJar提交job任務的相關文件(jar,配置job.xml,split.xml)到hdfs
- RunJar上報給ResourceManager任務已經提交完成
- ResourceManager分配資源,並將任務任務寫入到任務隊列中
- NodeManager主動向ResourceManager領取任務
- NodeManager在一個容器中啓動MrAppMaster
- MrAppMaster向ResourceManager註冊
- ResourceManager向MrAppMaster返回資源信息
- MrAppMaster啓動mapper(mapper reducer詳細流程。。。)
- MrAppMaster啓動reducer
- 任務執行完成,向ResourceManager註銷資源