hadoop的來源?node
hadoop起源於Nutch,Nutch是一個網絡搜索引擎,由 Doug Cutting 這我的建立的。Nutch主要用構建一個大型的全網搜索引擎 , 包括網頁抓取 、 索引 、查詢等功能 , 但隨着抓取網頁數量的增長 , 遇到了嚴重的可擴展性問題 , 即不能解決數十億網頁的存儲和索引問題 。 以後 , 谷歌發表的兩篇論文爲該問題提供了可行的解決方案 。因爲谷歌僅開源了思想而未開源代碼 , Nutch 項目組便根據論
文完成了一個開源實現 , 即 Nutch 的分佈式文件系統 ( NDFS )。另外一篇是 2004 年發表的關
於谷歌分佈式計算框架 MapReduce 的論文 。 該論文描述了谷歌內部最重要的分佈式計算
框架 MapReduce 的設計藝術 , 該框架可用於處理海量網頁的索引問題 。 一樣 , 因爲谷歌未
開源代碼 , Nutch 的開發人員完成了一個開源實現 。 因爲 NDFS 和 MapReduce 不只適用於
搜索領域 , 2006 年年初 , 開發人員便將其移出 Nutch , 成爲 Lucene 的一個子項目 ,稱爲Hadoop 。 大約同一時間 , Doug Cutting 加入雅虎公司 , 且公司贊成組織一個專門的團隊繼
續發展 Hadoop 。 同年 2 月 , Apache Hadoop 項目正式啓動以支持 MapReduce 和 HDFS 的獨
立發展 。 2008 年 1 月 , Hadoop 成爲 Apache 頂級項目 , 迎來了它的快速發展期 。
服務器
Hadoop包括那些核心東西?網絡
Hadoop框架中最核心的東西就是HDFS和MapReduce框架
HDFS:(Hadoop distributed file system)分佈式文件系統。分佈式
MapReduce:是一個並行計算框框架ide
HDFS的存儲原理是什麼?oop
HDFS是一個分佈式文件系統,它將一個文件分紅一個或多個塊,每一個塊默認大小是64M,(固然也能夠本身調整大小)存儲在DataNode節點上。搜索引擎
一個標準的HDFS集羣有3個守護進程組成。spa
Namenode:集羣中的數目有1個,主要用來存儲文件系統的元數據信息。設計
元數據中包含的信息有:文件的ownship和permissions;文件包含那些快,以及備份;塊保存 在那些datanode上(啓動時後,datanode本身會上報)。Namenode其自己是一個jetty服務器,用來進行名稱查詢的。在啓動時候,會首先加載元數據信息至內存中,存儲在磁盤文件名爲fsp_w_picpath。
可是block的位置信息不會保存到fsp_w_picpath內。這樣設計的好處是即使datanode的IP地址或者主機名發生了改變,也不影響文件系統中元數據的存儲。管理員只需拆下硬盤,將它們插入新的機箱,而後啓動新機器,這依然不會影響元數據的存儲。
fsp_w_picpath:元數據鏡像文件
Editslog記錄HDFS元數據的變化。
DataNode:Slave節點,奴隸,幹活的。負責存儲client發來的數據塊block;執行數據塊的讀寫操做。
SecondNameNode:是NameNode的冷備份;合併fsp_w_picpath和fsedits而後再發給namenode。
冷備份:b是a的冷備份,若是a壞掉。那麼b不能立刻代替a工做。可是b上存儲a的一些信息,減小a壞掉以後的損失。
熱備份:b是a的熱備份,若是a壞掉。那麼b立刻運行代替a的工做。
namenode內存中存儲的是=fsp_w_picpath+edits。
4.NameNode和SecondNode之間的關係?
客戶端進行HDFS文件操做(建立,修改,複製,刪除)時,首先會把這個操做記錄在日誌文件中(EditsLog)中。在日誌記錄這個操做後,NameNode修改內存中的文件系統的元數據信息。這個操做成功以後,日誌都會被同步到文件系統中去。fsp_w_picpath文件(命名空間印象文件)是內存中元數據在硬盤上CheckPoint的結果,不能從硬盤上直接打開修改fsp_w_picpath文件。SecondDataNode的做用就是幫助DataNode將內存中的元數據CheckPoint到硬盤上。
CHeckPoint的過程以下。
(1)SecondNameNode通知NameNode生成新的日誌文件,之後的日誌都會記錄在新的日誌文件中。
(2)SecondNameNode用HTTP Get從NameNode節點得到fsp_w_picpath文件及舊的日誌文件。
(3)SecondNameNode將fsp_w_picpath加載到內存中,並執行日誌文件中的全部操做,而後生成新的fsp_w_picpath文件。
(4) SecondNameNode用HTTP Post將fsp_w_picpath文件傳送給NameNode。
(5)NameNode這時候,就可使用新的fsp_w_picpath文件和新的日誌文件,寫入這次CheckPoint的時間。
SecondNameNode週期性的合併,能夠在配置文件中core-site.xml中進行設置。
fs.checkpoint.period//時間週期 fs.checkpoint.size //日誌文件的大小。
若是NameNode損壞,這時候就須要人工從NameNode恢復數據,會或多或少丟失一部分數據。
因此儘可能將其SecondNameNode和NameNode分開,放在不一樣的機器上。