lasdkjqfw
Big Data Big Project
写在前面
这篇文章主要给我们组没怎么做过的组员看吧
我算是大概记录了一下整个流程(搭建过程以及过程中遇到的bug及解决办法),具体做法大多贴了我当时就具体使用的博客等等的链接。
我们组这次完成的工作主要是
- 在vmware虚拟机上搭建hadoop-1.2.1,用python写了wordcount的mapreduce脚本
- 在vmware虚拟机上搭建hadoop-2.7.3,并搭建spark
- 使用docker搭建spark环境,hadoop-2.7,用python调用并训练Word2Vec模型(机器学习模型),通过python使用改进后的TextRank算法对文章进行关键句词提取。
这些工作的话我们拟分工就是:大家都自己完成了第一项工作。
所以在接下来的文章你们只用看有关第一项工作的就行了(剩下的我有时间再写hhhh)。
推荐先整体看看工作的流程,想要了解具体操作时再点进去链接,要不然可能要看比较久。
报告的话大家尽量根据这篇Review完成吧,有什么问题的话再问我^_^
虚拟机搭建
大致依照这篇博客进行。
创建虚拟机
略
安装操作系统
我们一开始安装了CentOS6.4,但是在之后调整三台虚拟机之间的网络配置时遇到了困难,最后选用了CentOS7.0。
安装使用CentOS7.0-minimal的iso映像(非图形界面)(为了省磁盘空间。。。
iso映像:一种光盘的存档文件,包含文件系统在内光盘的所有数据
使用iso映像文件等同于物理机插入光盘(第一次操作时误以为直接是读取文件的意思光等了好久= =实时上直接开机就可以进入安装界面)
虚拟机网络配置
这一步很坑= =
当初为什么选择CentOS7也是因为6.4的网络配置太麻烦
配置NAT模式
关于虚拟机联网的三种主要方式:host-only, bridged, NAT
详见:啦啦啦
在CentOS6.4上配置主要按照这篇和这篇
期间因为虚拟机克隆导致网卡同名等等问题搞了n久
最后放弃6.4选择7
在CentOS7上使用nmtui
:
edit ->
下面两个勾上就行
改名儿
CentOS7可以直接用nmtui
改hostname就完事
开始搭建hadoop啦~
关于理论基础:这篇前面提到的那几篇康康就行
1. 修改hosts:方便之后直接用主机名而不是IP地址
具体做法详见上面链接
2. 配置ssh无密码访问
ssh:一种远程操控另一台机器的协议
但是一般的用ssh连接另一台机器每次都需要输入密码,为了方便hadoop系统中每一台机器都可以顺畅的连接到另外的n台,需要让他们能无密码互相访问
具体做法见上面连接
3. 安装hadoop及配置配置文件
没啥特别的详见上面链接
4. 格式化namenode
前面我们编辑好了hadoop的配置文件的配置,接下来就要让他们生效。具体做法就是在master上格式化namenode。
具体操作步骤见上面链接。
这里有一个比较常见的bug(大多数人都会遇到的,可以写进报告的hhh):
在第一次格式化的过程中,很可能某一个配置文件哪里没配置好,格式化后datanode跑不起来(检查datanode有没有跑起来的办法在上面链接里有(其实就是通过jps查看进程)),在修改了配置文件再重新格式化之后,会发现还是不行。
原因是:在第一次格式化namenode时,namenode节点和datanode节点会生成一份版本信息文件,文件中有各自的id等等。当尝试进行格式化时,hadoop会在namenode和datanode上生成各自适配的版本信息。如果第一次格式化失败,进行第二次格式化后,namenode上的版本信息和datanode上面的版本信息就会不一样(可以看做每次针对namenode的格式化会改变namenode的版本信息而datanode则不会变(当然具体原理可能不是这样))
解决方法则是在第二次格式化namenode之前,把namenode和datanode上面的版本信息先删掉。具体做法因为找版本信息在哪里很麻烦,直接rm -r ./hdfs
,将hdfs文件夹(即每次格式化后创建的文件夹)删了完事
静态ip
事实上走完上面的步骤,hadoop-1.2.1应该就能跑了(具体能不能可以尝试几个hadoop命令,见this page)
但是过了几天,当你想回过头来试试情况,会惊奇的发现虚拟机们的ip地址变了。
这就导致他们之间ssh无法访问,hadoop系统又要重新配置。如果他们一直变来变去,这个系统显然就是有点大问题了。
解决思路也很简单:想办法令他们的ip是静态的。
于是查找若干资料发现:vmware虚拟机用NAT模式联网的时候,ip地址通过dhcp服务器分配,这个分配是动态的,dhcp服务器会看情况给虚拟机IP地址,且过一段时间,这个IP地址还会被他收回。所以想解决掉这个问题,要么就想办法摆弄dhcp服务器,使其能为我这几台机子静态分配ip,要么,就不用dhcp了。
第一种方法:配置dhcp服务器
具体做法是在一本纸质书上看到的,所以就只能写在这里了(没链接可以贴了= =r)
在dhcp服务器配置文件中加入:
host 主机名称 {
hardware ethernet MAC地址
fixed-address IP地址
}
完事。
但是问题又来了,我们去哪里找vmware的dhcp服务器的配置文件呢?(gui里面是么得的)
查了n久后,发现其实官网里面有这个DOC。
√
第二种方法:md干脆不用啦!
这个就简单粗暴了,如果是CentOS7以上的版本,使用nmtui,把dhcp一关,手动设置一下ip地址(我记得还要设置dns服务器什么的,记不太清了)就OK了。