假如你有一个比较复杂的算术题,用1台普通计算机需要计算3个月才能出结果,有什么办法可以让它能在1天内出结果呢? 比较“廉价”的方式可能是用100台普通计算机搭建一台“超级计算机”,让100台计算机同时计算,那么理论上1天就可以完成。 Apache Hadoop 是一个分布式计算框架,你只需要定义如何将一个计算任务拆分(Map)以及如何将各个分任务的结果合并(Reduce),剩下的事情比如如何协调100台计算机一起工作,如何保证即使某一台计算机中途坏掉了也不会影响整个工作等,都由 Hadoop 帮你代劳。Hadoop 同时也是一个分布式的基础架构,在其基础上有: HDFS 分布式储存 HBase 分布式NoSQL数据库 Nutch 分布式全文搜索 等等一大堆重量级产品,这些都是构建一个大型应用所必须的基础设施。@ivarptr 这里我简单介绍基本的 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 到这里 http://hadoop.apache.org/ 下载 HDFS,我使用的版本是 0.20.2,下载回来的一个压缩包就已经包含了上面提到的5个程序。 2、配置 Hadoop 虽然在一个典型的 Hadoop 系统里会有 4种不同角色的计算机,不过我们为了简单起见可以先在某一台计算机编辑好配置文件,然后再分发到其他计算机,这样可以避免一台台地配置浪费时间。 a、编辑 conf/hadoop-env...