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:結果的彙總

wKioL1YAHoKCS2FDAAMW5jaM3bc572.jpg

    wKiom1YBbQyS7QxjAAJY3oBOFNA888.jpg


wKioL1YEEXSSK_knAALFkyWycAY273.jpg

十:jobtracker  tasktracker




十一:

wKioL1YiUCWS1_H2AAQ7eID6tX4920.jpg



wKiom1YiVDKB2D_dAAOT9gcNg9c067.jpg


wKioL1YiVSqA5xduAAVRyA6Zk-o498.jpg


wKioL1YoO9GQ98iKAALDNo99tuI204.jpg

wKiom1Ys2_7hM1mrAACLMsG344w128.jpg


    wKioL1YxdjvyxA0AAAKPbbupbro971.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章