Hadoop學習4-HDFS詳解1(SNN、副本放置策略)

總結上一次學習:

1)搭建hdfs集羣可能會出現namenode 、datanode進程會掛掉?

需要查看logs的異常信息在來看

如果namenode沒有正常啓動,原因可能是沒有正確的格式化

如果datanode沒有啓動,原因可能是namespaceId不一樣

正確步驟:

rm -rf 本地hdfs存儲目錄

執行 ./hadoop namenode -format

執行./start-dfs.sh

2)dfsadmin -setQuota的問題

dfsadmin -setQuota限制文件數量

dfsadmin -setSpaceQuota限制上傳文件的磁盤空間


3)小文件的配置?以及如何處理?

hdfs默認的數據庫大小是64M,如果文件小於64M可以通過archive的方式來合併文件

數據塊大小使用dfs.block.size這個屬性來配置


4)start-dfs.sh執行過程中warning信息的說明?

如:Unable to load native-hadoop library for your platform....

usring built-in java class

很多時候可以通過JNI調用c/C++編寫的native庫,如果沒有找到就會使用內置的java code


5) 重複運行wordcount.java會存在提示目錄已經存在

可以先刪除,直接刪除目錄或者用hadoop fs -rm 刪除

可以在程序中判斷,如果存在先刪除在提交

可以修改源代碼增加目錄替換功能

6)默認的hadoop conf路徑變成了etc/hadoop

在啓動start-dfs.sh時會先去source hadoop-config.sh

然後會去找conf/hadoop-env.sh

如果不存在就會設施成etc/hadoop

存在就會去執行 hadoop-daemon.sh或者hadoop-daemons.sh 

然後去找到相應的java程序執行


打開eclipse新建一個項目

導入hadoop1.2.1源代碼,先導入core然後導入hdfs

配置相應的依賴包

如果出現 

sun.net.util.IPAddressUtil錯誤時

解決了,sun.net包裏的類,在eclipse裏默認是不讓用的。解決辦法是自定義access rules
工程上右鍵->工程屬性->java builder path->Libraries標籤,點擊JRE System Library裏面的Access rules,add sun/** 爲accessible,如果該項存在,就edit。

HDFS優缺點:



SecondNameNode

1)不是Namenode的備份

2)週期性合併fsimagehe editslog,並推送給namenode 

editslog是所有操作記錄

fsimage是namenode的一個鏡像

3)輔助恢復Namenode

4)SecondaryNameNode的作用現在可以被兩個節點替換,checkpoint node 與backup node

2.0時代已經被checkpoint node替代  backup node是namenode的完全備份



通過配置conf/core-site.xml文件配置checkpoint


jps查看一下是否已經啓動dfs如果啓動./stop-dfs.sh停掉

然後./hadoop namenode -format

然後重新啓動./start-dfs.sh

然後等待30秒,查看/tmp/hadoop/secondarynamenode目錄


多出兩個目錄,查看cat current/VERSION



Checkpoint Node 和Scondary NameNodede 作用完全相同

但是在1.x版本是不存在checkpoint Node命令的

啓動命令是 bin/hdfs namenode -checkpoint


Backup Node

是真正意義上的備用節點

在內存中維護一份從namenode同步過來的fsimage,同時它還從namenode接受edits文件的日誌流

並把它們持久化磁盤

Backup Node在內存中維護和NameNode一樣的Matadata數據

啓動命令用bin/hdfs namenode -backup




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