Apache-Hadoop簡介

一、Hadoop出現的原因

現在的我們,生活在數據大爆炸的年代。國際數據公司已經預測在2020年,全球的數據總量將達到44ZB,經過單位換算後,至少在440億TB以上,也就是說,全球每人一塊1TB的硬盤都存儲不下。

一些數據集的大小更遠遠超過了1TB,也就是說,數據的存儲是一個要解決的問題。同時,硬盤技術也面臨一個技術瓶頸,就是硬盤的傳輸速度(讀數據的速度)的提升遠遠低於硬盤容量的提升。我們看下面這個表格:

硬盤瓶頸比較

可以看到,容量提升了將近1000倍,而傳輸速度才提升了20倍,讀完一個硬盤的所需要的時間相對來說,更長更久了(已經違反了數據價值的即時性)。讀數據都花了這麼長時間,更不用說寫數據了。

對於如何提高讀取數據的效率,我們已經想到解決的方法了,那就是將一個數據集存儲到多個硬盤裏,然後並行讀取。比如1T的數據,我們平均100份存儲到100個1TB硬盤上,同時讀取,那麼讀取完整個數據集的時間用不上兩分鐘。至於硬盤剩下的99%的容量,我們可以用來存儲其他的數據集,這樣就不會產生浪費。解決讀取效率問題的同時,我們也解決了大數據的存儲問題。

但是,我們同時對多個硬盤進行讀/寫操作時,又有了新的問題需要解決:

1、硬件故障問題。一旦使用多個硬件,相對來說,個別硬件產生故障的機率就高,爲了避免數據丟失,最常見的做法就是複製(replication):文件系統保存數據的多個複本,一旦發生故障,就可以使用另外的複本。

2、讀取數據的正確性問題。大數據時代的一個分析任務,就需要結合大部分數據來共同完成分析,因此從一個硬盤上讀取的數據要與從其他99個硬盤上讀取的數據結合起來使用。那麼,在讀取過程中,如何保證數據的正確性,就是一個很大的挑戰。

有人會想,既然使用了多個硬盤,爲什麼不用配有多個硬盤的關係型數據庫來進行數據的存儲和分析呢?其實,這個主要取決於硬盤發展的一個技術限制,那就是需要尋址操作。我們從關係型數據庫中讀取數據包含着大量的尋址操作,那麼尋址所產生的時間開銷必然會大大的增加,再加上讀取數據的時間,就更加漫長了。還有一個原因,關係型數據庫不適合存儲半結構化和非結構化的數據,而這個時代,半結構化和非結構化的數據佔90%,而結構化數據只佔10%。

針對於上述幾個問題,Hadoop爲我們提供了一個可靠的且可擴展的存儲和分析平臺,此外,由於Hadoop運行在商用硬件上且是開源的,因此Hadoop的使用成本是比較低了,在用戶的承受範圍內。

二、Hadoop的簡介

Hadoop是Apache基金會旗下的一個開源的分佈式計算平臺,是基於Java語言開發的,有很好的跨平臺特性,並且可以部署在廉價的計算機集羣中。用戶無需瞭解分佈式底層細節,就可以開發分佈式程序,充分利用集羣的威力進行高速運算和存儲。

最初,Hadoop的核心技術是HDFS和MapReduce。

HDFS是Hadoop分佈式文件系統(Hadoop Distributed File System)的簡稱,它具有較高的讀寫速度,很好的容錯性和可伸縮性,爲海量的數據提供了分佈式存儲,其冗餘數據存儲的方式很好的保證了數據的安全性。

MapReduce是一種用於並行處理大數據集的軟件框架(編程模型)。用戶可在無需瞭解底層細節的情況下,編寫MapReduce程序進行分析和處理分佈式文件系統上的數據,MapReduce保證了分析和處理數據的高效性。

因其在分佈式環境下提供了高效的,海量的數據的優秀處理能力,Hadoop被公認爲大數據行業中的標準開源軟件。幾乎所有主流的廠商如谷歌,雅虎,微軟,淘寶等等這樣的大公司都是圍繞Hadoop進行提供開發工具,開源軟件,商業化工具或技術服務的。

