全面了解大資料「三駕馬車」的開源實現

2021-09-12 12:41:18 字數 2046 閱讀 7328

·google file system(gfs)的開源實現:hdfs

·mapreduce 的開源實現:hadoop mapreduce

·bigtable 的開源實現:hbase

1.hdfs 是在乙個大規模分布式伺服器集群上,對資料分片後進行並行讀寫及冗餘儲存。

2.hdfs 的關鍵元件有兩個,乙個是 datanode,乙個是 namenode。

3.datanode 負責檔案資料的儲存和讀寫操作,hdfs 將檔案資料分割成若干資料塊(block),每個 datanode 儲存一部分資料塊,這樣檔案就分布儲存在整個 hdfs 伺服器集群中。

4.namenode 負責整個分布式檔案系統的元資料(metadata)管理,也就是檔案路徑名、資料塊的 id 以及儲存位置等資訊,相當於作業系統中檔案分配表(fat)的角色。hdfs 為了保證資料的高可用,會將乙個資料塊複製為多份(預設情況為 3 份),並將多份相同的資料塊儲存在不同的伺服器上,甚至不同的機架上。這樣當有磁碟損壞,或者某個 datanode 伺服器宕機,甚至某個交換機宕機,導致其儲存的資料塊不能訪問的時候,客戶端會查詢其備份的資料塊進行訪問。

1.mapreduce 是什麼?mapreduce 既是乙個程式設計模型,又是乙個計算框架。開發人員許喲按照mapreduce的程式設計模型來開發,並且將程式通過mapreduce分發到hadoop集群中執行。

2.mapreduce 執行過程涉及三類關鍵程序

·大資料應用程序。這類程序是啟動 mapreduce 程式的主入口,主要是指定 map 和 reduce 類、輸入輸出檔案路徑等,並提交作業給 hadoop 集群,也就是下面提到的 jobtracker 程序。這是由使用者啟動的 mapreduce 程式程序,比如 wordcount 程式。

·jobtracker 程序。這類程序根據要處理的輸入資料量,命令下面提到的 tasktracker 程序啟動相應數量的 map 和 reduce 程序任務,並管理整個作業生命週期的任務排程和監控。這是 hadoop 集群的常駐程序,需要注意的是,jobtracker 程序在整個 hadoop 集群全域性唯一。

·tasktracker 程序。這個程序負責啟動和管理 map 程序以及 reduce 程序。因為需要每個資料塊都有對應的 map 函式,tasktracker 程序通常和 hdfs 的 datanode 程序啟動在同乙個伺服器。也就是說,hadoop 集群中絕大多數伺服器同時執行 datanode 程序和 tasktacker 程序。

3.mapreduce 計算真正產生奇蹟的地方是資料的合併與連線。

每個 map 任務的計算結果都會寫入到本地檔案系統,等 map 任務快要計算完成的時候,mapreduce 計算框架會啟動 shuffle 過程,在 map 任務程序呼叫乙個 partitioner 介面,對 map 產生的每個 進行 reduce 分割槽選擇,然後通過 http 通訊傳送給對應的 reduce 程序。這樣不管 map 位於哪個伺服器節點,相同的 key 一定會被傳送給相同的 reduce 程序。reduce 任務程序對收到的 進行排序和合併,相同的 key 放在一起,組成乙個 傳遞給 reduce 執行。

map 輸出的 shuffle 到哪個 reduce 程序是這裡的關鍵,它是由 partitioner 來實現,mapreduce 框架預設的 partitioner 用 key 的雜湊值對 reduce 任務數量取模,相同的 key 一定會落在相同的 reduce 任務 id 上。

2.hregion 是 hbase 負責資料儲存的主要程序,應用程式對資料的讀寫操作都是通過和 hretion 通訊完成。上面是 hbase 架構圖,我們可以看到在 hbase 中,資料以 hregion 為單位進行管理,也就是說應用程式如果想要訪問乙個資料,必須先找到 hregion,然後將資料讀寫操作提交給 hregion,由 hregion 完成儲存層面的資料操作。

hregionserver 是物理伺服器,每個 hregionserver 上可以啟動多個 hregion 例項。當乙個 hregion 中寫入的資料太多,達到配置的閾值時,乙個 hregion 會**成兩個 hregion,並將 hregion 在整個集群中進行遷移,以使 hregionserver 的負載均衡。

全面了解大資料「三駕馬車」的開源實現

google大資料 三駕馬車 的第一駕是gfs google檔案系統 而hadoop的第乙個產品是hdfs,可以說分布式檔案儲存是分布式計算的基礎,也可見分布式檔案儲存的重要性。hdfs是在乙個大規模分布式伺服器集群上,對資料分片後進行並行讀寫及冗餘儲存。從圖中你可以看到hdfs的關鍵元件有兩個,乙...

全面了解大資料「三駕馬車」的開源實現

google大資料 三駕馬車 的第一駕是gfs google檔案系統 而hadoop的第乙個產品是hdfs,可以說分布式檔案儲存是分布式計算的基礎,也可見分布式檔案儲存的重要性。hdfs是在乙個大規模分布式伺服器集群上,對資料分片後進行並行讀寫及冗餘儲存。從圖中你可以看到hdfs的關鍵元件有兩個,乙...

全面了解大資料「三駕馬車」的開源實現

google大資料 三駕馬車 的第一駕是gfs google檔案系統 而hadoop的第乙個產品是hdfs,可以說分布式檔案儲存是分布式計算的基礎,也可見分布式檔案儲存的重要性。hdfs是在乙個大規模分布式伺服器集群上,對資料分片後進行並行讀寫及冗餘儲存。從圖中你可以看到hdfs的關鍵元件有兩個,乙...