Hadoop是一个用Java编写的用于运行与物理集群中的框架,吸收了GFS和mapreduce编程模型的特性。Hadoop的HDFS是一个高容错的分布式文件系统,并且它被设计运行于低成本的硬件上,能够提供很大的数据吞吐量,很适合那些数据量很大的应用程序。
接下来,开始准备安装hadoop。我用的操作系统是 ubuntu 12.10 server,hadoop的版本是1.2.0。
安装准备
JDK 6
Hadoop需要在JDK1.5以上的环境下才能运行,目前推荐使用JDK 6 。
2 |
$ sudo apt-get install openjdk-6-jdk
|
安装完成之后,文件会被放置在 /usr/lib/jvm/java-6-openjdk-amd64 这个路径下。
配置SSH
Hadoop需要用SSH来管理它的节点。针对单机的情况,我们需要配置SSH让运行hadoop的用户能够登录本机。
首先,我们需要为运行hadoop的用户生成一个SSH key:
1 |
$ ssh -****** -t rsa -P "" |
然后,让你可以通过新生成的key来登录本地机器。
1 |
$ cp ~/. ssh /id_rsa.pub ~/. ssh /authorized_keys
|
准备结束,下面开始安装hadoop。
Hadoop
在hadoop官网上下载 1.2.0 版本的软件,解压,然后把文件放到 /usr/local/ 路径下:
1 |
$ tar -zxvf hadoop-1.2.0. tar .gz
|
2 |
$ mv hadoop-1.2.0 hadoop
|
3 |
$ cp -r hadoop/ /usr/ local /
|
接下来开始设置一些环境变量,需要在 ~/.bashrc 文件里面添加一下内容:
01 |
# Set Hadoop-related environment variables |
02 |
export HADOOP_HOME=/usr/ local /hadoop
|
04 |
# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on) |
05 |
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
|
07 |
# Some convenient aliases and functions for running Hadoop-related commands |
08 |
unalias fs &> /dev/null
|
10 |
unalias hls &> /dev/null
|
14 |
hadoop fs - cat $1 | lzop - dc | head -1000 | less
|
17 |
# Add Hadoop bin/ directory to PATH |
18 |
export PATH=$PATH:$HADOOP_HOME/bin
|
在修改完成后保存,重新登录,相应的环境变量就配置好了。
接下来开始配置Hadoop相关的东西,首先来看张图,了解下HDFS的结构:

配置
hadoop-env.sh
在这个配置文件里,你只需要配置 JAVA_HOME 这个环境变量就行了,添加以下内容:
1 |
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
|
conf/hdfs-site.xml
在这里需要配置hadoop存放数据文件的路径和hadoop监听的端口,首先来新建目录:
1 |
$ sudo mkdir -p /app/hadoop/tmp
|
2 |
$ sudo chmod 750 /app/hadoop/tmp
|
然后在 conf/core-site.xml 文件里面添加以下内容:
02 |
< name >hadoop.tmp.dir</ name > |
03 |
< value >/app/hadoop/tmp</ value > |
04 |
< description >A base for other temporary directories.</ description > |
08 |
< name >fs.default.name</ name > |
09 |
< value >hdfs://localhost:54310</ value > |
10 |
< description >The name of the default file system. A URI whose |
11 |
scheme and authority determine the FileSystem implementation. The |
12 |
uri's scheme determines the config property (fs.SCHEME.impl) naming |
13 |
the FileSystem implementation class. The uri's authority is used to |
14 |
determine the host, port, etc. for a filesystem.</ description > |
在 conf/mapred-site.xml 添加以下内容
2 |
< name >mapred.job.tracker</ name > |
3 |
< value >localhost:54311</ value > |
4 |
< description >The host and port that the MapReduce job tracker runs |
5 |
at. If "local", then jobs are run in-process as a single map |
在 conf/hdfs-site.xml 添加以下内容
2 |
< name >dfs.replication</ name > |
4 |
< description >Default block replication. |
5 |
The actual number of replications can be specified when the file is created. |
6 |
The default is used if replication is not specified in create time. |
通过 NameNode 来格式化 HDFS 文件系统
在配置结束后,需要来对 HDFS 进行格式化,运行一下命令:
1 |
$ /usr/ local /hadoop/bin/hadoop namenode - format |
会输出一下内容:
02 |
Warning: $HADOOP_HOME is deprecated. |
04 |
13/06/02 10:22:41 INFO namenode.NameNode: STARTUP_MSG: |
05 |
/************************************************************ |
06 |
STARTUP_MSG: Starting NameNode |
07 |
STARTUP_MSG: host = master/192.168.214.128 |
08 |
STARTUP_MSG: args = [- format ] |
09 |
STARTUP_MSG: version = 1.2.0 |
10 |
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1479473; compiled by 'hortonfo' on Mon May 6 06:59:37 UTC 2013
|
11 |
STARTUP_MSG: java = 1.6.0_27 |
12 |
************************************************************/ |
13 |
Re- format filesystem in /app/hadoop/tmp/dfs/name ? (Y or N) y
|
14 |
Format aborted in /app/hadoop/tmp/dfs/name
|
15 |
13/06/02 10:22:48 INFO namenode.NameNode: SHUTDOWN_MSG: |
16 |
/************************************************************ |
17 |
SHUTDOWN_MSG: Shutting down NameNode at master/192.168.214.128 |
18 |
************************************************************/ |
下面就来运行hadoop:
1 |
$ /usr/ local /hadoop/bin/start-all.sh |
这个命令会启动机器上的 namenode,datanode,jobtracker 和 tasktracker
有一个简单的工具来检查hadoop的运行状况,jps:
你也可以通过 netstat 命令来检查 hadoop 是否正常运行:
01 |
$ sudo netstat -plten | grep java
|
02 |
tcp 0 0 0.0.0.0:50070 0.0.0.0:* LISTEN 1001 9236 2471/java |
03 |
tcp 0 0 0.0.0.0:50010 0.0.0.0:* LISTEN 1001 9998 2628/java |
04 |
tcp 0 0 0.0.0.0:48159 0.0.0.0:* LISTEN 1001 8496 2628/java |
05 |
tcp 0 0 0.0.0.0:53121 0.0.0.0:* LISTEN 1001 9228 2857/java |
06 |
tcp 0 0 127.0.0.1:54310 0.0.0.0:* LISTEN 1001 8143 2471/java |
07 |
tcp 0 0 127.0.0.1:54311 0.0.0.0:* LISTEN 1001 9230 2857/java |
08 |
tcp 0 0 0.0.0.0:59305 0.0.0.0:* LISTEN 1001 8141 2471/java |
09 |
tcp 0 0 0.0.0.0:50060 0.0.0.0:* LISTEN 1001 9857 3005/java |
10 |
tcp 0 0 0.0.0.0:49900 0.0.0.0:* LISTEN 1001 9037 2785/java |
11 |
tcp 0 0 0.0.0.0:50030 0.0.0.0:* LISTEN 1001 9773 2857/java |
停止运行 hadoop ,运行以下命令:
1 |
$ /usr/ local /hadoop/bin/stop-all.sh |
那么 hadoop 单机模式安装就完成了,下一篇来介绍多物理机模式的安装。