close

本章主要說明Hadoop distributed file system (HDFS),是如何儲存資料,以及對資料的處理,還有像是透過shell的指令與Java的介面對於HDFS資料的讀取、儲存、查詢等功能。

- 3.1 說明了HDFS的優缺點

    - 優點 :

        - a. 可儲存"超大型檔案",舉例來說就是把10顆500G的硬碟串起來變成一顆5000G的超大硬碟。

        - b. 由於把硬碟"故障"當成是家常便飯,故Hadoop不需要架構在昂貴的硬體上,但這也說明著HDFS雖然架構在一般硬體上,但是卻能夠把資料保存的很好^.^~。

    - 缺點 :

        - a. 無法支持低延遲性(low-latency)的需求,這個意思說明他無法在很短的時間內給你答案,但是HBase的出現拯救了這個問題。

        - b. 大量的小檔案會有兩個主要的影響,第一會耗掉namenode的記憶體,第二使得mapreduce會變慢QQ"。

        - c. 不支援多次寫入與任意修改檔案。

- 3.2

    - 3.2.1 在敘述HDFS的概念,這裡主要是在說明在HDFS中的區塊是很大的(預設64MB),這其實闡明了一件事情,"傳送一個大型檔案的時間取決於對多個區塊操作的硬碟傳速率",再來就是mapreduce中的map任務,一次是處理一個區塊。然後就是區塊很適合拿來做複製的動作,這也牽動著"資料的容錯性與可靠性"。

    - 3.2.2 說明namenode極為重要,namenode掛了,整個系統等於掛掉了,所以HDFS一直以來都有著單點故障的issue在,這裡列出了目前幾種HA(High Aavibility)方法 : 

        - a. Secondary namenode(冷啟,不建議用來做backup用,做好他的本分就好了,第十章有說明)

        - b. Backup node(冷啟,同上述)

        - c. Facebook的AvatarNode(熱啟,但與hadoop有版本問題,沒深入研究QQ")

        - d. Heart beat + DRBD(熱啟,無版本問題,當資料粉大的時候啟動會比較久且會有腦裂(brain split)的問題,不難解決但是問題發生的時候也會讓你腦裂...呵呵)

        - e. Hadoop 2.x.x所提出的方案(熱啟,是使用zookeeper來做的,但是尚未研究)

- 3.3 這裡說了一點點的HDFS在linux shell的指令,以及檔案的權限,衍生出Kerberos對於權限管理的功能(先看看就好,第九章有說明)。

- 3.4 Hadoop的檔案系統不僅只有HDFS,還有像是HFTP、KDS等其它檔案系統,也說明了不僅可以用Java與檔案系統溝通,透過Thrift API也可以使用C++、Perl、PHP、Python、Ruby等與HDFS溝通。

- 3.5與3.6節合併說明了資料的"讀取"、"寫入"、"查詢",以及一致性的問題。

    - 3.5.2 + 3.6.1 使用FileSystem API做資料的讀取。   

    - 3.5.3 + 3.6.2 使用FileSystem API做資料的寫入。

    - 3.5.4 + 3.5.5 + 3.5.6 資料的查詢、目錄與刪除。

    - 3.6.3 資料的一致性

- 3.7 使用distcp做平行複製,這說明了為什麼要使用區塊的好處,distcp就像是一個mapreduce程式但是沒有reduce功能,使用一堆map來幫你做平行複製。

    - 3.7.1 讓資料的分布盡量在HDFS中保持平衡,這是基於資料安全性的考量,於第十章會說明如何手動啟動balancer的功能(其實daemon就有再跑balancer了!)。

- 3.8 說明了使用HDFS儲存小檔案是很沒效率的,這是因為會耗掉namenode大量的記憶體(但是注意的是,並不會耗掉硬碟空間),這裡衍生出Hadoop Archives(歸檔)的方法。

    - 3.8.1 Hadoop Archives在linux shell的使用方式。

    - 3.8.2 說明了雖然使用hadoop archives做大量小檔案的歸檔可以降低對於namenode的負擔,但是對於mapreduce來說是沒用的,原因是InputFormat沒有歸檔的分割(第七章有說明), 但還是可以藉由第七章說明的CombineFileInputFormat來解決大量小檔案的問題。

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 TonyMoMo 的頭像
    TonyMoMo

    TonyMoMo的部落格

    TonyMoMo 發表在 痞客邦 留言(0) 人氣()