本篇博主将介绍你们中学习前面的hadoop文章中可能出现的问题。java
首先,可能涉及的命令:node
#命令:startx启动linux图形界面 #设置时间(或者也可以使用ntp作linux时间同步) sudo date -s "2018-11-06 21:00:00" #安装tree命令(可用于查看进程、目录等) yum install -y tree #递归查看根目录 ll -R /
1、运行mr程序出错linux
#错误效果 connecting to resoucemanager retrying .... retrying ..... #缘由是没有启动yarn或者启动失败
2、初始化工做目录结构apache
hdfs namenode -format 只是初始化了namenode的工做目录,而datanode的工做目录是在第一次将datanode启动后本身初始化的。若是将datanode的原来的工做目录删除掉,再次启动会获得一个全新的datanode。windows
3、datanode不被namenode识别的问题api
namenode在format初始化的时候会造成两个标识:blockPoolId、clusterId;这两个标识会在datanode初始化成功加入集群后记录到namenode的工做空间,标识该namenode所属的hdfs集群的惟一标识。若是namenode从新format后,这两个值会生成新的值,原来的namenode就没法被识别,此时须要删除原来的namenode的工做目录,从新启动。安全
4、datanode下线后多久看到效果
datanode没有作相似于以前文章中提到的利用zookeeper作成服务动态感知的方式,不是一下线就会被namenode认定为下线的,有一个超时时间。服务器
5、关于副本数量的问题oop
副本数由客户端的参数dfs.replication决定(优先级: 代码conf.set() > 自定义配置文件 > jar包中的hdfs-default.xml),服务器上配置的那个值 只对命令行客户端生效。学习
6、HADOOP_HOME or hadoop.home.dir are not set问题
[main] DEBUG org.apache.hadoop.util.Shell - Failed to detect a valid hadoop home directory java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set
1.在windows中设置环境变量HADOOP_HOME和hadoop.home.dir
2.若是还不行就在代码中初始化hdfs客户端以前设置系统环境变量:
· windows中:System.setProperty("hadoop.home.dir", "E:\\\\hadoop-2.9.1");
linux中:System.setProperty("hadoop.home.dir", "/usr/local/hadoop-2.9.1");
7、windows链接上hdfs服务器后,安全模式关闭后,java程序可读取可是不能写操做,
这是由于默认是用当前用户名去通讯的;解决方案:(1)可关闭权限校验或去改当前用户名(2)System.setProperty("HADOOP_USER_NAME","xxx");
8、windos中命令运行hdfs api是报错
检查本身是否已经将hadoop在本机上编译生成的文件放入相应的hadoop目录。
最后寄语,以上是博主本次文章的所有内容,若是你们以为博主的文章还不错,请点赞;若是您对博主其它服务器大数据技术或者博主本人感兴趣,请关注博主博客,而且欢迎随时跟博主沟通交流。