Hadoop生態圈各個組件簡介


Hadoop是一個能夠對大量數據進行分布式處理的軟件框架。具有可靠、高效、可伸縮的特點。

Hadoop的核心是HDFS和MapReduce,HDFS還包括YARN。

1.HDFS(hadoop分布式文件系統)

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

client:切分文件,訪問HDFS,與之交互,獲取文件位置信息,與DataNode交互,讀取和寫入數據。

namenode:master節點,在hadoop1.x中只有一個,管理HDFS的名稱空間和數據塊映射信息,配置副本策略,處理客戶端請求。

DataNode:slave節點,存儲實際的數據,匯報存儲信息給namenode.

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

2.mapreduce(分布式計算框架)

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

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

tacktracker:slave節點,運行map task和reducetask;並與jobtracker交互,匯報任務狀態。

map task:解析每條數據記錄,傳遞給用戶編寫的map()執行,將輸出結果寫入到本地磁盤(如果為map-only作業,則直接寫入HDFS)。

reduce task:從map的執行結果中,遠程讀取輸入數據,對數據進行排序,將數據分組傳遞給用戶編寫的reduce函數執行。

3.hive(基於hadoop的數據倉庫)

由Facebook開源,最初用於解決海量結構化的日志數據統計問題。

hive定位於一種類似SQL的查詢語言(hql)將SQL轉化為MapReduce任務在hadoop上執行。

4.HBASE(分布式列存數據庫)

hbase是一個針對結構化數據的可伸縮,高可靠,高性能,分布式和面向列的動態模式數據庫。和傳統關系型數據庫不同,hbase采用了bigtable的數據模型:增強了系數排序映射表(key/value)。其中,鍵由行關鍵字,列關鍵字和時間戳構成,hbase提供了對大規模數據的隨機,實時讀寫訪問,同時,hbase中保存的數據可以使用mapreduce來處理,它將數據存儲和並行計算完美地結合在一起。

5.zookeeper(分布式協作服務)

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

6.sqoop(數據同步工具)

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

數據的導入和導出本質上是mapreduce程序,充分利用了MR的並行化和容錯性。

7.pig(基於hadoop的數據流系統)

定義了一種數據流語言-pig latin,將腳本轉換為mapreduce任務在hadoop上執行。通常用於離線分析。

8.mahout(數據挖掘算法庫)

mahout的主要目標是創建一些可擴展的機器學習領域經典算法的實現,旨在幫助開發人員更加方便快捷的創建應用程序。mahout現在已經包含了聚類,分類,推薦引擎(協同過濾)和頻繁集挖掘等廣泛使用的數據挖掘方法。除了算法是,mahout還包含了數據的輸入/輸出工具,與其他存儲系統如數據庫,(mongoDB或Cassandra)集成等數據挖掘支持架構。

9.flume(日志收集工具)

cloudera開源的日志收集系統,具有分布式,高可靠,高容錯,易於定制和擴展的特點。它將數據從產生,傳輸,處理並寫入目標的路徑的過程抽象為數據流,在具體的數據流中,數據源支持在flume中定制數據發送方,從而支持收集各種不同協議數據。

10.資源管理器的簡單介紹(YARN和MESOS)

隨着互聯網的高速發展,基於數據密集型應用的計算框架不斷出現,從支持離線處理的mapreduce,到支持在線處理的storm,從迭代式計算框架到流式處理框架s4,在大部分互聯網公司中,這幾種框架可能都會采用,比如對於搜索引擎公司,可能的技術方法如下:網頁建索引采用mapreduce框架,自然語言處理/數據挖掘采用spark,對性能要求到的數據數據挖掘算法用MPI等。

一般將所有的這些框架部署到一個公共的集群中,讓它們共享集群的資源,並對資源進行統一使用,這樣便誕生了資源統一管理與調度平台,典型的代表是yarn和mesos.

11.其他的開源組件

1)cloudrea impala 一個開源的查詢引擎。與hive相同的元數據,SQL語法,ODBC驅動程序和用戶接口,可以直接在HDFS上提供快速,交互式SQL查詢。impala不在使用緩慢的hive+MapReduce批處理,而是通過與商用並行關系數據庫中類似的分布式查詢引擎。可以直接從HDFS或者hbase中用select,join和統計函數查詢數據,從而大大降低延遲。

2)spark:

spark是個開源的數據分析集群計算框架,與hadoop一樣,用於構建大規模,延遲低的數據分析應用。spark采用scala語言實現,使用scala作為應用框架。

spark采用基於內存的分布式數據集,優化了迭代式的工作負載以及交互式查詢。

與Hadoop不同的是,spark與scala緊密集成,scala像管理本地collective對象那樣管理分布式數據集。spark支持分布式數據集上的迭代式任務,實際上可以在hadoop文件系統上與hadoop一起運行(通過YARN,MESOS等實現)

3)storm

storm是一個分布式的,容錯的計算系統,storm屬於流處理平台,多用於實時計算並更新數據庫。storm也可被用於連續計算,對數據流做連續查詢,在計算時將結果以流的形式輸出給用戶。它還可用於“分布式RPC”,以並行的方式運行昂貴的運算。

4)kafka

一個開源流處理平台,由scala和java編寫。kafka是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模的網站中的所有動作流數據。這種動作(網頁瀏覽,搜索和其他用戶的行動)是在現代網絡上的許多社會功能的一個關鍵因素。這些數據通常是由於吞吐量的要求而通過處理日志和日志聚合來解決。對於像hadoop的一樣的日志數據和離線分析系統,但又要求實時處理的限制,這是一個可行的解決方案。kafka的目的是通過HADOOP的並行加載機制來統一線上和離線的消息處理,也是為了通過集群來提供實時的消息。

5)Redis

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日志型、key-value數據庫,並提供多種語言的API。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM