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 -keygen -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 文件里面添加一下内容:
02 | export HADOOP_HOME=/usr/ local /hadoop |
05 | export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64 |
08 | unalias fs &> /dev/null |
10 | unalias hls &> /dev/null |
14 | hadoop fs - cat $1 | lzop - dc | head -1000 | less |
18 | export PATH=$PATH:$HADOOP_HOME/bin |
在修改完成后保存,重新登录,相应的环境变量就配置好了。
接下来开始配置Hadoop相关的东西,首先来看张图,了解下HDFS的结构:
![](https://i-blog.csdnimg.cn/blog_migrate/42c8dbab2536a322e430661405c40258.gif)
配置
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 单机模式安装就完成了,下一篇来介绍多物理机模式的安装。