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

jopen 9年前發布 | 15K 次閱讀 Hadoop 分布式/云計算/大數據
 

初識hadoop

前言

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

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

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

簡述大數據

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

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

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

什么是 Hadoop

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

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

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

Hadoop 的核心架構

Hadoop  由許多元素構成。其最底部是  Hadoop Distributed File System HDFS ),它存儲  Hadoop  集群中所有存儲節點上的文件。 HDFS 的上一層是 MapReduce  引擎,該引擎由  JobTrackers  和  TaskTrackers  組成。通過對 Hadoop 分布式計算平臺最核心的分布式文件系統 HDFS MapReduce 處理過程,以及數據倉庫工具 Hive 和分布式數據庫 Hbase 的介紹,基本涵蓋了 Hadoop 分布式平臺的所有技術核心。

HDFS

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

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

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 應用程序開發人員提供許多工具,可用于調試和性能度量等。

細細品味大數據--初識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 是開源的,項目的軟件成本因此會大大降低。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!