1. 程式人生 > >Hadoop 入門簡介

Hadoop 入門簡介

1、資料的儲存和分析    1)、磁碟儲存空間增大,讀寫速度跟不上,導致讀寫費時?     儲存裝置的容量在快速增長,每天的資料產生量也在井噴式增長,而硬碟的讀寫速度卻沒有顯著的提高,1990年一個儲存裝置可儲存1370MB的資料,讀寫速度為4.4MB/s,現在一個1T的磁碟容量很常見,但是讀寫速度只有100MB/s,讀寫一個磁碟大概需要2.5個小時,同時,寫需要的時間會更長。    答:可以使用多個磁碟並行讀寫,如:採用100個磁碟,每個磁碟儲存1%,然後進行並行讀寫,可大幅度縮短時間。為了避免儲存空間的浪費,可以在同一個儲存裝置儲存多個數據集,實現磁碟共享。
   2)、硬體故障問題?
    使用多個硬體,其中個別硬體很有可能發生故障,為了防止資料丟失,最常見的做法是複製,系統儲存資料的副本,一旦發生故障,就可以使用另外儲存的複本。     比如:冗餘磁碟陣列就是按照這個原理設計的,Hadoop的檔案系統(HDFS)也是這一類,不過採用的方式和磁碟陣列不同。
   3)、如何保證多模組資料分析的正確性?

    大部分分析任務需要以某種方式結合大部分資料來共同完成分析,即從一個磁碟讀取的資料可能要與從其他99個磁碟讀取的資料結合使用,各種分散式系統允許結合不同來源的資料進行分析,但是保證其正確性是一個很大的挑戰。MapReduce提出一個程式設計模型,該模型抽象出這些硬碟讀寫問題並轉換為對一個數據集(有鍵值對組成)的計算。這樣的計算又map和reduce兩部分組成而且只有這兩部分提供對外介面。與HDFS類似,MapReduce也有很高的可靠性。    總結:Hadoop為我們提供一個可靠的共享儲存和分析系統。HDFS實現資料的儲存,MapReduce實現資料的分析和處理。雖然Hadoop還有其他的功能,但是HDFS和Map Reduce是其核心。

2、相比與其他系統的優勢     MapReduce是一個批量查詢處理器,能夠在合理的時間內處理對真個資料集的動態查詢。    1)、為什麼不用資料庫對大量磁碟上的資料進行批量分析?為什麼需要MapReduce?
   答:這些問題的答案來自磁碟的另一個發展趨勢:定址時間的提高遠遠慢於傳輸速率的提高。定址是將磁頭移動到特定磁碟位置進行讀寫操作的過程。它是導致磁碟操作延遲的主要原因,而傳輸速率取決於磁碟的頻寬。
    如果資料訪問模式中包含大量的磁碟定址,那麼讀取大量資料集所花的時間勢必會更長(相較於流式資料讀取模式),流式讀取主要取決於傳輸速率。另一方面,如果資料庫系統只要更新一小部分,那麼傳統的B樹更有優勢(關係型資料庫中使用的一種資料結構,受限於定址的比例)。但資料庫系統更新大部分資料時,B樹的效率比MapReduce低的多,因為需要使用“排序/合併”來重建資料庫      MapReduce和關係型資料庫之間的另一個區別在於他們所操作的資料集的結構化程度。結構化資料
