1. 程式人生 > >Hadoop生態圈元件

Hadoop生態圈元件

 

1、HDFS(hadoop分散式檔案系統)

是hadoop體系中資料儲存管理的基礎。他是一個高度容錯的系統,能檢測和應對硬體故障。

client:切分檔案,訪問HDFS,與那麼弄得互動,獲取檔案位置資訊,與DataNode互動,讀取和寫入資料。

namenode:主節點,管理HDFS的名稱空間和資料塊對映資訊,配置副本策略,處理客戶 端請求。

DataNode:slave節點,儲存實際的資料,彙報儲存資訊給namenode。

secondary namenode:輔助namenode,分擔其工作量:定期合併fsimage和fsedits,推送給namenode;緊急情況下和輔助恢復namenode,但其並非namenode的熱備。

 

2、yarn (hadoop資源管理器)

負責海量資料運算時的資源排程,叢集中的角色主要有 ResourceManager /NodeManager

  • ResourceManager做的事情是負責協調叢集上計算資源的分配。排程、啟動每一個 Job 所屬的 ApplicationMaster、另外監控 ApplicationMaster 的存在情況。
  • NodeManager 根據要求啟動和監視叢集中機器的計算容器container。負責 Container 狀態的維護,並向 RM 保持心跳彙報該節點資源使用情況。

 

3、mapreduce(分散式計算框架)

mapreduce是一種計算模型,用於處理大資料量的計算。其中map對應資料集上的獨立元素進行指定的操作,生成鍵-值對形式中間,reduce則對中間結果中相同的鍵的所有值進行規約,以得到最終結果。

jobtracker:master節點,只有一個,管理所有作業,任務/作業的監控,錯誤處理等,將任務分解成一系列任務,並分派給tasktracker。

tacktracker:slave節點,執行 map task和reducetask;並與jobtracker互動,彙報任務狀態。

map task:解析每條資料記錄,傳遞給使用者編寫的map()並執行,將輸出結果寫入到本地磁碟(如果為map—only作業,則直接寫入HDFS)。

reduce task:從map 它深刻地執行結果中,遠端讀取輸入資料,對資料進行排序,將資料分組傳遞給使用者編寫的reduce函式執行。

 

4、hbase(分散式列存資料庫)

Hbase全稱為Hadoop Database,即hbasehadoop資料庫,是一個分散式的儲存系統。Hbase利用Hadoop的HDFS作為其檔案儲存系統,利用Hadoop的MapReduce來處理Hbase中的海量資料

hbase是一個針對結構化資料的可伸縮,高可靠,高效能,分散式和麵向列的動態模式資料庫。和傳統關係型資料庫不同,hbase採用了bigtable的資料模型:增強了稀疏排序對映表(key/value)。其中,鍵由行關鍵字,列關鍵字和時間戳構成,hbase提供了對大規模資料的隨機,實時讀寫訪問。

 

5、sqoop(資料同步工具)

sqoop是sql-to-hadoop的縮寫,主要用於傳統資料庫和hadoop之間傳輸資料。

核心的功能有兩個:匯入、遷入<---->匯出、遷出

匯入資料:MySQL,Oracle 匯入資料到 Hadoop 的 HDFS、HIVE、HBASE 等資料儲存系統

匯出資料:從 Hadoop 的檔案系統中匯出資料到關係資料庫 mysql 等 Sqoop 的本質還是一個命令列工具,和 HDFS,Hive 相比,並沒有什麼高深的理論。

sqoop:

工具:本質就是遷移資料, 遷移的方式:就是把sqoop的遷移命令轉換成MR程式

 

6、pig(基於hadoop的資料流系統)

Pig是一種程式語言,為了簡化mapreduce的一些繁瑣的<key,value>處理而直接處理資料的一個"類"sql語言。 Pig內部,每個操作是對輸入進行資料處理,然後產生輸出結果,這些操作被轉換成一系列MapReduce作業,Pig讓程式設計師不需要知道這些轉換具體是如何進行的,這樣工程師可以將精力集中在資料上,而非執行的細節上。

Pig可載入資料、表達轉換資料以及儲存最終結果。同時Pig可擴充套件使用Java中新增的自定義資料型別並支援資料轉換。

Pig最大的作用就是對mapreduce演算法(框架)實現了一套shell指令碼 ,類似於SQL語句,在Pig中稱之為Pig Latin,在這套指令碼中我們可以對加載出來的資料進行排序、過濾、求和、分組(group by)、關聯(Joining),它通常用於離線分析。

 

7、 hive(基於hadoop的資料倉庫)

Hive在Hadoop中是一個數據倉庫。Hive新增資料的結構在HDFS,並允許使用類似於SQL語法進行資料查詢。

hive本質就是執行計算,依賴於HDFS儲存資料,把SQL轉換成MR程式。主要用於資料的分析

 

8、zookeeper(分散式協作服務)

ZooKeeper 顧名思義 動物園管理員,他是拿來管大象(Hadoop) 、 蜜蜂(Hive) 、 小豬(Pig)  的管理員,實現同步服務,配置維護和命名服務等分散式應用。

可以理解為Hadoop的整體監控系統。如果namenode,HMaster宕機後,這時候Zookeeper 的重新選出leader。這是它最大的作用所在。

  1. 加強叢集穩定性
  2. 加強叢集持續性
  3. 保證叢集有序性
  4. 保證叢集高效

9、flume(日誌收集工具)

Flume是Cloudera提供的日誌收集系統,具有分散式、高可靠、高可用性等特點,對海量日誌採集、聚合和傳輸,flume的核心是把資料從資料來源收集過來,再送到目的地。為了保證輸送一定成功,在送到目的地之前,會先快取資料,待資料真正到達目的地後,刪除自己快取的資料。

Flume傳輸的資料基本單位是Event,如果是文字檔案,通常是一行記錄,這也是事務的基本單位。Event從Source,流向Channel,再到Sink,本身為一個byte陣列,並可攜帶headers資訊。Event代表著一個數據流的最小完整單元,從外部資料來源來,向外部的目的地去通過這些元件,event可以從一個地方流向另一個地方,如下圖所示。