因为之前写关于云存储的论文,大致了解了下GFS、HDFS这两个分布式文件系统,对Google提出的MapReduce也抱有很大兴趣,它给出了处理大数据一种很好的解决策略。Apache下的Hadoop基于Google提出的思想也实现了自己的一整套系统,因为它的开源属性,满足了不少程序员的好奇心,可以一睹这头大象是怎么跳的舞。以下是我在Ubuntu 12.10下面安装JDK以及Hadoop的整个过程。
说明:在最开始时,我在网上各处搜比较妥当的安装hadoop的方法,过程比较纠结;后来才发现直接在官方文档中就可以找到可靠的安装过程,传送门:Hadoop Single Node Setup
一、安装Java开发环境(Ubuntu自带openjdk:可java -version查看版本;或执行sudo apt-get install java提示已安装openjdk)
1、火狐下载jdk-6u37-linux-i586.bin,下载后原目录为:/home/baron/Downloads/
2、在/usr/下新建java目录:sudo mkdir /usr/java
3、拷贝文件至该新建目录:sudo cp /home/baron/Downloads/jdk-6u37-linux-i586.bin /usr/java
4、更改文件权限,使之可以运行:sudo chmod u+x jdk-6u37-linux-i586.bin
5、运行该文件:sudo jdk-6u37-linux-i586.bin 。至此,usr/java/目录下面有一个bin文件包jdk1.6.0_37,以及解压后的同名文件夹。
6、在profile中配置jdk环境变量:sudo vi /etc/profile,并在后面加上一下几行(千万不能输错,否则进不了桌面系统,如出现该情况:ctrl+alt+F1进入root环境,验证用户名密码,执行:vi /etc/profile正确修改文件):
export JAVA_HOME=/usr/java/jdk1.6.0_37
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
二、安装ssh(hadoop使用ssh来实现cluster中各node的登录认证,免密码ssh设置在后文中有介绍)
sudo apt-get install ssh
三、安装rsync(该版本Ubuntu已自带rsync)
sudo apt-get install rsync
四、安装hadoop
1、创建hadoop用户组以及用户:
sudo addgroup hadoop
sudo adduser --ingroup hadoop hadoop
在/home/下会有一个新的hadoop文件夹,此时最好切换至新建的hadoop用户登陆Ubuntu。
2、将下载的hadoop拷贝至该新建文件夹下:sudo cp /home/baron/Downloads/hadoop-1.0.4-bin.tar.gz /home/hadoop/
3、进入该目录(cd /home/hadoop/)之后,解压该文件:sudo tar xzf hadoop-1.0.4-bin.tar.gz
4、进入hadoop-env.sh所在目录(/hadoop-1.0.4/conf/),对该文件进行如下内容的修改:export JAVA_HOME=/usr/java/jdk1.6.0_37
5、hadoop默认是Standalone Operation。可以按照官方文档进行测试:
By default, Hadoop is configured to run in a non-distributed mode, as a single Java process. This is useful for debugging.
The following example copies the unpacked conf directory to use as input and then finds and displays every match of the given regular expression. Output is written to the given output directory.
$ mkdir input
$ cp conf/*.xml input
$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
$ cat output/*
6、或者使用Pseudo-Distributed Operation模式,参照官方文档:
Pseudo-Distributed Operation
Hadoop can also be run on a single-node in a pseudo-distributed mode where each Hadoop daemon runs in a separate Java process.
Configuration,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>