Apache Hadoop?是一个分布式计算基础框架,通过它可以使用N台计算机同时处理某个复杂的计算任务。用户(应用程序)只需要定义如何将一项计算任务拆分(Map)以及如何将各个分任务的结果合并(Reduce),剩下的事情比如如何协调N台计算机一起工作,如何保证即使某一台计算机中途坏掉了也不会影响整项任务的工作等,都由 Hadoop 代劳。Hadoop 同时还可以扩展为分布式储存(HDFS)、分布式NoSQL数据库(HBase)等等。本文将简单介绍基本的 Hadoop 系统的搭建方法。
Hadoop 在运行时由5个程序组成:
- 1个NameNode,用于管理命名空间以及客户端对文件的访问;
- 1个JobTracker,用于调度工作以及分配任务(Task);
- 1个SecondaryNameNode,用于辅助NameNode的工作;
- 1~N个DataNode 用于数据储存;
- 1~N个TaskTracker 用于执行任务,DataNode 和 TaskTracker 总是成对出现在同一台计算机里运行。
前3个程序一般是分别在三台不同的计算机里运行,为了简单起见下面的例子将在同一台计算机里运行这3个程序,然后再另外找3台计算机运行DataNode(连同TaskTracker),所以这个示例一共需要4台计算机。结构图如下:
下面是详细的搭建过程
1、下载 Apache Hadoop
因为分布式储存是分布式计算的基础,所以我们必须下载 HDFS 。到这里下载?HDFS,这里使用的版本是 0.20.2,下载回来的一个压缩包已经包含了上面提到的5个程序。
2、配置 Hadoop
虽然在一个典型的 Hadoop 系统里会有 4种不同角色的计算机,不过我们为了简单起见可以先在某一台计算机编辑好配置文件,然后再分发到其他计算机,这样可以避免一台台地配置浪费时间。
a、编辑 conf/hadoop-env.sh,设置正确的 JAVA_HOME 环境变量,比如
export JAVA_HOME=/usr/lib/jvm (CentOS + OpenJDK)
PS:某些 Hadoop 版本在配置了 IPv6 的计算机上会监听错网络地址,所以需要增加如下一行以屏蔽 java 的 IPv6 功能:
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
b、编辑 conf/core-site.xml
<configuration> |