是具有既定格式的實體化資料,諸如xml文件或滿足特定預定義格式的資料庫表。這是RDBMS包括的內容。另一個方面,半結構化資料比較鬆散,雖然可能有格式,但經常被忽略,所以它只能用作對資料結構的一般指導。例如,一張電子表格,其結構是由單元格組成的網格,但是每個單元格自身可儲存任何形式的資料。非結構化資料沒有什麼特別的內部結構,例如純文字或影象資料。MapReduce對於非結構化或半結構化資料非常有效,因為在處理資料時才對資料進行解釋。換句話說:MapReduce輸入的鍵和值並不是資料固有的屬性,而是由分析資料的人員來選擇的。    2)、網格計算和高效能運算
  • 網格計算:網格計算即分散式計算,是一門電腦科學。它研究如何把一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然後把這些部分分配給許多計算機進行處理,最後把這些計算結果綜合起來得到最終結果。 最近的分散式計算專案已經被用於使用世界各地成千上萬志願者的計算機的閒置計算能力,通過因特網,您可以分析來自外太空的電訊號,尋找隱蔽的黑洞,並探索可能存在的外星智慧生命;您可以尋找超過1000萬位數字的梅森質數;您也可以尋找並發現對抗艾滋病毒更為有效的藥物。用以完成需要驚人的計算量的龐大專案。
  • 高效能運算:高效能運算(High performance computing, 縮寫HPC) 指通常使用很多處理器(作為單個機器的一部分)或者某一叢集中組織的幾臺計算機(作為單個計 算資源操作)的計算系統和環境。有許多型別的HPC 系統,其範圍從標準計算機的大型叢集,到高度專用的硬體。大多數基於叢集的HPC系統使用高效能網路互連,比如那些來自 InfiniBand 或 Myrinet 的網路互連。基本的網路拓撲和組織可以使用一個簡單的匯流排拓撲,在效能很高的環境中,網狀網路系統在主機之間提供較短的潛伏期,所以可改善總體網路效能和傳輸速率
  • 分散式計算: 分散式計算是利用網際網路上的計算機的 CPU 的閒置處理能力來解決大型計算問題的一種計算科學。     隨著計算機的普及,個人電腦開始進入千家萬戶。與之伴隨產生的是電腦的利用問題。越來越多的電腦處於閒置狀態,即使在開機狀態下CPU的潛力也遠遠不能被完全利用。我們可以想象,一臺家用的計算機將大多數的時間花費在“等待”上面。即便是使用者實際使用他們的計算機時,處理器依然是寂靜的消費,依然是不計其數的等待(等待輸入,但實際上並沒有做什麼)。網際網路的出現, 使得連線呼叫所有這些擁有閒置計算資源的計算機系統成為了現實。
        那麼,一些本身非常複雜的但是卻很適合於劃分為大量的更小的計算片斷的問題被提出來,然後由某個研究機構通過大量艱辛的工作開發出計算用服務端客戶端服務端負責將計算問題分成許多小的計算部分,然後把這些部分分配給許多聯網參與計算的計算機進行並行處理,最後將這些計算結果綜合起來得到最終的結果。     分散式計算意味著應用程式不再“繫結”到具體的物理系統和平臺軟體上,資料和程式是能夠在計算節點間“流動起來”的。

2、Hadoop 相關專案

3、Hadoop 社群版本優缺點

優點:

  • 完全開源免費
  • 社群活躍
  • 文件、資料詳實

缺點:

  • 複雜的版本管理。版本管理比較混亂,各種版本層出不窮,讓使用者不知所措。
  • 複雜的叢集部署、安裝、配置。通常按照叢集需要編寫大量的配置檔案,分發到每一臺節點上,容易出錯,效率低下。
  • 複雜的叢集運維。對叢集的監控,運維,需要安裝第三方的其他軟體,如ganglia,nagois等,運維難度較大。
  • 複雜的生態環境。在Hadoop生態圈中,元件的選擇、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考慮相容性的問題,版本是否相容,元件是否有衝突,編譯是否能通過等。經常會浪費大量的時間去編譯元件,解決版本衝突問題。
4、Hadoop 第三方發行版本優缺點

優點:

  • 基於Apache協議,100%開源。
  • 版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4,CDH5等,後面加上補丁版本,如CDH4.1.0 patch level 923.142,表示在原生態Apache Hadoop 0.20.2基礎上添加了1065個patch。
  • 比Apache Hadoop在相容性、安全性、穩定性上有增強。第三方發行版通常都經過了大量的測試驗證,有眾多部署例項,大量的執行到各種生產環境。
  • 版本更新快。通常情況,比如CDH每個季度會有一個update,每一年會有一個release。
  • 基於穩定版本Apache Hadoop,並應用了最新Bug修復或Feature的patch
  • 提供了部署、安裝、配置工具,大大提高了叢集部署的效率,可以在幾個小時內部署好叢集。
  • 運維簡單。提供了管理、監控、診斷、配置修改的工具,管理配置方便,定位問題快速、準確,使運維工作簡單,有效。

缺點:

  • 涉及到廠商鎖定的問題。(可以通過技術解決)
綜上所述,考慮到大資料平臺高效的部署和安裝,中心化的配置管理,使用過程中的穩定性、相容性、擴充套件性,以及未來較為簡單、高效的運維,遇到問題低廉的解決成本。建議使用第三方發行版本。其中在第三發發行版中,國內應用較多的是Cloudera的CDH。 v