先丢点问题小结到这里,免得忘记,有空再弄个详细教程玩,网上的教程要不就是旧版的,要不就是没说到点子上,随便搞搞也能碰上结果是对的时候,但是知其然而不知其所以然,没意思啊。解决问题的方法有很多种,总得找到比较合适的方法才行的。

1.服务器禁用ipV6配置.

2.Could not locate executable null\bin\winutils.exe in the Hadoop binaries

首先,有个exe,要去下载。其次,注意到提示的路径前面的null,路径没有。。。系统变量设置了HADOOP_HOME也不行,程序中直接设定环境变量,还能省去系统配置,更方便。这玩意应该只有windows系统会要了,exe嘛。。。

System.setProperty("hadoop.home.dir","xxxxxxxxx");

3.连接不上服务器的hdfs端口

查看/etc/hosts中,主机名是否绑定到127.0.0.1或127.0.1.1,这样会有问题,ubuntu中这是主要原因,hosts中主机名要绑定IP。
slaves中去掉localhost,加上所有服务器的主机名,一行一个,/etc/hosts中绑定其它服务器的主机名和对应的IP。

只有一台机器的话,也是直接放主机名,localhost本就是和127.0.0.1绑定的,这就会有前面的绑定ip问题了。就算可以,复制文件到从服务器的时候,还是要改配置的,麻烦。全部用主机名,配置也不用改,hosts绑定都能直接复制。

有的教程中,xml中是用IP的,但是个人认为用主机名好,然后在hosts中绑定一下。用IP的话,服务器的IP一换,要改的地方就多了,用主机名时只要改改hosts就好了。

综上所述,为了避免乱七八糟的问题,不要用127.0.0.1,不要用localhost,不要用IP,用主机名加hosts配置,省事还不容易出错。

slaves中的配置是datanode起来的关键,列出的机器,才会有datanode服务。

4.windows连接上hdfs服务器后,安全模式关闭后,java程序可读取但是不能写操作,这是因为默认是用当前用户名去通信的,关闭权限校验?或去改当前用户名?麻烦,直接一行代码搞定!

System.setProperty("HADOOP_USER_NAME","xxxxxxxx");

 当然,安全模式开启了的话,肯定是不能写的了。

查看安全模式状态

hadoop dfsadmin -safemode get

 

 posted on 2014-07-31 18:21  往事如风  阅读(4640)  评论(0编辑  收藏  举报