Apache Hadoop 简单配置及实践

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台计算机。结构图如下:

Apache Hadoop 简单配置及实践

下面是详细的搭建过程

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> <property>   <name>hadoop.tmp.dir</name>   <value>/var/lib/hadoop/hadoop-${user.name}</value> </property>   <property>   <name>fs.default.name</name>   <value>hdfs://192.168.0.10:9000</value> </property> </configuration>

第一段设置数据的储存位置(相应的目录当前用户应该有全权限),第二段设置 namenode 服务地址,用于跟其他计算机交流。

c、编辑 conf/mapred-site.xml

<configuration> <property>   <name>mapred.job.tracker</name>   <value>192.168.0.10:9001</value> </property> </configuration>

这段设置了 JobTracker 的服务地址。

d、编辑 conf/hdfs-site.xml

<configuration> <property>   <name>dfs.replication</name>   <value>3</value> </property> </configuration>

这段设置一个文件数据在 Hadoop 系统里冗余多少份,一般设置为3。这样一旦有新的文件数据写入 Hadoop,系统会随机将文件分别写入到3台datanode,这样一旦系统中的某一台 datanode 坏掉了(比如硬盘烧了)只需要将这台计算机整台卸下,再换上一台新的计算机到网络即可,数据会自动复制以保证始终有3份数据。这也是分布式储存系统维护方便的y原因。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pszds.html