細細品味大資料--初識hadoop

來源:互聯網
上載者:User

標籤:

初識hadoop

前言

之前在學校的時候一直就想學習大資料方面的技術,包括hadoop和機器學習啊什麼的,但是歸根結底就是因為自己太懶了,導致沒有堅持多長時間,加上一直為offer做準備,所以當時重心放在C++上面了(雖然C++也沒怎麼學),計劃在大四下有空餘時間再來慢慢學習。現在實習了,需要這方面的知識,這對於我來說,除去校招時候投遞C++職位有少許影響之外,無疑是有很多的好處。

所以,接下來的很長日子,我學習C++之外的很多時間都必須要花在大資料上面了。

那麼首先呢,先來認識一下這處理大資料的hadoop工具了。

簡述大資料

大資料(big data),是指無法在可承受的時間範圍內用常規軟體工具進行捕捉、管理和處理的資料集合。

大資料的4V特點:Volume(大量)、Velocity(高速)、Variety(多樣)、Value(價值)。

大資料的價值體現在以下幾個方面:1)對大量消費者提供產品或服務的企業可以利用大資料進行精準營銷;2) 做小而美模式的中長尾企業可以利用大資料做服務轉型;3) 面臨互連網壓力之下必須轉型的傳統企業需要與時俱進充分利用大資料的價值。

什麼是Hadoop?

Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。使用者可以在不瞭解分布式底層細節的情況下,開發分布式程式,充分利用叢集的威力進行高速運算和儲存。

Hadoop的架構最核心的設計就是:HDFS和MapReduce。HDFS為海量的資料提供了儲存,則MapReduce為海量的資料提供了處理和計算。

Hadoop的核心架構

Hadoop 由許多元素構成。其最底部是 Hadoop Distributed File System(HDFS),它儲存 Hadoop 叢集中所有儲存節點上的檔案。HDFS的上一層是MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。通過對Hadoop分散式運算平台最核心的Distributed File SystemHDFS、MapReduce處理過程,以及資料倉儲工具Hive和分散式資料庫Hbase的介紹,基本涵蓋了Hadoop分布式平台的所有技術核心。

HDFS

對外部客戶機而言,HDFS就像一個傳統的分級檔案系統。它的主要目的是支援以流的形式訪問寫入的大型檔案(PB層級)。可以建立、刪除、移動或重新命名檔案,等等。儲存在 HDFS 中的檔案被分成塊,塊的大小(通常為 64MB)和複製的塊數量在建立檔案時由客戶機決定。但是 HDFS 的架構是基於一組特定的節點構建的,這是由它自身的特點決定的。這些節點包括NameNode(僅一個)和DataNode。

NameNode在 HDFS 內部提供中繼資料服務,它負責管理檔案系統名稱空間和控制外部客戶機的訪問。NameNode 決定是否將檔案對應到 DataNode 上的複製塊上。NameNode 在一個稱為 FsImage 的檔案中儲存所有關於檔案系統名稱空間的資訊。這個檔案和一個包含所有事務的記錄檔案(這裡是 EditLog)將儲存在 NameNode 的本地檔案系統上。FsImage 和 EditLog 檔案也需要複製副本,以防檔案損壞或 NameNode 系統丟失。

DataNode為 HDFS 提供儲存塊, 通常以機架的形式組織,機架通過一個交換器將所有系統串連起來。DataNode 響應來自 HDFS 客戶機的讀寫請求。它們還響應來自 NameNode 的建立、刪除和複製塊的命令。NameNode 依賴來自每個 DataNode 的定期心跳(heartbeat)訊息。每條訊息都包含一個塊報告,NameNode 可以根據這個報告驗證區塊對應和其他檔案系統中繼資料。如果 DataNode 不能發送心跳訊息,NameNode 將採取修複措施,重新複製在該節點上丟失的塊。

MapReduce

最簡單的 MapReduce應用程式至少包含 3 個部分:一個 Map 函數、一個 Reduce 函數和一個 main 函數。main 函數將作業控制和檔案輸入/輸出結合起來。在這點上,Hadoop 提供了大量的介面和抽象類別,從而為 Hadoop應用程式開發人員提供許多工具,可用於調試和效能度量等。

MapReduce 本身就是用於平行處理大資料集的軟體架構。MapReduce 的根源是函數型編程中的 map 和 reduce 函數。它由兩個可能包含有許多執行個體(許多 Map 和 Reduce)的操作組成。Map 函數接受一組資料並將其轉換為一個鍵/值對(key-value)列表,輸入欄位中的每個元素對應一個鍵/值對。Reduce 函數接受 Map 函數產生的列表,然後根據它們的鍵縮小鍵/值對列表(即鍵相同的鍵/值對合并在一起形成一個列表形式)。

一個代表客戶機在單個主系統上啟動的 MapReduce應用程式稱為 JobTracker。類似於 NameNode,它是 Hadoop 叢集中惟一負責控制 MapReduce應用程式的系統。在應用程式提交之後,將提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 使用檔案塊資訊(物理量和位置)確定如何建立其他 TaskTracker 從屬任務。MapReduce應用程式被複製到每個出現輸入檔案塊的節點。將為特定節點上的每個檔案塊建立一個惟一的從屬任務。每個 TaskTracker 將狀態和完成資訊報告給 JobTracker。

Hadoop有什麼優勢?

Hadoop是一個能夠對大量資料進行分散式處理的軟體架構。 Hadoop 以一種可靠、高效、可伸縮的方式進行資料處理。

Hadoop 是可靠的,因為它假設計算元素和儲存會失敗,因此它維護多個工作資料副本,確保能夠針對失敗的節點重新分布處理。

Hadoop 是高效的,因為它以並行的方式工作,通過平行處理加快處理速度。

Hadoop 還是可伸縮的,能夠處理 PB 級資料。

總結如下:

高可靠性。Hadoop按位儲存和處理資料的能力值得人們信賴。

高擴充性。Hadoop是在可用的電腦集簇間分配資料並完成計算任務的,這些集簇可以方便地擴充到數以千計的節點中。

高效性。Hadoop能夠在節點之間動態地移動資料,並保證各個節點的動態平衡,因此處理速度非常快。

高容錯性。Hadoop能夠自動儲存資料的多個副本,並且能夠自動將失敗的任務重新分配。

低成本。與一體機、商用資料倉儲以及QlikView、Yonghong Z-Suite等資料集市相比,hadoop是開源的,項目的軟體成本因此會大大降低。

 

細細品味大資料--初識hadoop

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.