天天看點

Hadoop

一:介紹

       hadoop是項目的總稱,起源于作者兒子的一隻吃飽了的大象的名字。主要是由hdfs、mapreduce和hbase組成。

  hdfs是google file system(gfs)【分布式存儲】的java開源實作。(有篇關于gfs的論文)

  mapreduce是google mapreduce【并行計算執行架構】的java開源實作。(有篇關于mapreduce的論文)

  hbase(列式存儲)是google bigtable的開源實作。·(有篇關于bigtable的論文)

       hadoop的hdfs最初是為了解決nutch爬取網絡資料的海量存儲問題,mapreduce最初是為了解決多台機器存儲海量         資料後建索引複雜的問題

二:

hdfs:新增、删除、查詢檔案流程

hdfsclient對namecode發起請求(新增、删除、查詢),eg:新增檔案

1.namenode:

名位元組點(隻有一個),存儲檔案中繼資料,eg:檔案大小、權限、所有者、包含哪些塊block、block儲存在哪個datanode上(這個由datanode啟動時上報,隻是存在記憶體上,并不存在namenode的磁盤檔案fsp_w_picpath上)

存儲的磁盤檔案名為:fsp_w_picpath,此外還有個檔案名edits的檔案記錄着對metadata的記錄檔,eg:新增一個檔案等

2.secondarynamenode

根據設定的時間間隔(預設3600s),拷貝并合并fsp_w_picpath和edits為最新的fsp_w_picpath,再傳回給namenode節點伺服器(操作都是現在記憶體,再落地,是以記憶體的資料是最新的)

3.datanode:

資料節點(可以有多個),存放檔案内容,存放的時候,也同時會生成多個 檔案内容一模一樣的 副本集

4.hdfsclient

三:

hdfs優點:

1.高容錯性:資料自動儲存多個副本,副本丢失後,自動恢複

2.适合大資料處理:gb、tb甚至pb級别資料

3.可建構在廉價機器上:通過多副本提高可靠性、提供容錯和恢複機制

hdfs缺點:

1.不太适合 低延遲資料通路的要求(eg:毫秒級),因為hadoop上存儲資料量太多

2.不太适合大量小檔案的存取,因為namenode占用太多的記憶體

3.不太适合并發寫入、檔案随機修改(eg:網盤,網盤上檔案的内容是不能修改的)

五:hdfs資料存儲單元是block

一個檔案存儲方式是:按大小被切分成若幹個block,存儲到不同節點上,預設情況下每個block都有3(數值可修改)個副本,預設block大小為64mb,可配置,若檔案大小不到64mb,則單獨存成一個block

六:hdfs讀取流程

hdfs client -> open namenode,傳回block個數和位置等資訊給用戶端 -> 并發讀取檔案塊,組合成一個檔案傳回給用戶端 -> 關閉流

七:hdfs寫流程

hdfs client ->create,在namenode寫入資訊,eg:檔案大小、檔案分多少block,傳回給hdfs client ->寫入datanode,對于副本,背景啟動線程執行,hdfd client不負責副本的生成->告訴hdfs client完成,并把block分布在datanode的資訊告訴namenode

八:安裝

1、僞分布式:所有節點在同一台機器上

2、分布式:所有節點不是在同一台機器

九:hadoop分布式計算架構,什麼是分布式計算:移動計算而不移動資料

9.1:mapruduce:适合離線計算

1.map:任務的分解

2:reduce:結果的彙總

Hadoop
Hadoop
Hadoop

十:jobtracker  tasktracker

十一:

Hadoop
Hadoop
Hadoop
Hadoop
Hadoop
Hadoop

繼續閱讀