小白文 hadoop+docker分布式搭建

hadoop平台搭建小记 (兼文档从小白做起? )+自身遇到的bug

备注 : 本身这是博主写的 但是中间很多精华并不是我写的  所以不算原创文 仅此声明~~~~~~

1 安装docker

引流...

https://blog.csdn.net/tina_ttl/article/details/51372604

2 搭建hadoop

同上....两步走

https://blog.csdn.net/u013140345/article/details/79771208

https://blog.csdn.net/u013140345/article/details/79773212

PS:不单单是用比较流行的CRT或者docker本身给的Terminal  同样可以用xshell等等支持ssh的连接 但是记住 因为他们之间的关系

是本机(宿主机)-》搭载docker虚拟机(docker平台)-》搭载docker的容器 ,所以xftp不好连接进入容器本身操作文件 ..比较好的做法就是做文件夹映射到固定位置 以下会有文档记录博主当时做的时候的参考文档 ... 我们所连接的容器是由每次开主机之后   进入   Terminal开启Docker 所分配的172.17.0.xx也是docker的局域ip  xshell是连不上的 xshell每次都是连接192.168.99.100由docker进去容器..用xshell仅仅是因为方便 ! 

在做docker+hadoop集群搭建的时候最重要的就是ssh服务

建议将ssh服务吃透 才能比较好的去调整可能出现的hadoop搭建失败问题.... (注意ssh的各个文件..)

docker本身类似一个虚拟机平台  通过拉取公用仓库所提供的的镜像到私人仓库(开启docker之后的192.168.99.100 ->进去之后的 命令docker images 即是你私人拥有的镜像)然后通过run调用镜像新建容器提供使用..

建议在上手docker装载各种操作系统或者数据库,服务等等之类的的时候随时记得保存镜像 免得出现从删库到跑路的情况~

下面有一份常用的docker命令表 (非全部..).记得  一般就ok了

.常用命令:(前面一般都加docker)

docker  ps -a  :查看容器(当前所有容器)

              images :查看所有镜像(自己的) 

              pull + 镜像名:Tag名  :从公共镜像库拉取所需镜像

              run   + -it   +  -v 文件夹映射,比如 /c/Users:/root/build)  +   容器名【:tag名】  +  /bin/bash(shell命令)  :新建容器

             exit    :离开容器  (使用run之后第一次离开容器会自动关闭容器)

             attench  :进入开启的容器(再次exit或者ctrl+d会关闭)

             exec  :  进入开启的容器(再次exit或者ctrl+d 不会关闭)

             start  +  容器ID(前三位以上都可以)(或者容器名字  容器名字在run的时候加参数 --name 标识出来) :开启容器

             stop  +  容器ID(同上)  :关闭容器

            rm  :删除容器

             rmi  :删除镜像

以上是一般会用到的  还有更多命令有兴趣可以自己查..

然后是作者搭建时曾经遇到的问题  (两个节点DataNode有一个搭建失败 )

java.io.IOException: Incompatible clusterIDs in /usr/local/hadoop/datanode_dir: namenode clusterID = CID-a5104754-f75d-47c1-a0da-c7100947ed8e; datanode clusterID = CID-cd1c8df6-ddad-4ef2-a240-0e8188e3f585
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:760)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:293)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:409)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:388)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:556)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1574)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1535)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:368)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:266)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:750)
    at java.lang.Thread.run(Thread.java:748)
2018-10-08 11:19:52,632 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool ID needed, but service not yet registered with NN, trace:
java.lang.Exception
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.getBlockPoolId(BPOfferService.java:196)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.hasBlockPoolId(BPOfferService.java:206)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.shouldRetryInit(BPOfferService.java:812)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.shouldRetryInit(BPServiceActor.java:792)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:755)
    at java.lang.Thread.run(Thread.java:748)
原因 (作者在搭建一主公2忠臣集群的时候 - - 换了docker的局域ip 然后ssh就互相拼不通了  同时中间一个从服务器就暴露了clusterID不同的问题 (操作不当引起的????)   )

解决方案  1    查配置文件etc/hadoop/hdfs-site.xml 知道data存放文件夹   进入其中的current  然后vim编辑 VERSION文件  修改clusterID为和 报错信息中的namenode 的ID相同  即可

                  2    直接删除data存放文件夹  (第一种的变种  在停掉集群之后删除错误data让hadoop自动格式化创建初始文件 ...)

附录:博客主用过的文档....

百度云盘...

链接:https://pan.baidu.com/s/1f9sQWO-CMUKdvVuDSvy04Q 密码:3fw6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值