細細品味大資料 初識hadoop

2022-05-01 05:15:08 字數 4081 閱讀 3432

初識hadoop

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

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

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

大資料(big data

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

大資料的4v

特點:volume

(大量)、

velocity

(高速)、

variety

(多樣)、

value

(價值)。

大資料的價值體現在以下幾個方面:1)

對大量消費者提供產品或服務的企業可以利用大資料進行精準營銷

;2) 

做小而美模式的中長尾企業可以利用大資料做服務轉型

;3) 

面臨網際網路壓力之下必須轉型的傳統企業需要與時俱進充分利用大資料的價值。

hadoop是乙個由apache

**會所開發的分布式系統基礎架構。使用者可以在不了解分布式底層細節的情況下,開發分布式程式,充分利用集群的威力進行高速運算和儲存。

hadoop的框架最核心的設計就是:

hdfs

和mapreduce

。hdfs

為海量的資料提供了儲存,則

mapreduce

為海量的資料提供了處理和計算。

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。

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 還是可伸縮的,能夠處理 pb 級資料。

總結如下:

高可靠性。hadoop

按位儲存和處理資料的能力值得人們信賴。

高擴充套件性。hadoop

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

高效性。hadoop

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

高容錯性。hadoop

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

低成本。與一體機、商用資料倉儲以及qlikview

、yonghong z-suite

等資料集市相比,

hadoop

是開源的,專案的軟體成本因此會大大降低。

細細品味C Socket程式設計專題

什麼是socket?所謂socket通常也稱作 套接字 應用程式通常通過 套接字 向網路發出請求或者應答網路請求。socket用於在兩個基於tcp ip協議的應用程式之間相互通訊。最早出現在unix系統中,是unix系統主要的資訊傳遞方式。在windows系統中,socket稱為winsock。兩個...

細細品味PHP程式的演算法

在一般的應用中,php的程式設計師會比較少的注意到php程式的細微演算法對效能影響的問題,但在處理一些比較占用資源的東西的時候,適當調整演算法,會讓程式的效能整倍的提高。這幾天,我在研究分詞的演算法,如果不預先載入詞典的話,那種運算速度簡直慘不忍睹,因此我考慮了預先載入詞典在乙個陣列中的做法,我手上...

細細品味PHP程式的演算法

2008 06 08 18 23 在一般的應用中,php的程式設計師會比較少的注意到php程式的細微演算法對效能影響的問題,但在處理一些比較占用資源的東西的時候,適當調整演算法,會讓程式的效能整倍的提高。這幾天,我在研究分詞的演算法,如果不預先載入詞典的話,那種運算速度簡直慘不忍睹,因此我考慮了預先...