ubuntu-14.04.1+hadoop2.4完全分布式搭建要点
最近帮公司搭建hadoop集群,现在总结一下相关要点:
1、没有搭建过hadoop的,建议先搭建一个伪集群体验一下
2、建议最少集群机器配置:5台。 1台NameNode? 1台 ResourceManager 3台DataNode
3、完全分布集群搭建的重点、难点就是无密SSH登录,很多人会卡在这里。
重点:
<1> 各个服务器创建同一个账号,同一个用户组
<2> ssh-keygen -t rsa生成无密密钥文件
<3> cat id_rsa.pub >> ./authorized_keys把公钥追加到authorized_keys,注意重点使用>>,这样可以把公钥追加进去,而不是覆盖。网上很多教程,都是用scp命令从master向所有slave
传输authorized_keys,但是你会发现resourcemanager主机并不能ssh无密访问datanode。解决方案就是在resourcemanager主机再做一次cat id_rsa.pub >> ./authorized_keys,然后把authorized_keys scp到所有datanode。
4、一般经过以上配置后,namenode和resourcemanager都很容易就启动起来,但很多人会碰到datanode不能启动。一般原因就是datanode id跟集群ID不一致。处理方案就是删除version文件夹,重新格式化dfs。
5、hadoop集群终于启动起来,在namenode主机使用eclipse能正常上传文件和跑mapreduce程序。但是,win7主机上,使用eclipse开发hadoop程序,发现跑起来报错:
java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.
设置了系统变量 HADOOP_HOME发现不行,最后只能这样:System.setProperty("hadoop.home.dir", "D:/hadoop-2.4.0");
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
缺少winutils.exe,找到后放到$hadoop_home/bin里面。(文章提供附件下载)
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
缺少hadoop.dll,找到后放到$hadoop_home/bin和system32里面。(文章提供附件下载)
?
以上问题都解决了,就可愉快地开发hadoop了。
?
?
?
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。