hadoop入門指南(Hello Hadoop)

Hadoop HDFS MapReduce Storm Java開發之路 2017-05-20

hadoop入門指南(Hello Hadoop)

Hadoop百度百科

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。

Hadoop其實只是一種數據處理的框架,具體去處理什麼問題,不是平臺本身決定的。hadoop的出現時源於現實中存儲和需要分析的數據的激增,最終要解決什麼問題是看使用者要解決什麼問題。

用戶可以在不瞭解分佈式底層細節的情況下,開發分佈式程序。充分利用集群的威力進行高速運算和存儲。

Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。

Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,則MapReduce為海量的數據提供了計算。

基礎知識

如今是大數據時代,而且學習大數據都會先學習Hadoop,因為它是目前世界上最流行的分佈式數據處理框架。

Hadoop的核心是YARN,HDFS,Mapreduce,常用模塊架構如下

hadoop入門指南(Hello Hadoop)

HDFS

HDFS是一個分佈式文件系統,在HDFS上寫文件的過程與我們平時使用的單機文件系統非常不同,從宏觀上來看,在HDFS文件系統上創建並寫一個文件,流程如下圖(來自《Hadoop:The Definitive Guide》一書)所示:

hadoop入門指南(Hello Hadoop)

具體過程描述如下:

  1. Client調用DistributedFileSystem對象的create方法,創建一個文件輸出流(FSDataOutputStream)對象

  2. 通過DistributedFileSystem對象與Hadoop集群的NameNode進行一次RPC遠程調用,在HDFS的Namespace中創建一個文件條目(Entry),該條目沒有任何的Block

  3. 通過FSDataOutputStream對象,向DataNode寫入數據,數據首先被寫入FSDataOutputStream對象內部的Buffer中,然後數據被分割成一個個Packet數據包

  4. 以Packet最小單位,基於Socket連接發送到按特定算法選擇的HDFS集群中一組DataNode(正常是3個,可能大於等於1)中的一個節點上,在這組DataNode組成的Pipeline上依次傳輸Packet

  5. 這組DataNode組成的Pipeline反方向上,發送ack,最終由Pipeline中第一個DataNode節點將Pipeline ack發送給Client

  6. 完成向文件寫入數據,Client在文件輸出流(FSDataOutputStream)對象上調用close方法,關閉流

  7. 調用DistributedFileSystem對象的complete方法,通知NameNode文件寫入成功

Mapreduce

源自於谷歌的MapReduce論文,用以進行大數據量的計算,它屏蔽了分佈式計算框架細節,將計算抽象成map和reduce兩部分。

HBASE(分佈式列存數據庫)

源自谷歌的Bigtable論文,是一個建立在HDFS之上,面向列的針對結構化的數據可伸縮,高可靠,高性能分佈式和麵向列的動態模式數據庫

zookeeper

解決分佈式環境下數據管理問題,統一命名,狀態同步,集群管理,配置同步等

yarn分佈式資源管理器

Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。

hadoop入門指南(Hello Hadoop)

YARN最初是為了修復MapReduce實現裡的明顯不足,並對可伸縮性(支持一萬個節點和二十萬個內核的集群)、可靠性和集群利用率進行了提升。YARN實現這些需求的方式是,把Job Tracker的兩個主要功能(資源管理和作業調度/監控)分成了兩個獨立的服務程序——全局的資源管理(RM)和針對每個應用的應用 Master(AM),這樣一個應用要麼是傳統意義上的MapReduce任務,要麼是任務的有向無環圖(DAG)。

YARN從某種那個意義上來說應該算做是一個雲操作系統,它負責集群的資源管理。在操作系統之上可以開發各類的應用程序,例如批處理MapReduce、流式作業Storm以及實時型服務Storm等。這些應用可以同時利用Hadoop集群的計算能力和豐富的數據存儲模型,共享同一個Hadoop 集群和駐留在集群上的數據。此外,這些新的框架還可以利用YARN的資源管理器,提供新的應用管理器實現。

YARN的核心思想 將JobTracker和TaskTacker進行分離,它由下面幾大構成組件:

a. 一個全局的資源管理器 ResourceManager

b. ResourceManager的每個節點代理 NodeManager

c. 表示每個應用的 ApplicationMaster

d. 每一個ApplicationMaster擁有多個Container在NodeManager上運行

hadoop入門指南(Hello Hadoop)

YARN的組成

相關推薦

推薦中...