hadoop權威指南筆記之初識hadoop

1.大數據時代來臨,要解決兩個問題,一個是海量數據的存儲,一個是對海量數據的分析。

a.目前數據存儲的問題:存儲工具的容量在不斷加大,但是讀寫的速度卻沒有隨之響應的增加。
解決方案是增加並行,也就是把數據存儲到多個硬盤上,這時數據的備份就尤爲重要,raid就是解決這個問題的方案。
b.數據分析:如果數據散落在100個硬盤上,那麼數據的分析首先要將這100個硬盤上的數據進行整合。


2.關係型數據庫?mapreduce?
a.數據的存儲性能問題,主要有兩個地方,一個是存儲讀取的效率,一個是傳輸的效率。存儲的效率是seeking尋址效率,而傳輸的瓶頸在帶寬。

b.關係型數據庫與mapreduce的對比:


 
      規範性 規範(normalized)(完整無冗餘)不規範
注:名稱解釋
結構化數據:(structured data )具有既定格式的實體化數據,如xml文檔或滿足特定預定義格式的數據庫表
半結構化數據:(semi-strutured data)有格式但比較鬆散經常被忽略,它常用作對數據結構的一般指導 如一張電子表格,其機構由單元格組成,但是每個單元格里存的內容是任意的,沒作約定
非結構化數據:(unstructured data) 沒有什麼特別的內部結構,如純文本或圖像數據。如web服務器日誌。
mapreduce 支持半結構化數據和非結構化數據。關係型數據庫支持結構化數據。


c.hadoop是流式讀取模式,流式讀取模式的瓶頸在傳輸效率。而關係型數據庫的讀取含大量seeking,B-tree就是這種減少尋址的機構
3.網格計算:
名稱解釋:
高性能計算(High Performance computing,hpc)計算散落在多臺空置計算機上,計算密集,但數據量大會因網絡帶寬而引起瓶頸,
網格計算(grid computing)
消息傳遞接口(message passing interface,mpi)
mapreduce:跟高性能計算的區別在於,數據會存儲在節點上,本地計算然後在傳輸
數據本地化(data locality)

mapreduce 和mpi的區別在於,mpi要求程序員顯式的控制數據流機制,包括通過C語言構造低層次的功能模塊和高層次的數據分析算法。而mapreduce則在更高的層次上執行任務,即程序員僅從鍵值對函數的角度考慮任務的執行,數據量是隱含的透明的。


hadoop 的用途 :數據挖掘 分析  、web日誌分析、廣告優化、半結構化和非結構化數據分析。

下圖爲hadoop生態系統圖。



 

 

1.  Hadoop Common:就是原來的Hadoop Core,它是一系列分佈式文件系統和通用I/O 的組件和接口。是整個Hadoop項目的核心,其他Hadoop子項目都是在Hadoop Common的基礎上發展起來的。

2.  Avro:一種提供高效、跨語言RPC 的數據序列系統,持久化數據存儲。

3.  ZooKeeper:一個分佈式的、高可用性的協調服務。用於解決分佈式系統中一致性問題,是Chubby的開源實現。

4.  HBase:是一個開源的、基於列存儲模型的分佈式數據庫,是Bigtable 的開源實現。HBase 使用HDFS 作爲底層存儲,同時支持MapReduce的批量式計算和點查詢(隨機讀取)。

5.  HDFS:提供高吞吐量的分佈式文件系統,是GFS 的開源實現。HDFS 是分佈式計算的存儲基礎。HDFS具有高容錯性,可以部署在廉價的硬件設備上,適合那些有大數據集的應用,並且提供對數據讀寫的高吞吐量。HDFS能夠提供對數據的可擴展訪問,通過簡單地往集羣裏添加節點就可以解決大量客戶端同時訪問的問題。HDFS支持傳統的層次文件組織結構,同現有的一些文件系統類似,如可以對文件進行創建、刪除、重命名等操作。

6.  MapReduce:大型數據的分佈式處理模型,以在大型集羣上執行分佈式應用的簡單性和可用性著稱。Hadoop的MapReduce是Google的MapReduce的開源實現。MapReduce是一種簡化的並行計算模型,由Map和 Reduce組成,分別進行任務的分解和對結果的彙總。

7.  Hive:是一種提供數據摘要和查詢功能的分佈式數據倉庫,管理HDFS中存儲的數據。Hive支持的查詢是類似SQL方式的陳述語言:HiveQL ,這種查詢被編譯進MapReduce的job用以Hadoop的執行。

8.  Pig:是在MapReduce上構建的一種高級的數據流語言,用以檢索非常大的數據集,它是Sawzall的開源實現。Sawzall是一種建立在 MapReduce基礎上的領域語言,它的程序控制結構(如 if、while 等)與C語言無異,但它的領域語言語義使它完成相同功能的代碼比MapReduce的C++代碼簡潔。

9.  Chukwa:一個用來管理大型分佈式系統的數據採集系統。Chukwa 運行HDFS 中存儲數據的收集器,它使用MapReduce來生成報告。




























發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章