今天我们来把Hadoop弄到多台机器上,脑补一下手头有500多台机器,大大大老板喊我们去部署一套传说中的大数据平台,好多好多银子,人生小巅峰有木有。啪,打醒,回到现实,我们现在手头只有几台虚拟机。
下面开始动手了 。
第二台DataNode的部署
有了之前的准备工作,新增一台DataNode的部署显得很简单,我的新机器取名为gz-bigdata-lw-02.com,在第一台机器中配置好/etc/hosts域名解析,同时配置好和DataNode的免密码登录,方便我们传输文件:
图一:域名解析映射
图二:建立免密码登录
接下来,依次同步jdk目录、hadoop安装包目录、/etc/hosts、/etc/profile
图三:同步文件夹
在第二台节点上建立软链接和数据目录:
图四:软链接和数据目录
接下来,为了使配置生效,在新节点中执行source /etc/profile,然后在任意目录执行启动datanode命令:
图五:DataNode节点启动
我们也可以从ui面板上面看到有两个DataNode节点了,DataNode启动就算完成了。
图六:ui中查看DataNode
这种方式是datanode本来的启动方式,我们不希望每次登陆到从节点中去执行命令,我们可以直接在NameNode中实现一键启动,我们只需要在hadoop配置文件/etc/salves中添加我们的DateNode节点:
图七:从节点的配置
图八:感受一下
分布式存储
我们来进一步了解一下数据在hdfs文件中的样子;我们注意看之前上传的文件,有个replication是1,BlockSize是128MB,这个信息是表示数据在hdfs中存储了一份,占用了一个文件块。
图九:UI中的存储信息
点击文件名可以看到数据块的信息:
图十:UI中的文件亏信息
很自然,我们想找到文件丢到hdfs长什么样子了,还记得我们配置的那个dat目录么,我们通过块的名字去find一波
图十一:查看存储的文件块
不出所料,我们的文件果然在里面,内容还保持完好
我们调整一下参数,备份数改成了2,文件块大小改成了1m,记得重启集群
图十二:调整参数
我们这次上传一个69M的文件,按照我们的块大小,我们预期是68份文件
图十三:上传大块文件
我们查看ui可以看到块文件从0到了68正好我们的预期,同时注意到两台节点中都有存储,这个其实就是我们的备份配置。
图十四:文件块情况
由此我们可以脑补这么个片段, 数据被丢进hdfs系统中,大块的数据文件被拆分成多个bolck,存储在各个节点中,按照这种存储法则,只要存储节点足够的话,再大的文件也可以被拆分成小文件存储进hdfs中,这就是hdfs中存储的小秘密。
让部署更加懒一点
我们发现,部署DataNode的时候,我们只要scp相应的文件就可以了,至于启动,我们也是在slaves中配置了从节点,然后启动。这种事情碰到了平时爱偷懒的我,自然想到,更自动一点,我这边还准备了剩下3台机器,下面我们把部署做得更加简单一点 :
我们还是在01节点里面搞事,先配置和其他节点的域名解析
图十五:文件块情况
全部进行免密码登录配置:
图十六:免密码登录
获得了root权限的免密码登录之后,我们把需要部署的节点定义成一个数组、把需要做的操作,封装成函数,然后一键执行,就把配置和部署的文件都分发到节点了,达成成就,初级懒人!
图十六: 初级懒人秘籍
然后只要执行脚本,想想我们有500台机器的样子~~
小总结和下作业
回想一下部署从节点的方法,基本的套路都是首先打通免密码登录->远程下发配置文件->一键启动。这个办法适用大部分分布式软件的部署,当我们这些操作写到了脚本中之后,可以快速方便地部署到很多台机器上去,你get到了么^^~~
最后我们想想上面留下的几个问题:
- 在做免密码登录的时候,脚本会提示输入密码,这个地方可以自动化么?
- 我们在添加节点的时候,还是需要去改脚本,能不能更加方便?
- 当我们单独部署一个配置文件的时候如何去做 ?
这些问题,大家想想,我们再后续的文章中介绍哈~~
未完,待续!