MapReduce
簡單說MapReduce是一個分散式程式框架,運算工作可以分成兩個部分,Map和Reduce,開始的時候,會被系統轉換成一組組Key,Value的序對並切割成許多部分,分別丟給Mapper處理,Mapper處理完後將運算結果整理成一組組的Key,Value序對,再傳給Reducer整合Mapper的結果,將結果輸出。
MapReduce詳細介紹:
map: [1,2,3,4] - (*2) -> [2,4,6,8]
reduce: [1,2,3,4] - (sum) -> 10
對應Divide and conquer演算法,將問題分解成很多個小問題,再做總和。
HDFS
Hadoop專案中的檔案系統。實作Google File System。
Metadata ( name, path, copies, blocks ),然後要求datanodes抓出來。
副本備份機制:
可靠性機制:
Hadoop Distributed File System
將分散的儲存資源整合成一個具容錯能力、高效率且超大容量的環境。
Hadoop運算產生的資料都是存放在HDFS。
HDFS是master/slave架構,由兩種角色組成。Namenode + Datanodes
Namenode負責各檔案的屬性權限管理及儲存。記錄Datanodes檔案存放位置。
Datanodes由切割成數個Block區塊儲存在不同的Datanodes,每一區塊還會有副本存在不同節點。
名詞介紹:
Job - 任務。
Task - 工作。
JobTracker - 任務分派者。
TaskTracker - 工作執行者。
Map - 對應。
Reduce - 彙整。
Namenode - 名稱節點。
Datanode - 資料節點。
Replication - 副本。
Blocks - 檔案區塊(64M)。
Metadata - 屬性資料。
HDFS Layer - 管理資料
Namenode
簡單說MapReduce是一個分散式程式框架,運算工作可以分成兩個部分,Map和Reduce,開始的時候,會被系統轉換成一組組Key,Value的序對並切割成許多部分,分別丟給Mapper處理,Mapper處理完後將運算結果整理成一組組的Key,Value序對,再傳給Reducer整合Mapper的結果,將結果輸出。
MapReduce詳細介紹:
map: [1,2,3,4] - (*2) -> [2,4,6,8]
reduce: [1,2,3,4] - (sum) -> 10
對應Divide and conquer演算法,將問題分解成很多個小問題,再做總和。
- JobTracker跟NameNode取得需要運算的blocks
- JobTracker選數個TaskTracker來做Map運算
- JobTracker將中間檔案整合排序後,複製到需要的TaskTracker
- JobTracker派遣TaskTracker作reduce
- reduce完成後通知JobTracker與Namenode以產生output
- 建立一個JobConf類別的物件
- 設定MapperClass/ReducerClass的類別
- 設定輸入輸出資料的格式
- 設定輸出資料的類型
- 提交運算工作
- 依據InputFormat的設定取得資料,並分割轉換為Key,Value
- 交由Mapper運算
- Mapper將運算結果輸出為Key,Value序對,也稱為intermediate資料
- 系統將暫時的結果排序暫存起來
- 所有Mapper工作結束
- 依照不同的Key值傳送給不同的Reducer彙整
- 相同Key值會放在container裡傳給同一個Reducer處理
- Reducer利用values.next()依序取得value值
- 結果整理
- 依OutputFormat設定輸出檔案
HDFS
Hadoop專案中的檔案系統。實作Google File System。
- 硬體錯誤容忍能力 - 可自行處理錯誤,不需人工來修理
- 串流式的資料資料存取 - Goolge搜尋,高Latency(等待時間)
- 大規模資料 - 支援Perabytes等級
- 一致性模型 - 一次寫入(收集的東西),多次存取(結果),比如說搜尋引擎 - 去全球的網頁拉資料,一起進去算,算出來存下結果,讓使用者讀取。
- 在地運算 - 資料在哪裡就用那一台運算,如果沒資料會找最近的資料copy
- 異質平台移植性 - 不同硬體可以擴充
Metadata ( name, path, copies, blocks ),然後要求datanodes抓出來。
副本備份機制:
可靠性機制:
- 資料完整性 - (透過CRC32 和 用副本取代出錯資料)
- Datanode壞掉 - 定期送heartbeat送Namenode透過證明自己存在
- FSImage(核心映像檔)、Editlog(日誌檔),當Namoenode掛掉,Secondarynamenode啟動。管理者要用FSImage和Editlog載入給Secondarynamenode。Secondary可以有好幾台。
- 易於擴充的分散式檔案系統
- 運作於廉價的普通硬體上
- 容錯功能
- 提供大量的用戶總體性能教高的服務
Hadoop Distributed File System
將分散的儲存資源整合成一個具容錯能力、高效率且超大容量的環境。
Hadoop運算產生的資料都是存放在HDFS。
HDFS是master/slave架構,由兩種角色組成。Namenode + Datanodes
Namenode負責各檔案的屬性權限管理及儲存。記錄Datanodes檔案存放位置。
Datanodes由切割成數個Block區塊儲存在不同的Datanodes,每一區塊還會有副本存在不同節點。
名詞介紹:
Job - 任務。
Task - 工作。
JobTracker - 任務分派者。
TaskTracker - 工作執行者。
Map - 對應。
Reduce - 彙整。
Namenode - 名稱節點。
Datanode - 資料節點。
Replication - 副本。
Blocks - 檔案區塊(64M)。
Metadata - 屬性資料。
HDFS Layer - 管理資料
Namenode
- Master
- 管理HDFS的名稱空間
- 控制對檔案的讀寫
- 配置副本策略(如果有Datanode節點損壞,進行資料搬遷與複製)
- 對名稱空間做檢查及記錄
- 一個
- Workers
- 執行讀 / 寫動作
- 執行Namonode的副本策略(負責執行)
- 多個
MapReduce Layer - 分派程序
Jobtracker- Master
- 使用者發起工作
- 指派工作給Tasktrackers
- 排成決策、工作分配、錯誤處理
- 一個
- Workers
- 運作Map與Reduce的工作
- 管理儲存;回覆運算結果
- 多個
bin/
各項執行檔,包括start-all.sh,stop-all.sh,hadoop
conf/
設定檔。hadoop-env.sh,hadoop-site.conf
docs/
Hadoop api與說明文件
contrib/
eclipse外掛
lib/
Hadoop函式庫
src/
Hadoop原始碼
build/
Hadoop編譯後資料夾
logs/
日誌
沒有留言:
張貼留言