上面的四五两期讲述了如何将Hadoop部署在一台机器上,以及如何部署在多台机器上。由于本人之前的博客都是直接看视频,然后把视频中
讲的要点记录下来,然后发在这里与大家分享,并未亲自进行实验,因此心里一直以为憾事。所以在继续进行下面的课程之前,我先按照前面的
博客搭建了一下Hadoop的实验环境。并且将一些要点记录下来:
一. 在一台机器上安装Hadoop实验环境
针对在一台机器上搭建Hadoop的实验环境而言:
第一,首先虚拟机环境的搭建。我的实验环境只有一台电脑,配置也不是很高,不过勉强凑合能跑一台虚拟机。我的实验环境是一台台式机,Ubuntu12.04(amd64) + VirtualBox。VirtualBox中安装了另外一个Ubuntu环境,外面的系统不作为Hadoop节点,只是用于ssh登录,提供一个管理窗口。在VirtualBox中建立的那台机器才是我们实际操作的机器,命名为HNName.
这里为什么要把NNName放到虚拟机里面呢?既然搭建仅有一台机器的Hadoop环境,按理说只需要一台机器就够了么。是这样子的,在一台机器上搭建Hadoop环境的要求非常简单,仅仅需要下载好Hadoop,安装好JRE环境即可。不需要虚拟机,也不需要ssh。这里我用虚拟机做实验,主要是为了以后搭建多台机器的Hadoop环境做准备。因为实际上多台环境的时候,就是最好有一台统一个管理界面(无论windows还是linux),然后不同的节点放在不同的机器上。
第二,VirtualBox的网络配置。这个我试了很多次,VirtualBox有四五种网络设置的方式,这里我就不详细说明。最好的配置环境是虚拟机和操作界面(叫主机吧)相互联通;同时虚拟机也能上网。这个在有网线的情况下,可以通过给虚拟机设置一块NAT网卡(用于外网链接)和一块Host-only网卡(用于内网链接)完成;我自己实验的过程中,如果没有网线只用无线网的话,我没有成功,结果是只能要么链接外网,要么链接内网;二者不可兼得。所以最后还是在有网线链接的情况下解决这个问题。(有没有人找到无线网下面的完美网络方案的?)
第三,SSH链接。在虚拟机中装好ubuntu之后,第一件事是安装ssh,可以先通过ps -e | grep ssh 来查看一下是否有ssh功能。我们的机器上必须安装好openssh-server才可以。如果结果显示了有sshd, ssh-agent两项,说明条件满足,否则要安装openssh-server: sudo apt-get install openssh-server
安装好以后,尝试ssh登录(主机和HNName上面都要有openssh-server)。要验证联通性,可以先ping一下看看是否联通;通过ifconfig来查看ip。如果网络配置好了,就应该可以联通了。
注意,在前面的教程里面,用的是ssh HNName就直接登录了。但是我这边实验的时候不知为何不行;但是使用ip可以链接上 ssh username@192.168.56.101,输入密码即可登录。
第四,完成上面的所有步骤后,网络环境就算搭建好了,而且上面的所有内容实质上和hadoop没有太大关系。下面我们登录HNName后,就开始搭建Hadoop环境。接下来的步骤基本上和教程是一致的。下载并安装Hadoop,配置环境变量,下载JRE,配置hadoop中的一些内容;即可完成。
我在实验的过程中,完成上述步骤的时候,出了一个问题,就是执行start-all.sh脚本时候失败,看了失败记录发现权限不行,于是修改了一下权限,就可以顺利跑起来了。
二. 运行Hadoop经典测试问题WordCount程序
完成了上述工作后,我们可以按照Hadoop自学笔记(三)介绍Map Reduce里面的内容,来验证环境是否已经搭建完毕。具体步骤请看:
实验过程中碰到的问题如下:
1. hadoop fs -ls无法查看文件系统
如果报错connection refused,除了链接有问题的可能性外,先看一下你的hadoop环境是否启动了!囧。。。。
2. hadoop fs -ls 提示$HADOOP_HOME is Deprecated 这个可以把~/.bashrc中的环境变量$HADOOP_HOME改成$HADOOP_PREFIX解决
3. hadoop fs -ls 无法查看文件系统,提示‘.’ no such file or directory
但是hadoop fs -ls /有用,hadoop fs -mkdir /data也起作用。这个可能是在文件系统没有该用户的根目录,所以找不到,可以执行:
hadoop fs -mkdir -p /user/[current login user]/
然后就不会出现了
4. 无法浏览文件系统,可以登录HNName:50070但是里面打不开文件系统
试试这个建议:
打开$HADOOP_HOME/conf/core-site.xml
把
<value>hdfs://localhost:10001</value>
修改成
<value>hdfs://[your ip]:10001</value>即可