細細品味大數據--初識hadoop

初識hadoop數據庫

前言

以前在學校的時候一直就想學習大數據方面的技術,包括hadoop和機器學習啊什麼的,可是歸根結底就是由於本身太懶了,致使沒有堅持多長時間,加上一直爲offer作準備,因此當時重心放在C++上面了(雖然C++也沒怎麼學),計劃在大四下有空餘時間再來慢慢學習。如今實習了,須要這方面的知識,這對於我來講,除去校招時候投遞C++職位有少量影響以外,無疑是有不少的好處。編程

因此,接下來的很長日子,我學習C++以外的不少時間都必需要花在大數據上面了。架構

那麼首先呢,先來認識一下這處理大數據的hadoop工具了。框架

簡述大數據

大數據(big data,是指沒法在可承受的時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合。機器學習

大數據的4V特色:Volume(大量)Velocity(高速)Variety(多樣)Value(價值)分佈式

大數據的價值體如今如下幾個方面:1)對大量消費者提供產品或服務的企業能夠利用大數據進行精準營銷;2) 作小而美模式的中長尾企業能夠利用大數據作服務轉型;3) 面臨互聯網壓力之下必須轉型的傳統企業須要與時俱進充分利用大數據的價值。函數

什麼是Hadoop

Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序,充分利用集羣的威力進行高速運算和存儲。工具

Hadoop的框架最核心的設計就是:HDFSMapReduceHDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了處理和計算。oop

Hadoop的核心架構

Hadoop 由許多元素構成。其最底部是 Hadoop Distributed File SystemHDFS),它存儲 Hadoop 集羣中全部存儲節點上的文件。HDFS的上一層是MapReduce 引擎,該引擎由 JobTrackers 和 TaskTrackers 組成。經過對Hadoop分佈式計算平臺最核心的分佈式文件系統HDFSMapReduce處理過程,以及數據倉庫工具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應用程序至少包含 個部分:一個 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可以自動保存數據的多個副本,而且可以自動將失敗的任務從新分配。

低成本。與一體機、商用數據倉庫以及QlikViewYonghong Z-Suite等數據集市相比,hadoop是開源的,項目的軟件成本所以會大大下降。

相關文章
相關標籤/搜索