平时工作是在windows 7环境下,远程连接使用公司的测试云,不过对一些小数据集的测试,想在本地上直接进行测试,于是就想在虚拟机中安装ubuntu系统,然后再在unbutu上搭建一个伪分布的hadoop。此blog是为以后查询使用。本想一个小时搞定,谁知着实费了不少功夫,于是特此记录,方便以后查询。

1. 在vmware workstation上安装ubuntu

网上有很多关于win7上安装ubuntu虚拟机的教程,一般都不会有什么问题,新手来说注意在安装时注意划分一下分区就可以了。

我的环境上,默认安装ubuntu12.04成功后,是通过nat方式上网的。可以访问外网。我遇到的第一个问题就是我想把其它电脑上的资料拷贝到这台虚拟机中,不想通过u盘或者是其它方式拷贝,只想用scp命令,方便嘛,然后发现虚拟机ubuntu可以访问外网,但是外面是无法访问这台虚拟机的,于是去网上搜了一大把,最后决定采用bridge模式向外提供ip。

http://firefore.com/2008/04/vmware-1.html

2. 创建hadoop用户,用户组

groupadd hadoop

useradd -s /bin/bash -g hadoop -G root -d /home/hadoop -m hadoop

3. 将hadoop用户添加入sudoers

以root用户登入系统:

vi /etc/sudoers,找到rootALL=(ALL:ALL) ALL,在它下面添加一行:hadoopALL=(ALL:ALL) ALL,形如:



然后强制保存退出。

4. ssh 免密码登陆设置

先切换到hadoop用户,一下步骤都是在hadoop用户身份下执行

见链接:http://blog.csdn.net/shuhuai007/article/details/8298814

5. 将hadoop源码放在/opt/hadoop下(这是我的习惯)

我目前安装的是cdh3u0版本,创建软链接以便于升级版本。如下图所示:



6. 设置hadoop的环境变量

修改/etc/profile,在文件末尾添加如下几行:



修改完之后执行命令source  /etc/profile

可以看到配置HADOOP_CONF_DIR为了升级方便,它指的是hadoop的配置文件的存放目录,对其进行单独管理。

然后将原始的配置文件拷贝到HADOOP_CONF_DIR所指的目录下,这里是/etc/hadoop/conf/

ll /etc/hadoop/conf || mkdir /etc/hadoop/conf

cp /opt/current/current/conf/*    /etc/hadoop/conf/

7. 修改hadoop配置文件(伪分布模式配置)

见官网:http://hadoop.apache.org/docs/r0.20.2/quickstart.html#PseudoDistributed

Use the following: 
conf/core-site.xml:

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>


conf/hdfs-site.xml:

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>


conf/mapred-site.xml:

<configuration>
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:9001</value>
  </property>
</configuration>

8. 启动hadoop(cd到hadoop安装目录)

bin/hadoop namenode -format

bin/start-all.sh

当我输入star-all.sh后,出现问题了,如下所示:

Error: JAVA_HOME is not set and Java could not be found     

我明明已经设置了,然后心想一定是被hadoop自带的某个sh脚本覆盖了。经过查询,果然如此,

查看此链接:http://blog.csdn.net/shuhuai007/article/details/8298985

修改hadoop的脚本后,重新执行start-all.sh,输出如下:



用jps查看一下:



至此可以看到几个进程都在,启动成功。

在命令行试验下hadoop命令:hadoop fs -ls  /,如下所示:



奶奶的,还有问题,想了一下,应该是配置文件没有配,火速到/etc/hadoop/conf目录下,找到log4j.properties,在文件末尾添加如下:

log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender

然后执行bin/stop-all.sh;bin/start-all.sh,再次执行hadoop fs  -ls / ,如下所示:




这次终于OK,一切搞定。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