美文网首页大数据
hadoop集群搭建的一些问题

hadoop集群搭建的一些问题

作者: 扬汤止沸腾不止 | 来源:发表于2018-09-15 20:54 被阅读17次

    时间如白驹过隙,转眼间已经是我们进行大数据学习的第二个月,这周,我们在熊大老师的带领下,顺利地用三台虚拟机成功地搭建了hadoop集群,但是,由于本人笔记本配置吃紧,无奈之下,只好尝试用云服务器搭建hadoop集群,下面,我来分享一下在云服务器中搭建集群碰到过的问题。首先,千万别用虚拟机和云服务器混合的方式搭建集群,一定不会成功的,因为服务器的根本无法ping通你的虚拟机,切记!!!!!!

    经过一整天的失败尝试,我终于放弃了上述方法,改租了三台云服务器来搭建集群,这是我成功搭建后的集群。


    1.png

    (hadoop和jdk安装就不再赘述了)
    首先,使用ssh工具连接上三台远程服务器,并且设置好免密登录,不然,到时候上传文件到hdfs时,会让你输密码输到爆炸!
    接着,配置好配置文件,分别是core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml以及在同名的以env.sh结尾的文件中配置JAVA_HOME地址,其中,在core-site.xml中配置启动namenode的地址,在hdfs-site.xml中配置启动secondarynamenode的地址,在yarn-site.xml中配置启动resourcemanager的地址。

    接着,输入 /usr/local/hadoop-2.7.2/bin/hdfs namenode -format 来格式化namenode
    之后,通过start-dfs.sh来启动HDFS,使用start-yarn.sh来启动YARN(启动YAEN时,最好在ResourceManager的机器上启动,不然,会导致resourcemanager无法启动,还得去手动启动一遍,浪费时间)
    接下来,就是我碰到的第一个问题,namenode无法启动, 查看日志,发现以下错误


    2.png

    图片只是截取,我简单说下,一共有两个错误,分别是Cannot assign requested address和Port in use: hadoop104:50090,根据字面意思理解,分别是不能分配要求的地址和端口50090被占用
    前者比较难理解,也无法着手操作,因此,我先上手解决后者,我使用 ps -ef|grep 50090 命令,结果发现除了执行搜索命令的端口外,根本没有别的端口,我不死心,继续用ps -ef|grep hadoop 来查阅,还真有一个,用kill -9 删除,结果发现,删除的是datanode的端口(/手动捂脸),最后,我不得不承认,端口没有被占用。死盯着日志,也看不出个所以然来,我只好上网查询,网上的帖子说,也碰到过这种情况,一般不是占用端口的问题,而是你无法分配地址到这个端口上,可能是配置文件有问题。
    因此,我打开/etc/hosts查看ip有没有写错,木有错误,又去vi /usr/local/hadoop-2.7.2/etc/hadoop/core-site.xml下查看,也木有错误,我不死心,又采纳另一种意见,将/etc/hosts下的127.0.0.1 和::1屏蔽,重启服务,结果还是打不开;
    关机,重启服务,失败 ;
    在core-site.xml中的hadoop104改成ip地址,重启服务,失败;
    失败;
    失败;
    失败了一下午,最后在阿里云的一个论坛上,发现有位大佬说,公网ip好像不能绑定端口号,于是,我怀揣着侥幸的心里,将/etc/hosts 中的hadoop104的IP地址从他给予的gongwangip改成ifconfig中写的私网ip,
    重启服务,成功了
    我日,心累,这么个问题搞了我两天,整个人都快崩溃了。。。还好成功了
    接着重新start-dfs.sh,然后使用jps查看,启动成功,master机上的datanode和namenode启动成功,接着又去slave机上jps,datanode没启动!!!!
    老规矩,查看日志
    FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to master/192.168.200.199:9000. Exi
    ting.
    2018-09-14 16:11:06,822 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid dfs.datanode.data.dir /usr/local/hadoop/dfs/data
    java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/dfs/data: namenode clusterID = CID-c1bf781c-d589-46d7-a246-7f64a6f24bc1; datanode clusterID = CID-b1ee6a5b-aa39-4e9e-b849-ee7c4650989b

    他说datanode的clusterid没有识别,由于不知道datanode的clusterid在那,我只好上网查,发现 在
    /usr/local/hadoop-2.7.2/data/tmp/dfs/data/current/VERSION并且需要令三台机器的datanodeuuid一样
    于是vi进去,修改clusterid,重启服务,jps成功
    之后,start-yarn.sh,也成功启动,我怀着激动的心情,在浏览器中输入http:/xxx.xxx.xxx.xxx:50070/dfshealth.html#tab-datanode,进去了!!一看。。。。。。只部署了一个datanode节点,这是什么鬼?
    接着,还是上网查询,原来三台datanode节点中的datanodeuuid和storageid必须不一致,不然,namenode智能识别出一台datanode
    于是,修改,重启服务,jps,
    打开50070,成功!!!
    打开8088,成功!!
    上传文件,成功!!
    hadoop集群成功搭建!!!

    另外,附赠一个小提示,最新版本的ie浏览器好像不支持打开这种网页,帮几个同学看过,好多都被坑了,请警惕。

    相关文章

      网友评论

        本文标题:hadoop集群搭建的一些问题

        本文链接:https://www.haomeiwen.com/subject/erbtnftx.html