VirtualBox+Ubuntu16.04.4+Hadoop-2.6.5搭建

搭建这个环境真的是一把辛酸泪,不说了。赶紧记一下遇到的坑,防止之后再落入。

前提:搭环境之前一定要先去了解一下hadoop大致的工作原理,懂得它的一些专业名词,比如JobTracker,TaskTracker,DataNode,NameNode等等,以及他们的作用,只有这样才不会一头雾水,我就是一开始就直接搭环境,一脸懵逼,最后只只能去恶补原理。我是用完全分布的方式来搭建hadoop的环境

1.环境:一共用了三个虚拟机,一个担任namenode的角色,两个担任DataNode的角色。因为hadoop的工作环境是Linux,所以我们虚拟机的系统也选择了Ubuntu,当然其他Linux系统也是可以的,比如centOS。下面就开始安装虚拟机了。我最初选择的是VMware来安装虚拟机,刚开始并没有选择破解版的,因为看了网上有很多许可证秘钥,所以就很放心的去安装了,结果,那些许可证秘钥全都没法用!!!我简直太天真,too young too simple 之后又下了破解版的VMware,安装好之后,这时又出现了问题,因为实验室连的网是学校的校园网,所以安装了锐捷,结果这个曾经被我认为“完美”的软件真的完美的结束了我的联网模式。安装完VMware后,网络连接下回多了两个适配器,分别是VMnet1和VMnet8,这时锐捷会断开认证,并提示一台主机只能有一个ip地址,所有我只能默默的把这两张网卡都禁用了。为了能让虚拟机和宿主机以及虚拟机之间都能相互ping通且虚拟机可以上网,我们选择的只能是桥接模式,因为NAT模式不会给虚拟机分配独立的ip地址,它只能保证虚拟机能上网,而且锐捷这个软件还会把服务中的NAT给停止了,就算打开也只是维持60秒左右,所以啊,能装mentohust千万不要装锐捷。说干就干,于是风风火火的在VMware下装了三个虚拟机,参考网上的资料,开始配置。现在又开始遇坑了,为了能上网,虚拟机的IP必须和宿主机的IP在同一网段下,子网掩码、网关、DNS和宿主机保持一致,这个时候问题来了,我们实验室机子的子网掩码是255.255.255.252,也就是最后8位是11111100,宿主机的ip是172.26.30.214,网关是172.26.30.213,所以,问题来了,没有足够的IP可以供我选择呀,可是我想着先ping通,于是就选择了172.26.30.212作为其中一台虚拟机的ip,其他的都和物理机的设置一样,然后开始ping,结果怎么也ping不成功,ping谁都不行,花了一晚上改来改去,就是ping不同,虚拟网卡重启了无数次,虚拟机重启了无数次,反正就是不行,最后还找了大神来帮忙,大神也只能摇摇头,让我换成virtualbox来试试。带着郁闷回宿舍,洗洗睡了。第二天,到实验室又开始如火如荼的用VirtualBox来搭环境,VirtualBox是开源的,不需要破解,还是开源的给力呀,锐捷连管都不管它。因为寝室的另一个同学之前用的是CentOS的系统,加之前一天晚上的失望,所以我决定抛弃Ubuntu,开始用CentOS+VirtualBox,然后,又开始出现了问题,我刚开始用的是VBox5.0.24的版本,然后用它安装了centOS,居然启动不了,一启动就会报错,我把错误放到度娘去问,按网上的回答来改,可是还是不奏效。哎,我无奈的摇摇头。放一边,不管了。第三天,我重启了电脑,平时实验室电脑一般不关,想着没准重启就好了,重新打开vbox后,还是无法启动虚拟机,这时vbox跳出新的版本更新,我想着那就更新吧,既然之前的不行,没准新的版本的就可以了。于是就安装了新的版本的virtualbox,然后又安装了centOS,可以了。终于启动了。照着别人的一篇博客,我安装的centOS是无图形化界面的,要知道对于Linux,我几乎不太明白,加之这种无图形化界面的操作系统,我更是欲罢不能呀。但是还是硬着头皮配了网络,这次能和主机ping通了,但是还是不能上网。于是,我想着只要虚拟机相互之间能ping通就行,物理机不管它了。最初安装好虚拟机的时候用的是NAT模式,这样虚拟机可以上网,先在有网的情况下把vim ,ssh等一些需要的软件都给安装了,如果按照物理机的子网掩码,我的ip是不够的,因为已经放弃在桥接模式下上网了,所以我用的子网掩码是255.255.255.ip地址也是随便设置的,在虚拟机下安装了增强功能,这里也有很大的坑,(安装完一定要重启虚拟机,否则没有效果)用了共享文件,安装完Java环境以及hadoop环境,最后,克隆出另外两个虚拟机。ok

2.ssh实现无秘钥登录,这个主要是针对namenode所在的那台虚拟机而言的,namenode在启动时需要登录到另外两台机子,启动datanode,这里,我实在namenode主机生成公钥后,然后把公钥写到另外两台机子authorized_key文件下,因为之前我打开了id_rsa.pub看,一不小心可能加了空格之类的,导致最后ssh无法成功,之后又重新复制了一次,最后成功了。

3.启动,启动hadoop之后,发现我的namenode没有,这时我们要去看安装目录下的log目录,看其中的log文件,因为这个是按时间来写的,所以我们直接打开,拉倒最后看,找Erro ,Fatal这样的字眼,最后发现的问题是 namenode not fomat,其实我也觉得很奇怪,我之前明明已经format了一次,而且是成功的,但是既然日志都这么说了,我就又重新format 了一次 ,这次,真的成功了。不容易不容易。最后我用它执行了hadoop中的单词计数的那个样例,成功执行出结果。

总结:虚拟机分配的硬盘和内存太小,导致运行很卡。还是要不怕错误,不懂的问题要多问,多思考新的解决方案,不要一根筋。之后就要真正进入hadoop的学习阶段了,嘻嘻~

你可能感兴趣的:(hadoop)