前言
本篇介绍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 文件操作命令