天天看點

Hadoop 曆史 簡介 特點 架構Hadoop

Hadoop

Hadoop 曆史 簡介 特點 架構Hadoop

hadoop官網戳這裡

發展曆史

Apache Hadoop 為可靠的,可擴充的分布式計算開發開源軟體。 Apache Hadoop軟體庫是一個框 架,它允許使用簡單的程式設計模型跨計算機群集分布式處理大型資料集(海量的資料)。 包括這些子產品:

  • Hadoop Common:支援其他Hadoop子產品的常用工具。
  • Hadoop分布式檔案系統(HDFS™):一種分布式檔案系統,可提供對應用程式資料的高吞吐量訪 問。
  • Hadoop YARN:作業排程和叢集資源管理的架構。
  • Hadoop MapReduce:一種用于并行處理大型資料集的基于YARN的系統。

上述每個子產品有自己獨立的功能,而子產品之間又有互相的關聯。

廣義上來說,HADOOP通常是指一個更廣泛的概念——HADOOP生态圈

産生背景

 雛形開始于2002年的Apache的Nutch,Nutch是一個開源Java 實作的搜尋引擎。它提供了我們運作自 己的搜尋引擎所需的全部工具。包括全文搜尋和Web爬蟲。Nutch的設計目标是建構一個大型的全網搜 索引擎,包括網頁抓取、索引、查詢等功能,但随着抓取網頁數量的增加,遇到了嚴重的可擴充性問 題--------“如何解決數十億網頁的存儲和索引問題”。 

  • 2003年Google發表了一篇技術學術論文谷歌檔案系統(GFS)。GFS也就是google File System, google公司為了存儲海量搜尋資料而設計的專用檔案系統。 
  • 2004年Nutch創始人Doug Cutting基于Google的GFS論文實作了分布式檔案存儲系統名為NDFS。

ps:2003-2004年,Google公開了部分GFS和Mapreduce思想的細節,以此為基礎Doug Cutting等人用 了2年業餘時間實作了DFS和Mapreduce機制,一個微縮版:Nutch 

  • 2004年Google又發表了一篇技術學術論文MapReduce。MapReduce是一種程式設計模型,用于大規模數 據集(大于1TB)的并行分析運算。
  • 2005年Doug Cutting又基于MapReduce,在Nutch搜尋引擎實作了該功能。 

Hadoop三大發行版本:Apache、Cloudera、Hortonworks。

Apache版本最原始(最基礎)的版本,對于入門學習最好。

Cloudera在大型網際網路企業中用的較多。

Hortonworks文檔較好。 

Hadoop特點

優勢

高可靠性:Hadoop底層維護多個資料副本,是以即使Hadoop某個計算元素出現問題或存儲出現故障,也不 會導緻資料的丢失

高擴充性:在叢集間配置設定任務資料,可友善的擴充數以千計的節點

高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任務處理的速度

高容錯性:能夠自動将失敗的任務重新配置設定 

劣勢

不适合低延遲資料通路

無法高效存儲大量小檔案

不支援多使用者寫入及任意修改檔案

Hadoop架構圖

Hadoop 曆史 簡介 特點 架構Hadoop

上圖中涉及到的技術名詞解釋如下:

Sqoop

sqoop 是一款開源的工具,主要用于在 Hadoop(Hive)與傳統的資料庫(mysql)間進 行資料的傳遞,可以将一個關系型資料庫(例如 : MySQL ,Oracle 等)中的資料導進到 Hadoop 的 HDFS 中,也可以将 HDFS 的資料導進到關系型資料庫中。

Flume

Flume 是 Cloudera 提供的一個高可用的,高可靠的,分布式的海量日志采集、聚 合和傳輸的系統,Flume 支援在日志系統中定制各類資料發送方,用于收集資料;同時,Flume 提供對資料進行簡單處理,并寫到各種資料接受方(可定制)的能力。

Kafka

Kafka 是一種高吞吐量的分布式釋出訂閱消息系統,有如下特性: 

(1)通過 O(1)的磁盤資料結構提供消息的持久化,這種結構對于即使數以 TB 的消息 存儲也能夠保持長 時間的穩定性能。

(2)高吞吐量:即使是非常普通的硬體 Kafka 也可以支援每秒數百萬的消息

(3)支援通過 Kafka 伺服器和 消費機叢集來分區消息。 (4)支援 Hadoop 并行資料加載。 

Storm

Storm 為分布式實時計算提供了一組通用原語,可被用于“流處理”之中,實時 處理消息并更新資料庫。這是管理隊列及工作者叢集的另一種方式。 Storm 也可被用于“連 續計算”(continuous computation),對資料流做連續查詢,在計算時就将結果以流的形式 

輸出給使用者

Spark

Spark 是目前最流行的開源大資料記憶體計算架構。可以基于 Hadoop 上存儲的大資料進行計 算。

Oozie

Oozie 是一個管理 Hdoop 作業(job)的工作流程排程管理系統。Oozie 協調作業 就是通過時間(頻率)和有效資料觸發目前的 Oozie 工作流程。

Hbase

HBase 是一個分布式的、面向列的開源資料庫。HBase 不同于一般的關系資料庫, 它是一個适合于非結構化資料存儲的資料庫。

Hive

hive 是基于 Hadoop 的一個資料倉庫工具,可以将結構化的資料檔案映射為一張 資料庫表,并提供簡單的 sql 查詢功能,可以将 sql 語句轉換為 MapReduce 任務進行運作。 其優點是學習成本低,可以通過類 SQL 語句快速實作簡單的 MapReduce 統計,不必開發專 門的 MapReduce 應用,十分适合資料倉庫的統計分析。

Mahout

Apache Mahout是個可擴充的機器學習和資料挖掘庫,目前Mahout支援主要的4個用 例:  推薦挖掘:搜集使用者動作并以此給使用者推薦可能喜歡的事物。 聚集:收集檔案并進行相關檔案分組。 分 類:從現有的分類文檔中學習,尋找文檔中的相似特征,并為無标簽的文檔進行正确 的歸類。 頻繁項集挖掘:将一組項分組,并識别哪些個别項會經常一起出現。 

ZooKeeper

Zookeeper 是 Google 的 Chubby 一個開源的實作。它是一個針對大型分布 式系統的可靠協調系統,提供的功能包括:配置維護、名字服務、 分布式同步、組服務等。 ZooKeeper 的目标就是封裝好複雜易出錯的關鍵服務,将簡單易用的接口和性能高效、功能 穩定的系統提供給使用者。 

繼續閱讀