大数据教程(6.7)第六章问题总结

原创
2018/11/06 22:27
阅读数 277

    本篇博主将介绍大家中学习前面的hadoop文章中可能出现的问题。

    首先,可能涉及的命令:

#命令:startx启动linux图形界面

#设置时间(或者也可使用ntp做linux时间同步)
sudo date -s  "2018-11-06 21:00:00"
#安装tree命令(可用于查看进程、目录等)
yum install -y tree
#递归查看根目录
ll -R / 

    一、运行mr程序出错

#错误效果
connecting to resoucemanager 
retrying ....  
retrying .....
#原因是没有启动yarn或者启动失败

    二、初始化工作目录结构

           hdfs namenode -format 只是初始化了namenode的工作目录,而datanode的工作目录是在第一次将datanode启动后自己初始化的。如果将datanode的原来的工作目录删除掉,再次启动会得到一个全新的datanode。

    三、datanode不被namenode识别的问题

           namenode在format初始化的时候会形成两个标识:blockPoolId、clusterId;这两个标识会在datanode初始化成功加入集群后记录到namenode的工作空间,标识该namenode所属的hdfs集群的唯一标识。如果namenode重新format后,这两个值会生成新的值,原来的namenode就无法被识别,此时需要删除原来的namenode的工作目录,重新启动。

    四、datanode下线后多久看到效果
           datanode没有做类似于之前文章中提到的利用zookeeper做成服务动态感知的方式,不是一下线就会被namenode认定为下线的,有一个超时时间。

    五、关于副本数量的问题

           副本数由客户端的参数dfs.replication决定(优先级: 代码conf.set() >  自定义配置文件 > jar包中的hdfs-default.xml),服务器上配置的那个值 只对命令行客户端生效。

    六、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");

    七、windows连接上hdfs服务器后,安全模式关闭后,java程序可读取但是不能写操作,

           这是因为默认是用当前用户名去通信的;解决方案:(1)可关闭权限校验或去改当前用户名(2)System.setProperty("HADOOP_USER_NAME","xxx");

    八、windos中命令运行hdfs api是报错

           检查自己是否已经将hadoop在本机上编译生成的文件放入相应的hadoop目录。

    最后寄语,以上是博主本次文章的全部内容,如果大家觉得博主的文章还不错,请点赞;如果您对博主其它服务器大数据技术或者博主本人感兴趣,请关注博主博客,并且欢迎随时跟博主沟通交流。

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部