用 Hadoop 进行分布式数据处理,第 1 部分: 入门

简介: 本文是讨论 Hadoop 的系列中的第一篇。本文介绍 Hadoop 框架,包括 Hadoop 文件系统 (HDFS) 等基本元素和常用的节点类型。学习如何安装和配置单节点 Hadoop 集群,然后研究 MapReduce 应用程序。最后,学习使用核心 Web 界面监视和管理 Hadoop 的方法。

尽管 Hadoop 是一些大型搜索引擎数据缩减功能的核心部分,但是它实际上是一个分布式数据处理框架。搜索引擎需要收集数据,而且是数量极大的数据。作为分布式框架,Hadoop 让许多应用程序能够受益于并行数据处理。

本文并不打算介绍 Hadoop 及其架构,而是演示一个简单的 Hadoop 设置。在 参考资料 中,可以找到关于 Hadoop 架构、组件和操作理论的更多信息。现在,我们来讨论 Hadoop 的安装和配置。

相关阅读:

初始设置

Hadoop 的起源

Apache Hadoop 项目的灵感来源于 Google 的早期工作。尽管 Google 拥有这种大规模数据处理方法的专利,但是它慷慨地授予 Hadoop 许可证。详细信息见 参考资料

对于本文中的示例,我们使用 Cloudera Hadoop 发行版。Cloudera 提供对各种 Linux® 发行版的支持,所以很适合初学者。

本文假设您的系统上已经安装了 Java™(至少是 1.6 版)和 cURL。如果还没有,需要先安装它们(更多信息见 参考资料)。

因为我运行 Ubuntu(Intrepid 版),所以使用 <font face="Courier New" size="2">apt</font> 实用程序获取 Hadoop 发行版。这个过程非常简单,我可以获取二进制包,而不需要下载并构建源代码。首先,告诉 <font face="Courier New" size="2">apt</font> Cloudera 站点的信息。然后,在 /etc/apt/sources.list.d/cloudera.list 中创建一个新文件并添加以下文本:

deb http://archive.cloudera.com/debian intrepid-cdh3 contrib
deb-src http://archive.cloudera.com/debian intrepid-cdh3 contrib

如果您运行 Jaunty 或其他版本,只需把 intrepid 替换为您的版本名(当前支持 Hardy、Intrepid、Jaunty、Karmic 和 Lenny)。

接下来,从 Cloudera 获取 apt-key 以检查下载的包:

$ curl -s http://archive.cloudera.com/debian/archive.key | \
sudo apt-key add - sudo apt-get update

然后,安装采用伪分布式配置的 Hadoop(所有 Hadoop 守护进程在同一个主机上运行):

$ sudo apt-get install hadoop-0.20-conf-pseudo
$

注意,这个配置大约 23MB(不包括 <font face="Courier New" size="2">apt</font> 可能下载的其他包)。这个配置非常适合体验 Hadoop 以及了解它的元素和界面。

最后,我设置了不需要密码的 SSH。如果打算使用 <font face="Courier New" size="2">ssh localhost</font> 并请求密码,就需要执行以下步骤。我假设这是专用的 Hadoop 机器,因为这个步骤对安全性有影响(见清单 1)。


清单 1. 设置不需要密码的 SSH

$ sudo su -
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
# cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

最后,需要确保主机上有供 datanode使用的足够存储空间(缓存)。存储空间不足会导致系统表现异常(比如出现无法把数据复制到节点的错误)。

相关推荐