Hadoop入門學習筆記---part3

    2015年元旦,好好學習,每天向上。良好的開端是成功的一半,任何學習都不能中斷,只有堅持纔會出結果。繼續學習Hadoop。冰凍三尺,非一日之寒!html

    通過Hadoop的僞分佈集羣環境的搭建,基本對Hadoop有了一個基礎的瞭解。可是仍是有一些理論性的東西須要重複理解,這樣才能完全的記住它們。我的認爲重複是記憶之母。精簡一下:java

    NameNode:管理集羣,而且記錄DataNode文件信息;linux

    SecondaryNameNode:能夠作冷備份,對必定範圍內的數據做快照性備份;shell

    DataNode:存儲數據;併發

    JobTracker:管理任務,並將任務分配給taskTracker;app

    TaskTracker:任務的執行方。分佈式

     HDFS如今都知道是Hadoop分佈式文件系統,可是關於它的其它方面好比說它的體系結構就不知道了。所以,還得在此基礎上理解Hadoop分佈式文件系統的體系結構以及相關基本概念。《Hadoop入門學習筆記---part3》的重點內容就是分佈式文件系統和HDFSHDFS的shell操做NameNode體系結構DataNode的體系結構oop

  1. 分佈式文件系統和HDFS:

    DFS(分佈式文件系統)是一種容許文件經過網路在多臺主機上分享的文件系統。可讓多臺機器上的多用戶分享文件和存儲空間。學習

            HDFS僅僅是DFS中的一種,適用於一次寫入屢次查詢的狀況,不支持併發寫的狀況,同時也不適合於小文件。網站

        下面就能夠在已經搭建好的hadoop僞分佈環境下進行操做了。首先查看hadoop的進程是否已經啓動。若是沒有啓動,須要啓動後再進行下面的操做。

      #jps
      #start-all.sh   (若是沒有啓動)

 

   2. HDFS的shell操做:

    實際上HDFS的shell操做和Linux上的操做基本上是相似的。只是列舉一些非常經常使用的命令,給一個拋磚引玉的做用。可以知道是怎麼回事,怎麼用就行。

#hadoop fs –ls / 查看根目錄下的內容
#hadoop fs –lsr / 遞歸查看根目錄下的內容
#hadoop fs –mkdir /hello  在HDFS的根目錄下新建一個hello的文件夾
#hadoop fs –put /root/test /hello   將linux中root目錄下的test文件上傳到HDFS的hello目錄下,當只有源路徑而沒有目標路徑時,默認表示文件名稱,不是文件夾,爲上傳後的名稱
#hadoop fs –get /hello/test .    將HDFS上的文件下載到本地。注意在命令的最後面是一個點,而這個點就是表示本地路徑,即爲linux的路徑,能夠將點改成任何路徑
#hadoop fs –text /hello/test   直接在HDFS上查看hello目錄下的test文件
#hadoop fs –rm /hello/test  刪除hello目錄下的test文件,只針對文件
#hadoop fs –rmr /hello  遞歸地刪除HDFS上的hello目錄,包含文件和文件夾 **#hadoop fs –help +命令  查看幫助文檔 **#hadoop fs –ls /  其實是命令#hadoop fs –ls hdfs://hadoop:9000/ 是同樣的效果,就是簡寫。注意裏面的hadoop是我機器的主機名,應根據你本身的實際來選擇

 

    由於這樣的命令太多,我就不一一列舉了。只要會使用linux命令的,基本上很容易上手。類推就行!

  3. NameNode的體系結構:

    HDFS的兩大核心就是NameNode和DataNode。是整個文件系統的管理節點,維護整個文件系統的文件目錄樹,文件/目錄的元信息和每一個文件對應的數據塊列表,接收用戶的操做請求。本人僅歸納性的總結,詳細的介紹還請參看官方文檔。

    文件包括:

    (1)     fsimage:文件系統鏡像,元數據鏡像文件,存儲某一時段NameNode內存元數據信息;

    (2)     edits: 操做日誌文件,事務文件;

    (3)     fstime: 保存最近一次checkpoint的時間。

    以上這些文件是保存在Linux上。

  SecondaryNameNode:

     從NameNode上下載元數據信息(fsimage和edits),而後把兩者合併,生成新的fsimage,在本地保存,並將其推送到NameNode,同時重置NameNode的edits。實際上就是冷備份。

        在linux中的路徑以下以下,你能夠看到以上介紹的文件。

                          

  4. DataNode的體系結構:

    提供真實文件數據的存儲服務;還得明白一個關鍵術語:數據塊(block),最基本的存儲單位;對於文件內存而言,一個文件的長度大小問size。那麼從文件的0偏移開始,按照固定的大小,順序對文件進行劃分並編號,劃分好的每個塊稱爲一個block。

    HDFS默認的Block大小是64MB,以一個256MB的文件爲例,256MB/64MB=4個Block。

    與普通文件系統不一樣的是,HDFS中,若是文件小於一個數據塊的大小,並不佔用整個數據塊存儲空間。即:HDFS的DataNode在存儲數據時,若是原始文件大小大於64MB,按照64MB大小劃分,若是小於64MB,就按實際大小保存。

    Repication:多副本,默認爲3個,存放在不一樣的機器上。

    在linux中的實際存儲爲下圖所示。同時能夠看到存儲數據的元信息。

    

  在《Hadoop入門學習筆記---part4》中將利用java操做HDFS,看看如何利用java實現的應用程序進行操做。

做者:itRed 郵箱:it_red@sina.com  博客:http://www.cnblogs.com/itred  我的網站:http://wangxingyu.jd-app.com
***本文版權歸做者和博客園共有,歡迎轉載,但請在文章顯眼位置標明文章出處。未經本人書面贊成,將其做爲他用,本人保留追究責任的全部權利。
相關文章
相關標籤/搜索