總結上一次學習:
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