对于程序员,在开发中以single-node cluster的方式建立Hadoop环境是很好的选择,只需在在一台PC上就能模拟Hadoop的集群环境,何乐而不为?本文Step-by-Step讲述了Single-node cluster hadoop环境的配置,参考了http://www.michael-noll.com/wiki/Running_Hadoop_On_Ubuntu_Linux_%28Single-Node_Cluster%29一文。
JAVA 6
首先,请确保您的java-1.6(1.5 以上)已经安装成功,JAVA_HOME也已经设置。
添加一个专门的Hadoop用户
推荐使用专门的系统用户使用Hadoop,因为这样可以隔离开其他的应用软件的安装以及本机上的其他的用户(考虑到: 安全, 权限设置, 备份, 等等).
建立名为hadoop的用户
$ sudo addgroup hadoop
$ sudo adduser --ingroup hadoop hadoop
配置SSH
这一步是必须的,Hadoop使用SSH的方式管理其节点,即使在single-node方式中也需要对其进行配置。否则会出现“connection refused on port 22”错误.
在此之前,请确保您已经安装了SSH,如果没有,可以使用
$ sudo apt-get install openssh-server
下载并安装。
而后,我们为hadoop用户产生一个SSH密钥
young@ubuntu:~$ su - hadoop
hadoop@ubuntu:~$ ssh-keygen -t rsa -P ""
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
9d:47:ab:d7:22:54:f0:f9:b9:3b:64:93:12:75:81:27 hadoop@ubuntu
hadoop@ubuntu:~$
第二行命令会创建一个 RSA 密钥对,此时密码为空. 一般而言, 不推荐使用空密码, 但是你总不想每次Hadoop和它的节点交互时,都要经历密码的检验的吧,所以这里设置为空
然后,你需要使用新创建的密钥可以SSH访问你的本地机器。
hadoop@ubuntu:~$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
最后,测试SSH通过Hadoop user连接本地机器
hadoop@ubuntu:~$ ssh localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
RSA key fingerprint is 76:d7:61:86:ea:86:8f:31:89:9f:68:b0:75:88:52:72.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
Ubuntu 7.04
...
hadoop@ubuntu:~$
如果出现错误,如 ssh connect to host localhost port 22: connection refused,一般是openssh-server未安装造成的。
如果其他错误,你可以使用 ssh -vvv localhost 来查看错误的细节,然后google吧……
安装Hadoop
解压缩
你须下hadoop 0.15.3.tar.gz 并且解压缩Hadoop包到你喜欢的路径下。我选择/usr/local/hadoop .确保修改所有的文件的所有属性为Hadoop用户和组,如下:
$ cd /usr/local
$ sudo tar xzf hadoop-0.14.2.tar.gz
$ sudo mv hadoop-0.14.2 hadoop
$ sudo chown -R hadoop:hadoop hadoop
配置hadoop-env.sh
打开<Hadoop_install>/conf/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.6-sun(正确的JAVA_HOME路径)
配置hadoop-site.sh
打开<Hadoop_install>/conf/hadoop-site.sh
加入
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
格式化 namenode
$ cd hadoop - 0.15.3
$ bin/hadoop namenode -format
启动单机节点群
$ <HADOOP_INSTALL>/bin/start-all.sh
成功后,使用jps查看,如果成功,则显示
hadoop@sea:/usr/local/hadoop/$ jps
19811 TaskTracker
19674 SecondaryNameNode
19735 JobTracker
19497 NameNode
20879 TaskTracker$Child
21810 Jps
NOTICE: 现在Hadoop的版本已经更新到0.2,配置文件有了变化,如hadoop-site.xml就不再使用了,好像被hadoop-core.xml替代了,但是文档还没有更新……ummm……不过配置也是差不多的,先不多说了