先丢点问题小结到这里,省得忘记,有空再弄个详细教程玩,网上的教程要不就是旧版的,要不就是没说到点子上,随便搞搞也能碰上结果是对的时候,可是知其然而不知其因此然,没意思啊。解决问题的方法有不少种,总得找到比较合适的方法才行的。java
1.服务器禁用ipV6配置.node
2.Could not locate executable null\bin\winutils.exe in the Hadoop binariesubuntu
首先,有个exe,要去下载。其次,注意到提示的路径前面的null,路径没有。。。系统变量设置了HADOOP_HOME也不行,程序中直接设定环境变量,还能省去系统配置,更方便。这玩意应该只有windows系统会要了,exe嘛。。。windows
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绑定都能直接复制。oop
有的教程中,xml中是用IP的,可是我的认为用主机名好,而后在hosts中绑定一下。用IP的话,服务器的IP一换,要改的地方就多了,用主机名时只要改改hosts就行了。spa
综上所述,为了不乱七八糟的问题,不要用127.0.0.1,不要用localhost,不要用IP,用主机名加hosts配置,省事还不容易出错。code
slaves中的配置是datanode起来的关键,列出的机器,才会有datanode服务。xml
4.windows链接上hdfs服务器后,安全模式关闭后,java程序可读取可是不能写操做,这是由于默认是用当前用户名去通讯的,关闭权限校验?或去改当前用户名?麻烦,直接一行代码搞定!
System.setProperty("HADOOP_USER_NAME","xxxxxxxx");
固然,安全模式开启了的话,确定是不能写的了。
查看安全模式状态
hadoop dfsadmin -safemode get