Electronic Joint Business

Solution for E-Business

hdfs

Hadoop 技术手册(二) 用 Map/Reduce 进行大数据分析

当今社会是数据的时代。2001 年,Google 发布图像搜索功能时,只有 2.5 亿个图像被索引, 10 年间,这个搜索功能已经可以检索超过 100 亿个图像。现在每分钟有 35 小时时长的视频被上传到 YouTube。而 Twitter 平均每天要处理 5500 万 tweet。数据的增加,很快就超过单一计算机的处理能力。基于集群的分布式并行编程能够让软件与数据同时运行在一个网络内彼此相连的许多计算机上。这样的分布式并行环境的最大优点是可以很容易的通过增加计算机来扩充新的计算结点,并由此获得不可思议的海量计算能力, 同时又具有相当强的容错能力,某一计算节点失效也不会影响计算的正常进行以及结果的正确性。

Google 使用了运行在 GFS ( Google File System ) 分布式文件系统上的, 名为 MapReduce 的编程模型进行分布式并行编程,为全球亿万用户提供搜索服务。而 Hadoop 项目正是受到了 MapReduce 和 Google File System(GFS) 的启发,2005 年秋天, Hadoop 被作为 Lucene 的子项目 Nutch 的一部分正式引入。 在 2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 正式被纳入 Hadoop 的项目中。

Hadoop 实现了 Google 的 MapReduce 编程模型,提供了简单易用的编程接口,它也提供了自己的分布式文件系统 HDFS,与 Google 不同的是,Hadoop 是开源的,任何人都可以使用这个框架来进行并行编程。如果说分布式并行编程的难度足以让普通程序员望而生畏的话,开源的 Hadoop 的出现极大的降低了它的门槛,读完本文,你会发现基于 Hadoop 编程非常简单,利用该框架能够轻松编写出可以处理海量数据(TB级的数据集)的应用程序,并能稳定地,可容错地运行在由上千个节点组成的硬件集群上,然后在短时间内完成海量数据的计算。

概念
一个 MapReduce 作业(job) 通常会将输入的数据集分割成独立的数据块 (chunk),然后交由 map 任务以完全并行的方式进行处理。框架负责对 map 的输出进行排序,并作为 reduce 任务的输入。作业的输入和输出一般都保存在文件系统中。该框架还负责任务的调度与监测,并重新执行失败的任务。

通常来说,Hadoop 的计算节点和存储节点是同一节点,也就是说 MapReduce 框架和 Hadoop 分布式文件系统 (HDFS) 在相同的节点上运行。这种配置让框架可以有效地将任务调度给存有数据的节点,从而使得整个群集获得了非常高的总带宽。

>>> 阅读全文

 

, , , ,

HadoopDB 入门 (二) 配置MySQL

文章评价:
在上一篇文章中,我们介绍了如何对 HadoopDB 和 PostgreSQL 进行配置,以便它们能在一起工作。在本文中,我们将介绍如何在 HadoopDB 中配置另一种普遍使用的数据库来。在文章的前一部分,我还会涉及如何在 Ubuntu 中安装并运行起 HadoopDB,已经熟悉的朋友可以直接跳过这一部分。这里我使用的是 64 位的 Ubuntu Server 10.04,并且广泛地使用 Ubuntu 的包管理器,本文介绍的安装方式,对于其他的 Linux 系统比如 CentOS 也应该是适用的。

本文介绍的是如何配置一个单节点系统,如果您需要一个多节点系统,可以参考上一篇文章中的介绍,你将会发现对 HadoopDB 进行扩展是多么的简单。

安装 Hadoop
安装 Hadoop 之前,首先需要安装 Java。你可以从 Oracle 的站点下载 Sun JDK,或者使用 OpenJDK 也没有任何问题,在 Ubuntu 上,运行下面命令就可以安装 OpenJDK:

sudo apt-get install openjdk-6-jdk

Michael Noll 写过一篇文章深入讨论了如何在 Ubuntu 上安装 Hadoop,我强烈建议您在开始之前读一下这篇文章,本文很多内容都是借鉴该文章的。

首先我们先创建需要运行 Hadoop 帐号和组:

>>> 阅读全文

 

, , , , , ,

Hadoop 技术手册(一) Hadoop 生态系统

文章评价:
现在是数据的年代。近 10 年来,随着 Web 不断发展状态,数据的大小也在飞速增长,而且丝毫没有慢下来的迹象。统计数据表明,每过去的一年中所生成的数据要大大超过历年的数据的总和。摩尔定律不单对计算机硬件生效,现在对于不断生成的数据也同样有效。面对如此海量的数据,业界用了一个简单明了的词来称呼它: Big Data。

和用行和列来存储结构化信息的方式不同, Big Data 面对的是复杂的,非结构化的存储格式,包括网站、社会性媒体、电子邮件 甚至是视频、演示文稿等等。这是个非常重要的区别,为此,要从 Big Data 中提取有价值的商业信息,都必须依靠某些技术来对这些格式进行可扩展的、精确且有效分析。

紧接着下一个问题就出现了 – 我们如何有效地处理这些 Big Data?在这一领域的开拓者之一是谷歌 Google,它设计了类似 MapReduce 和 Google文件系统等可扩展的框架。受到这些设计的启发,Apache 倡导了一个名为 Hadoop 的开源项目。Apache Hadoop 是一个开源框架,可以对大型数据集的进行跨集群的分布式处理。

Hadoop 生态系统 (Ecosystem)
Apache Hadoop 的核心由 2 个子项目组成 – Hadoop MapReduce 和 Hadoop 分布式文件系统。 Hadoop MapReduce 是编程模型,也是一个软件框架,可以编写在集群上进行并行处理大量数据的应用。 HDFS 是 Hadoop 应用所使用的主要存储系统。 HDFS 创建了数据块的多个副本,并将其分发整个集群的计算节点上以便能可靠、且快速的进行计算。其它和 Hadoop 相关的 Apache 项目还包括: Chukwa, Hive, HBase, Mahout, Sqoop 和 ZooKeeper 等等。

下图列出了 Hadoop 的一些组件,接下来我们会逐一介绍 Hadoop 生态系统的这些关键组件。

>>> 阅读全文

 

, , , , , , , , ,