天天看點

hadoop介紹

以下内容是我的學習筆記,網絡課程的筆記。 出處

Hadoop實作了一個分布式檔案系統(Hadoop Distributed File System),簡稱HDFS。

HDFS有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量(high throughput)來通路應用程式的資料,适合那些有着超大資料集(large data set)的應用程式。HDFS放寬了(relax)POSIX的要求,可以以流的形式通路(streaming access)檔案系統中的資料。

介紹hadoop就是需要先了解hadoop的使用場景,先熟悉一下下面的概念:

什麼是大資料

基本概念

簡單說就是 資料處理
在網際網路技術發展到現今階段,大量日常、工作等事務産生的資料都已經資訊化,
人類産生的資料量相比以前有了爆炸式的增長,
以前的傳統的資料處理技術已經無法勝任,需求催生技術,一套用來處理海量資料的軟體工具應運而生,這就是大資料!
           
  • 處理海量資料的核心技術 *

海量資料存儲:分布式

海量資料運算:分布式

這些核心技術的實作是不需要使用者從零開始造輪子的

存儲和運算,都已經有大量的成熟的架構來用

存儲架構:

  1. HDFS——分布式檔案存儲系統(HADOOP中的存儲架構)
  2. HBASE——分布式資料庫系統
  3. KAFKA——分布式消息緩存系統(實時流式資料處理場景中應用廣泛)

運算架構:

(要解決的核心問題就是幫使用者将處理邏輯在很多機器上并行)

  1. MAPREDUCE—— 離線批處理/HADOOP中的運算架構
  2. SPARK —— 離線批處理/實時流式計算
  3. STORM —— 實時流式計算

輔助類的工具

(解放大資料工程師的一些繁瑣工作):

  1. HIVE —— 資料倉庫工具:可以接收sql,翻譯成mapreduce或者spark程式運作
  2. FLUME——資料采集
  3. SQOOP——資料遷移
  4. ELASTIC SEARCH —— 分布式的搜尋引擎

換個角度說,

大資料是:

  1. 有海量的資料
  2. 有對海量資料進行挖掘的需求
  3. 有對海量資料進行挖掘的軟體工具(hadoop、spark、storm、flink、tez、impala......)

大資料在現實生活中的具體應用

  1. 資料處理的最典型應用:公司的産品營運情況分析
  2. 電商推薦系統:基于海量的浏覽行為、購物行為資料,進行大量的算法模型的運算,得出各類推薦結論,以供電商網站頁面來為使用者進行商品推薦
  3. 精準廣告推送系統:基于海量的網際網路使用者的各類資料,統計分析,進行使用者畫像(得到使用者的各種屬性标簽),然後可以為廣告主進行有針對性的精準的廣告投放

什麼是hadoop

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

Hadoop解決哪些問題?

* 海量資料需要及時分析和處理
* 海量資料需要深入分析和挖掘
* 資料需要長期儲存
* 海量資料存儲的問題:
* 磁盤IO稱為一種瓶頸,而非CPU資源
* 網絡帶寬是一種稀缺資源
* 硬體故障成為影響穩定的一大因素
           

hadoop中有3個核心元件:

  1. 分布式檔案系統:HDFS —— 實作将檔案分布式存儲在很多的伺服器上
  2. 分布式運算程式設計架構:MAPREDUCE —— 實作在很多機器上分布式并行運算
  3. 分布式資源排程平台:YARN —— 幫使用者排程大量的mapreduce程式,并合理配置設定運算資源

hdfs整體運作機制

hdfs:分布式檔案系統

hdfs有着檔案系統共同的特征:

有目錄結構,頂層目錄是: /

系統中存放的就是檔案

系統可以提供對檔案的:建立、删除、修改、檢視、移動等功能

hdfs跟普通的單機檔案系統有差別:

  1. 單機檔案系統中存放的檔案,是在一台機器的作業系統中, hdfs的檔案系統會橫跨N多的機器

    單機檔案系統中存放的檔案,是在一台機器的磁盤上

    hdfs檔案系統中存放的檔案,是落在n多機器的本地單機檔案系統中(hdfs是一個基于linux本地檔案系統之上的檔案系統)

hdfs的工作機制:

客戶把一個檔案存入hdfs,其實hdfs會把這個檔案切塊後,分散存儲在N台linux機器系統中(負責存儲檔案塊的角色:data node)<準确來說:切塊的行為是由用戶端決定的>

一旦檔案被切塊存儲,那麼,hdfs中就必須有一個機制,來記錄使用者的每一個檔案的切塊資訊,及每一塊的具體存儲機器(負責記錄塊資訊的角色是:name node)

為了保證資料的安全性,hdfs可以将每一個檔案塊在叢集中存放多個副本(到底存幾個副本,是由當時存入該檔案的用戶端指定的)

綜述:一個hdfs系統,由一台運作了namenode的伺服器,和N台運作了datanode的伺服器組成!

我的部落格即将入駐“雲栖社群”,誠邀技術同仁一同入駐。

下一篇: list去重