在Hadoop2.0以後,又引入了另一個核心技術:YARN(Yet Another Resource Negotiator)。它是一個任務調度和集羣資源管理系統,主要有兩類長期運行的守護線程來提供自己的核心服務:一類是用於管理集羣上資源使用的資源管理器(Resouce Manager),另一類是運行在集羣中各個節點上且能夠啓動和監控容器(container)的節點管理器(Node Manager)。

發展到現在的Hadoop3.x可以概括成以下五個模塊:

  • Hadoop Common:由原來的Hadoop core更名而來。以前的版本中core包含HDFS、MapReduce及其其他公共部分。後來HDFS和MapReuce被分離出來作爲獨立的子項目,剩下的公共部分更名爲Common。主要包括系統配置工具Configuration、遠程過程調用RPC、序列化機制和Hadoop抽象文件系統FileSystem等。它們爲在通用硬件上搭建雲計算環境提供基本的服務,併爲運行在該平臺上的軟件開發提供了所需的API。
  • Hadoop HDFS:Hadoop的核心技術之一,分佈式文件系統
  • Hadoop YARN:Hadoop2.0以後新增的一個核心技術,資源管理系統
  • Hadoop MapReduce:Hadoop的核心技術之一,編程模型,用於大規模數據集的並行計算。
  • Hadoop Ozone:HDFS的一個擴展方向,對象存儲技術。

關於Hadoop這個名字的由來,該項目的創建者Doug Cutting是這樣解釋的:“這個名字是我孩子給一個棕黃色的大象玩具命名的。我的命名標準就是簡短,容易發音和拼寫,沒有太多的意義,並且不會被用於別處。小孩子恰恰是這方面的高手。”

Hadoop的發音是 [hædu:p]。

三、Apache Hadoop發展史

Hadoop由知名項目Apache Lucene的創始人道格·卡丁(doug Cutting)創建。

  • 它起源於Apache Nutch 項目(一個網頁爬取工具和搜索引擎系統,後來遇到大數據量的網頁存儲問題)。
  • 2003年,谷歌發表的一篇論文(描述的是“谷歌分佈式文件系統”,簡稱GFS)給了Apache Nutch項目的開發者靈感。
  • 2004年,Nutch的開發者開始着手 NDFS(Nutch的分佈式文件系統)。
  • 2004年 ,谷歌又發表了一篇介紹MapReduce系統的論文。
  • 2005年,Nutch項目實現了一個MapReduce系統
  • 2006年,開發人員將NDFS和MapReduce移出Nutch項目形成一個子項目,命名Hadoop
  • 2008年,Hadoop已稱爲Apache的頂級項目。
  • 2008年4月,Hadoop打破世界記錄,成爲最快排序1TB數據的系統,排序時間爲209秒
  • 2009年,Hadoop把1TB數據的排序時間縮短到62秒。
  • 從此名聲大噪,現在很多公司都在使用,如雅虎,last.fm,FaceBook,《紐約時報》等等
  • 目前Hadoop的版本發展,hadoop1.x > hadoop2.x > hadoop3.x

四、Hadoop的特點

Hadoop因爲是基於Java語言開發的,因此最理想的運行平臺就是Linux系統了。它也支持多種編程語言,如C++,PHP等等。

也可以總結出以下優點:

  • 高可靠型。Hadoop按位存儲和處理數據的能力值得人們信賴。
  • 高效性。Hadoop能夠在節點之間動態地移動數據,並保證各個節點的動態平衡,因此處理速度非常快,可以處理PB級數據。
  • 高可擴展性。Hadoop的設計目標是可以高效的穩定的運行在廉價的計算機集羣上,可以擴展到數以千計的計算機節點。
  • 高容錯性。採用冗餘數據存儲方式,自動保存數據的多個複本,並且能夠自動將失敗的任務進行重新分配
  • 成本低。Hadoop採用廉價的計算機集羣,成本比較低,普通用戶也可以使用自己的電腦來搭建Hadoop環境
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章