我的阿里云服务器的公网IP为a11.b11.c11.d11,内网IP为a12.b12.c12.d12;腾讯云的服务器的公网IP为a21.b21.c21.d21,内网IP为a22.b22.c22.d22。
以阿里云的服务器为主,跑一个NameNode和一个DataNode,腾讯云服务器跑一个DataNode(个人腾讯云服务器跑了太多服务了,且配置等方面也不太够)。
下面开始。
首先,安装并配置Java环境,这就不多说了,apt-get或者yum安装一下,然后改一下环境变量即可。我安装的是Java7,因为我用的Hadoop的版本是hadoop2.6.0-cdh5.10.0,听说Java8会有问题,但我没有实际试过;
然后,编辑/etc/hosts文件,将本系统的别名编辑上去,在阿里云服务器上编辑如下:
在腾讯云服务器上编辑如下:
然后,在两台服务器上通过 sudo adduser hadoop 命令添加hadoop用户,记住设置的密码,我设置的是一样的;
然后,设置ssh免密码登录(最开始我懒得设置了,每次启动集群和关闭集群均要输入密码,我设置的密码又很麻烦,输入密码输入到我怀疑人生)。首先输入ssh-keygen
-t rsa,一路回车即可,此时在用户的根目录生成了~/.ssh/id_rsa.pub
公钥,将其推送给集群中每台服务器即可。因为我的集群中共有两台机器,命令为:ssh-copy-id -i ~/.ssh/id_rsa.pub
hadoop1;ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop2,成功后就可以ssh免密码登录了;
然后,记得关闭防火墙,ubuntu下的关闭防火墙的命令是 ufw disable;
然后就是安装hadoop集群了,修改$HADOOP_HOME/etc/hadoop/目录下的三个文件即可,集群中的所有服务器都要改,并且集群中的所有服务器的Hadoop的路径最好完全一致。这三个文件是:
core-site.xml
hdfs-site.xml
slaves:
最后,在$HADOOP_HOME/sbin路径下,执行./start-dfs.sh即可。
贴一张NameNode网管显示的图:
碰到的四个坑:
(1)启动时显示找不到$JAVA_HOME,这个时候在hadoop-env.sh文件中把$JAVA_HOME用绝对路径重新定义一下即可;
(2)启动时,DataNode无法启动,看日志显示DataNode的Cluster-ID和NameNode的Cluster-ID不匹配,此时找到hadoop文件目录下DataNode的VERSION文件,将它的Cluster-ID修改为和NameNode的Cluster-ID一致即可;
(3)启动时,NameNode无法启动,看日志显示文件系统的路径有问题,执行./hdfs namenode -format,重新启动集群
(4)启动时候,发现webui界面不出现,但是集群里的进程都是全有。最后通过阿里云和腾讯云的安全组规则,释放全部端口。
热门工具 换一换