我觉得这篇帖子是我写的最重要的一篇帖子了。哈哈,肯定能帮上你不少忙。
我真的是愁了两天多,全部通宵,一点一点实验出的经验,绝无虚假,我都有亲自做过。
心好痛,对新手就是一种折磨啊。对我这种强迫症就是要把我逼上绝路啊。
经过上一篇补充配置后,其实差别就在于===>我的前一篇的配置应该是hadoop版本2.*之前的,
但是后面的补充配置是hadoop 版本 2.*以后的
所以无论配置还是语法,还是文件操作脚本集合的目录我都推荐使用 2.* 以后的版本
强调一下,这里不是centos ,所以没有etc/sysconfig/network 文件的web配置
ubuntu是在etc/network/下的interface 文件。我看了一下,网上都说要改这个配置。
我不知道是不是真的有人是这样解决的,但是我看了一下这个文件,明显不是啊,内容都是关于网卡,网口信息的
hadoop 用不到这样的硬件网卡配置信息吧?
我建议是,实在解决不了在修改这儿的配置。这儿的配置也要重启才能生效的。
这里我推荐使用的工具是Xshell4 ssh 登陆器,这样就在一台电脑上操作三台电脑的配置,就不用跑来跑去。
之前用的putty 也挺好用的。
2.* 以后 的版本使用的yarn 框架,所以也会导致一些不必要的错误。
比如我之前的hadoop 是配置通过了的,但是到2.* 补充配置后,就怎么都启动不了
大部分问题都处在root 目录下的etc 下的hosts 文件里,
所有的问题结果都一定要翻阅logs 文件夹下的 yarn-luis-resourcemanager.log 文件。
都是简单的英文,而且,错误问题可以直接拷贝出来
1、一直卡顿在running job 那里,一直不跑,但是通过8088 端口查看结果,是任务已经被accepted 但是就是不跑动。
导致这个问题的原因有很多。但是,我不能保证给你提供万能的解决方案。你看看yarn-luis-resourcemanager.log的错误信息
或者如果有的话,看看命令行窗口弹出的错误信息
2、replication 只能复制到0个节点上(不能把任务部署到其他data任务节点上),datanode 没启动
3、如果可以进行map 和 reduce 恭喜你,至少程序是在跑动的。可是如果出现connectionException,连接异常,或者说是
拒绝连接,导致出错
这里我提供几种可能的错误解决办法:
如果:等待资源?那就把资源(内存弄大一些 ,或者不要在配置里设定内存的大小),我用vm虚拟机设置的是1g内存,没出现这种情况
如果:unknowhost XXXXXXX? 先看看命令行里输入hostname 能不能有结果,然后hostname -i 看看能不能出ip结果。
如果不可以,那就在hosts文件里添加上对应的hostname;
如果都可以,再编辑hosts 文件 把包含XXXXXXX的名字放到对应的ip 的后面,删掉127.0.1.1
(我也不知道为什么ubuntu会配置这个地址 为 hostname XXXXXX ,一般来说,本地应该是127.0.0.1才是 ,
可是它默认配置的时候末两位都是1.1,好奇怪,但是别管他奇怪,删掉掉它。)
如果:访问拒绝,尤其是跳到了localhost:53652,尤其是跳转到这样一个奇怪的端口上,首先,就把localhost 那一行全部注释掉
其次,还有一个不知道会不会起决定作用的地方,就是我两台slaves 是windows下vm跑的ubuntu ,但是windows我没开telnet 服务
虽然我关了windows防火墙和ubuntu防火墙,为了保险起见,大家还是把telnet 服务打开吧,如果打开出错,那就开启相关的
依赖的服务项目,依赖服务项目都开启了话,telnet就可以打开了。最后把/hdfs-site.xml 文件里添加
<property>
<name>dfs.permissions</name>
<value>true</value>
</property>
如果:datanode 没有启动,这个我实在没有什么别的办法,要么先stop-dfs ,stop-yarn 然后等一分钟,在start-dfs 和start-yarn。
如果还没有启动的话,我的办法就只有先stop-dfs ,stop-yarn 后,我就把slaves 上的hadoop 2.6.0文件夹删了,然后重新拷贝一份过去
这里注意,一定要先确定断开服务后在拷贝,而且有的文件夹是可以删掉的,比如logs 比如 input 比如dfs 下的 name 和 data 文件夹下 的所有文件
比如 tmp 下的 所有文件。删完了在拷贝
再重新格式化namenode 在启动就好了
如果:这里我有个错误;端口写错了,我记得我前面两篇,关于9001 这个端口,我应该是写重复了。
错误在:hdfs.site.xml
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>h5:9001</value>
</property>
把9001 改成 50090
如果:端口没开启,如果是需要访问特定端口的程序端口没开启,那就把它开启就行了。
一旦改了hosts 文件,一定要重启机器,hosts 文件才能生效,这个过程很麻烦费事,但是不得不做。
我的建议是,你要是嫌麻烦干脆把我上面关于hosts 配置的全部一起做了,然后重启就可以了。
至少我是全部都做了,最后才能跑通程序的。
为了保险起见,我把所有的关于h5,h1,h2 ,都换成了对应的ip地址
嗯,错误就是这么多,如果还有错误,可以把日志信息拷贝出来,放到网上,这样大家也更加清楚你错在哪里,
也可以对症下药。