本文主要介绍hadoop在单机环境下的搭建。

操作系统:ubuntu 10.04

java运行环境:jdk6

1. 首先安装java运行环境

由于在ubutu环境下,可以直接用apt-get来安装。

sudo apt-get install openjdk-6-jdk

3. 下载配置hadoop-1.0.1

下载hadoop

可以到 http://www.filewatcher.com/m/hadoop-1.0.1.tar.gz.60811130-0.html上下载

解压即可

进入home目录,然后安装openssh

sudo apt-get install openssh-server

建立ssh-key

ssh-keygen -t rsa -P ""

选项按enter默认即可

接下来,启用ssh密钥

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

/etc/init.d/ssh reload

中间可能出现的问题:

1. Agent admitted failure to sign using the key 解法

sudo ssh-add ~/.ssh/id_rsa

hadoop 商用版本 hadoop1.0_java

2. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED 的解决办法

删除.ssh/known_hosts文件。

在本地机器上曾经用SSH登录过这台远程计算机,因而留下了known_hosts的记录,在远程计算机重新安装系统后不能够通过鉴权. 

3.Could not load host key: /etc/ssh/ssh_host_rsa_key Could not load host key: /etc/ssh/ssh_host_dsa_key

hadoop 商用版本 hadoop1.0_java_02

重新建立ssh_host_rsa_key和ssh_host_dsa_key。

现在就可以尝试登入下localhost看是否时免密码登入

接下来,配置hadoop

配置conf/hadoop-env.sh

配置JAVA_HOME、PATH

export JAVA_HOME=/usr/lib/jvm/java-6-sun 

export PATH=$PATH:/opt/hadoop/bin 

注意:有些文章上要配置HADOOP_HOME,在这里我不配置,有时会遇到$HADOOP_HOME is deprecated.

在~/.bashrc中添加 export HADOOP_HOME_WARN_SUPPRESS=1,然后运行source命令使之生效。

配置 conf/core-site.xml  

<configuration>   <property> 
    <name>fs.default.name</name>     <value>hdfs://localhost:9000</value>   </property>   <property> 
    <name>hadoop.tmp.dir</name> 
    <value>/tmp/hadoop/hadoop-${user.name}</value>   </property> </configuration>

配置conf/hdfs-site.xml 

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

注意这里只需要1个备份

配置conf/mapred-site.xml

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

好了,hadoop基本配置完呢,接下来下我们的环境

格式化HDFS

source /opt/hadoop/conf/hadoop-env.sh 使得hadoop环境生效

hadoop namenode -format格式化HDFS 

 格式化过程中可能发生Format aborted in /home/hadoop/tmp/dfs/name错误,只要删除/home/hadoop/tmp下的所有文件然后再执行就可以了。

运行Hadoop

现在所有的都配置完呢,现在运行bin/start-all.sh

浏览NameNode和JobTracker的网络接口,它们的地址默认为:

  • NameNode - http://localhost:50070/
  • JobTracker - http://localhost:50030/

将输入文件拷贝到分布式文件系统:$ bin/hadoop fs -put conf input

运行发行版提供的示例程序:$ bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'

查看输出文件:

将输出文件从分布式文件系统拷贝到本地文件系统查看:$ bin/hadoop fs -get output output $ cat output/*

在eclipse上配置hadoop编译环境

下载hadoop 1.0.1 eclipse plugin,然后放到eclipse的plugin目录里。

如果安装插件成功,打开Window-->Preferens,你会发现Hadoop Map/Reduce选项,在这个选项里你需要配置Hadoop installation directory。配置完成后退出。

然后配置hadoop目录

hadoop 商用版本 hadoop1.0_hadoop 商用版本_03

接下来配置hadoop Location.打开Windows -> Show View -> MapReduce Locations

hadoop 商用版本 hadoop1.0_xml_04

hadoop 商用版本 hadoop1.0_java_05

下面就可以开始hadoop之旅了。

下面总结下在运行hadoop程序过程中可能遇到的问题:

1.  hadoop namenode 无法启动

每次开机重启之后,运行start-all.sh,总是无法运行那么namenode,主要原因是由于tmp文件,默认的tmp文件每次重启之后都会清空,导致无法开启namenode,只要在core-site.xml中配置

<property>
                        <name>hadoop.tmp.dir</name>
                <value>/home/XXXX/hadoop_tmp</value>
                        <description>A base for other temporary directories.</description>
                </property>