天天看點

大資料Hadoop基礎

1簡介

   Hadoop的系統環境是:Linux或者Unix。Hadoop有兩個核心服務子產品:DFS和YARN

1.1 DFS(存儲)

  對于存儲Hadoop提供了HDFS分布式檔案系統(Hadoop Distributed File System,簡稱HDFS)。分布式檔案系統吧檔案分布存儲到多個計算機節點上,很多的計算機節點構成了計算機叢集;分布式檔案系統由計算機叢集中的多個節點構成,節點分為兩類,一類叫“主節點”(MasterNode或NameNode),另一類叫做“從節點”(SlaveNode)或“資料節點”(DataNode)。

  傳統的資料儲存為一份,是以存在有資料備份問題。而Hadoop提出了資料儲存三份,解決了資料備份問題。

  所有的HDFS資料都儲存在DataNode節點中,NameNode儲存DataNode的基本資訊,是以有着“導航”的作用,是以如果沒有NameNode,則無法操作DataNode節點。其中,NameNode的資料儲存在記憶體中,DataNode的資料儲存在實體記憶體中。

  HDFS有高容錯性、高吞吐量的特點,适合大資料的儲存,可以以流的形式通路檔案系統中的資料。

1.1.1 NameNode組成和分析

編輯日志(edits):描述的是整個的檔案的所有相關記錄,例如:xx時候,有一個檔案上傳,大小,建立時間...。 但是随着運作時間的加長,那麼日志的檔案的内容也會越來越多,是以在NameNode之中針對于日志是需要進行新日志切換的,保證一個日志的内容不會特别的長。

中繼資料(MetaData):記錄了所有的目前保留下來的檔案相關資訊,與edits中的檔案的内容相比,中繼資料的内容是滞後的;

fsimage(檔案系統快照):是中繼資料的持久化儲存,fsimage要與中繼資料是同步的,但是之後于edits,fsimage是儲存在磁盤上的元空間資料,在節點當機之後會提供中繼資料的持久化儲存。

使用者如果需要進行HDFS的檔案操作,那麼所有的操作會記錄在edits日志檔案之中;

而使用者如果需要進行檔案的相關擷取,那麼就需要通過中繼資料的模式來完成,但是考慮到有可能出現當機的情況,是以記憶體中的中繼資料也會在磁盤中進行持久化儲存(fsimage)、 而後為了保證中繼資料的内容是最新的,此時就需要SecondaryNameNode來對中繼資料進行更新處理。

1.1.2 HDFS分布式檔案系統

當使用者需要上傳一個待分析的檔案(理論上任何的檔案都可以上傳,不分類型,但是基本上在Hadoop上所儲存的資料都是需要進行統計分析的資料),這些資料的資訊被NameNode所接收,而後這些具體的檔案的基本資訊都會儲存在有一個中繼資料記憶體空間之中(MetaData)。而後真正的資料一定要儲存在DataNode之中,那麼至于說資料儲存在那個DataNode節點上,由NameNode來進行記錄。

但是每一個DataNode是根據資料塊來存儲的(Hadoop的預設的資料庫為128M),如果你現在存儲了一個1k的檔案,對于DataNode也占有128M的磁盤空間,如果你存儲了300M的檔案,那麼這個檔案會自動拆分為3份,儲存在不同的資料塊裡面。 SecondaryNameNode屬于一個NameNode的經理級别,負責一些瑣碎的事務,就是負責為NameNode進行資料更新的。因為NameNode有可能不是最新的資料,是以就需要有一個輔助的操作去幫助NameNode進行更新。

1.1.3 HDFS Shell指令

列出根目錄下的所有檔案資訊:hadoop fs -ls / ;

在HDFS上建立目錄:hadoop fs -mkdir -p /目錄 ;

将檔案上傳到指定的目錄之中:hadoop fs -put 源檔案路徑 目标路徑 ;

複制HDFS的檔案;hadoop fs -cp 源檔案路徑 目标路徑 ;

删除檔案:hadoop fs -rm 檔案路徑 ;

移動檔案:hadoop fs -mv 源檔案路徑 目标路徑 ;

删除檔案目錄:hadoop fs -rmr 目錄 ;

檢視幫助資訊:hadoop fs -help ;

1.2 YARN(分析)

YARN主要用來分析Hadoop儲存在HDFS檔案系統上的資料。

2、hadoop的核心程序

    五個核心程序:NameNode、SecondaryNameNode、DataNode、ResourceManager、NodeManager。

 這些程序分為兩類: 

    DFS相關程序(存儲):NameNode、SecondaryNameNode、DataNode; |- 配置檔案:hdfs-site.xml;

    YARN相關程序(資料分析):ResourceManager、NodeManager; |- 配置檔案:yarn-site.xml。

3、hadoop的啟動指令

利用start-all.sh 檔案可以直接啟動DFS 與YARN 相關程序,但是從實際來講,需要分開啟動。

3.1 手工啟動

利用hadoop-deamon.sh 啟動或關閉namenode、SecondaryNameNode、DataNode等三個程序:hadoop-daemon.sh start | stop 節點名稱;例:hadoop-daemon.sh start namenode。

利用 yarn-daemon.sh啟動或關閉ResourceManager、NodeManager程序: yarn-daemon.sh start | stop 節點名稱;例:yarn-daemon.sh start resourcemanager。

通過jps指令檢視,應該會存在有六個程序(其中有一個是jps)。

3.2 自動化腳本啟動

在Hadoop運作的初期是以可以為其使用自動化的腳本啟動,而這個腳本分為兩類:dfs自動化腳本、yarn自動化腳本。

自動化啟動dfs:start-dfs.sh 

        此腳本執行之後會啟動三個程序:NameNode、DataNode、SecondaryNameNode;

自動化啟動yarn:start-yarn.sh; 

        此腳本執行之後會啟動兩個程序:ResourceManager、NodeManager;

自動化關閉dfs:stop-dfs.sh;

自動化關閉yarn:stop-yarn.sh。

繼續閱讀