hadoop技術探索之一

接觸hadoop技術近兩年,因hadoop技術棧龐大而複雜,故而想整理一些知識供日後使用。

一、什麼是hadoop?

hadoop是apache開源的一款可靠的、可擴展的軟件系統,提供分佈式計算。用戶不必瞭解hadoop底層基礎,就可以利用hadoop實現分佈式開發,從而充分利用計算機資源。

hadoop軟件庫是一個框架,它允許使用簡單的編程模型,在計算機集羣上對大型數據集進行分佈式處理。它被設計成可以從單一服務擴展成擁有數千臺機器的集羣,每臺機器都提供自己的計算和存儲能力。它不是依靠硬件來提供高可用,而是被設計成檢查和處理應用層故障,以此實現在計算機集羣上提供高可用,而其中每臺計算機都有可能出現故障。

二、hadoop起源

hadoop源於google公佈的三篇論文,即GFS、Mapreduce、BigTable,hadoop技術創始人Doug Cutting等人受到這三篇論文啓發,進而開發出DFS、hadoop MapReduce。開始hadoop作爲apache nutch項目的一部分,後來獨立出來,逐漸發展成爲如今這麼龐大的技術羣體。

三、核心組件

hadoop技術包括以下幾個核心部件:

hadoop-common:爲其它hadoop模塊提供通用的工具集。

hadoop distributed file system(HDFS):分佈式文件系統,提供高吞吐量訪問應用數據。

hadoop yarn:作業調度及hadoop集羣資源管理框架。

hadoop mapreduce:一個基於yarn的並行處理大型數據集的系統。

四、其它關聯項目

Alluxio:一個基於內存的分佈式文件系統,介於傳統的底層分佈式文件系統和上層計算框架之間。

Ambari:一個管理、監控hadoop集羣的web工具。可以提供應用部署、配置管理、狀態監控、指標展示等功能。

Avro:一種數據序列化系統。

Cassandra:一個多主機數據庫,沒有單一幾點故障。

Chukwa:大型分佈式系統的數據採集系統。

Flume:一款高可用的、可靠的海量數據採集、聚合、傳輸系統。

haproxy:基於tcp及http的反向代理服務,多用於master的負載均衡。

HBase:一個可擴展的分佈式數據庫。

Hive:數據倉庫基礎部件。

Hue:一個開源的查詢web工具,用於瀏覽、可視化、和查詢數據,重點是sql和搜索。

Impala:爲存儲在hadoop集羣上的PT級的數據提供快速的、分佈式的sql查詢。它是一個現代的、大規模分佈的、大規模並行的、C++的查詢引擎,它能夠讓你對各種各樣的數據源進行分析、轉換和合並數據。

Kafka:kafka被用於構建實時的數據管道和數據流應用。它是可橫向擴展的、可容錯的、快速的,能夠運行在上千臺計算機的生產環境中。

knox:是apache hadoop生態圈的rest api及應用網關。爲hadoop集羣所有的rest及http交互提供單一的入口。提供了代理服務、認證服務、客戶端服務。

kylin:分佈式的分析引擎,提供hadoop之上的sql查詢及多維分析能力。

Mahout:一個可擴展的機器學習及數據挖掘庫。

Pig:一個用於並行計算的高級數據流語言和執行框架。

sentry:sentry是一個對hadoop集羣上的數據及元數據進行細粒度的角色授權的系統服務。

slider:slider是用於在yarn集羣上部署分佈式應用,監控這些應用,並使它們按照預期變大或變小,即使是這些應用還在運行過程中。

Spark:一個快速的通用的hadoop數據計算引擎。提供簡單而有表現力的編程模型,具有廣泛的應用,包括ETL、機器學習、流處理和圖計算。

Tez:一款基於hadoop yarn的通用的數據流處理引擎。它爲任意的DAG任務提供強大的零活的執行引擎,包括批處理和交互式處理任務。Tez被Hive、Pig及hadoop生態圈中其它框架、甚至一些商業軟件(例如一些ETL工具)引用,用來替代hadoop的MapReduce作爲線下執行引擎。

Zookeeper:一個高性能的分佈式應用協同服務。

五、hadoop生態系統


六、jdk版本依賴

hadoop2.7.x版本依賴jdk7以上,包括openJDK及Oracle java。hadoop2.6.x及以前的版本依賴於jdk6。hadoop3.0版本依賴於jdk8。

七、流行發行版本

目前使用的hadoop版本,基本上有三種,即apache發行版本的hadoop,CDH版本的hadoop及HDP版本的hadoop。



發佈了33 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章