天天看點

MapReduce&&Hadoop

高能性能計算(High Performance Computing, HPC)和網格計算(Grid Computing)組織多年以來一直在研究大規模資料處理,主要使用類似于消息傳遞接口(Message Passing Interface, MPI)的API。從廣義上講,高性能計算采用的方法是将作業分散到叢集的各台伺服器上,這些機器通路存儲區域網絡(SAN)所組成的共享檔案系統。這比較适用于計算密集型的作業,但如果節點需要通路的資料量更龐大(高達幾百GB,MapReduce開始施展他的方法),很多計算節點就會因為網絡帶寬的瓶頸問題不得步閑下來等資料。

MapReduce盡量在計算節點上存儲資料,以實作資料的本地快速通路。資料本地化(data locality)特性是MapReduc的核心特征,并是以而獲得良好的性能。意識到網絡帶寬是資料中心環境最珍貴的資源之後,MapReduce通過顯式網絡拓撲結構來保留網絡帶寬。

雖然MPI(MPI是一個跨語言的通訊協定,用于編寫并行計算機。支援點對點和廣播。MPI是一個資訊傳遞應用程式接口,包括協定和和語義說明,他們指明其如何在各種實作中發揮其特性。MPI的目标是高性能,大規模性,和可移植性)賦予程式員很大的控制權,但需要程式員顯式控制資料流機制,包括用C語言構造底層的功能模型和高層的資料分析算法。

志願計算

志願者吧自己的計算機CPU的空閑時間貢獻出來供分析無線一些需要的資料。志願計算項目将問題分成很多塊,每一塊成為一個工作單元,發到世界各地的計算機上進行分析。

MapReduce有三大目标:為隻需要短短幾分鐘或幾小時就可以完成的作業提供服務;運作于同一個内部有高速網絡連接配接的資料中心内;資料中心内的計算機都是可靠的、定制的硬體。

Hadoop項目:

Common:一系列元件和接口,用于分布式檔案系統和通用I/O(序列化、Java RPC<(Remote Procedure Call)——遠端過程調用,它是一種通過網絡從遠端計算機程式上請求服務,而不需要了解底層網絡技術的協定。RPC協定假定某些傳輸協定的存在,如TCP或UDP,為通信程式之間攜帶資訊資料。在OSI網絡通信模型中,RPC跨越了傳輸層和應用層。RPC使得開發包括網絡分布式多程式在内的應用程式更加容易。> 和持久化資料結構)

Avro:一種序列化系統,用于支援高效、跨語言的RPC和持久化資料存儲

MapReduce:分布式資料處理模型和執行環境,運作于大型商用機叢集

HDFS:分布式檔案系統,運作于大型商用機叢集

Pig:資料流語言和運作環境,用以探究非常龐大的資料集。Pig運作在MapReduce和HDFS叢集上

Hive:一種分布式的、按列存儲的資料倉庫。Hive管理HDFS中存儲的資料,并提供基于SQL的查詢語言(由運作時引擎翻譯成MapReduce作業)用以查詢資料

HBase:一種分布式的、按列存儲的資料。HBase使用HDFS作為底層存儲,同時支援MapReduce的批量式計算和點查詢(随機讀取)

ZooKeeper:一種分布式的可用性搞得協調服務。ZooKeeper提供分布式鎖之類的基本服務用于建構分布式應用

Sqoop:該工具用于在結構化資料存儲(如關系型資料庫)和HDFS之間高效批量傳輸資料

Oozie:該服務用于運作和排程Hadoop作業(如MapReduce,Pig,Hive及Sqoop作業)

将Hadoop版本更新成另外一個版本時,需要仔細考慮需要更新步驟。同時還要考慮幾個方面:API相容性、資料相容性和連接配接相容性。

API相容性:考慮使用者代碼和發行的Hadoop API之間的對比,例如Java MapReduce API。住發行版本時允許破壞API相容性的,是以使用者的程式要修改并重新編譯。次重點發行版本和單節點發行版本不應該破壞相容性。

資料相容性:考慮持久資料和中繼資料的格式,這些修改對使用者透明,因為系統更新時資料會自動遷移。系統更新路徑有一些限制,這些限制包含在發行須知中。

連接配接相容性:主要考慮通過利用RPC和HTTP這樣的連接配接協定來實作用戶端和伺服器之間的互操作性。有兩類用戶端:外部用戶端和内部用戶端。其中内部用戶端在加鎖狀态進行更新,舊版本的無法與新版本的一起工作。