Hadoop----叢集運維(持續更新...)
前言
本篇介紹Hadoop的一些常用知識。要說和網上其他manual的區別,那就是這是筆者寫的一套成體系的文件,不是隨心所欲而作。
常用HDFS命令
- hadoop fs -ls URI
- hadoop fs -du -h URI
- hadoop fs -cat URI [檔案較大,hadoop fs -cat xxxx | head]
- hadoop fs -put URI
- hadoop fs -get URI
- hadoop fs -rmr URI
- hadoop fs -stat %b,%o,%n,%r,%y URI (%b:檔案大小, %o:Block 大小, %n:檔名, %r:副本個數, %y 或%Y:最後一次修改日期和時間)
- hadoop fs -tail [-f] URI
- hdfs dfsadmin -report
- hadoop fs -appendToFile URI1[,URI2,…] URI(hadoop fs -appendToFile helloCopy1.txt helloCopy2.txt /user/tmp/hello.txt)
- hadoop fsck / -files -blocks
這裡就是簡單的進行羅列,後續如果有必要在進行詳解。
重啟丟失節點
子節點DataNode丟失
sbin/hadoop-daemon.sh start datanode
子節點NodeManager丟失
sbin/yarn-daemon.sh start nodemanager
主節點丟失
sbin/start-all.sh
or
sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start secondarynamenode
sbin/yarn-daemon.sh start resourcemanager
配置檔案出錯
管理hadoop叢集,會經常遇到配置檔案的相關問題。這裡舉一個例子,比如yarn的nodemanager起不來的問題。
yarn的相關配置檔案有兩個:yarn-site.xml和yarn-env.sh
在yarn-site.xml檔案:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
在yarn-env.sh檔案:
JAVA_HEAP_MAX=-Xmx1024m
應該保證yarn-site.xml中的memory-mb數值比yarn-env.sh中JAVA_HEAP_MAX的數值小。yarn-site.xml的配置是要求nodemanager啟動的最少記憶體,低於該值無法啟動。實際啟動時,使用yarn-env.sh中的配置。修改比如:JAVA_HEAP_MAX=-Xmx2048m
no xxx to stop
hadoop會經常有這個問題,大概就是沒有找到該程序的PID檔案,所以報錯。
具體參見連線:
解決關閉Hadoop時no namenode to stop異常
每次啟動hadoop(./start-all.sh
)時,PID檔案被生成,儲存程序號。關閉時,PID檔案被刪除。
在hadoop2.7.1版本中,關於HADOOP_PID_DIR(檔案路徑:../etc/hadoop/hadoop-env.sh)的描述是這樣的:
# The directory where pid files are stored. /tmp by default.
# NOTE: this should be set to a directory that can only be written to by
# the user that will run the hadoop daemons. Otherwise there is the
# potential for a symlink attack.
export HADOOP_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
最好將PID檔案放在只寫目錄中。
關於mapred-site.xml配置
參見blog:《如何給執行在Yarn的MapReduce作業配置記憶體》
參考資料
-如何給執行在Yarn的MapReduce作業配置記憶體
- hadoop HDFS常用檔案操作命令
- HDFS 檔案操作命令