十八款Hadoop工具帮你驯服大数据

将数据导入集群还只是大数据分析的第一步。接下来我们需要提取HBase中来自文件的所有数据内容,而Hive的设计初衷在于规范这一提取流程。它提供一套SQL类语言,用于深入发掘文件内容并提取出代码所需要的数据片段。这样一来,所有结果数据就将具备标准化格式,而Hive则将其转化为可直接用于查询的存储内容。

上图所示为Hive代码,这部分代码的作用在于创建一套列表、向其中添加数据并选择信息。Hive由Apache项目负责发行。

官方网站:hive.apache.org

Sqoop

大数据

要将蕴藏在SQL数据库中的数据宝库发掘出来并交给Hadoop打理需要进行一系列调整与操作。Sqoop负责将饱含信息的大型列表从传统数据库中移动到Hive或者HBase等工具的控制之下。

Sqoop是一款命令行工具,能够控制列表与数据存储层之间的映射关系,并将列表转化为可为HDFS、HBase或者Hive所接纳的可配置组合。上图所示为Apache文档材料中的内容,可以看到Sqoop位于传统库与节点上的Hadoop结构之间。

Sqoop的最新稳定版本为1.4.4,但目前其2.0版本同样进展顺利。两个版本目前都可供下载,且遵循Apache许可。

官方网站:sqoop.apache.org

Pig

大数据

一旦数据以Hadoop能够识别的方式被保存在节点当中,有趣的分析工作将由此展开。Apache的Pig会用自己的小”猪拱”梳理数据,运行利用自有语言(名为Pig Latin)所编写的代码,并添加处理数据所需要的各种抽象机制。这样的结构会一步步指引用户走向那些易于以并行方式运行在整个集群当中的算法。

Pig还拥有一系列针对常见任务的标准化功能,能够轻松处理诸如数据平均值计算、日期处理或者字符串差异比较等工作。如果这些还不够用–实际上一般都不够用–大家还可以动手编写属于自己的功能。上图所示为Apache说明文档中的一项实例,解释了用户如何将自己的代码与Pig代码结合起来、从而实现数据发掘。目前Pig的最新版本为0.12.0。

官方网站:pig.apache.org

ZooKeeper

大数据

一旦Hadoop需要在大量设备之上,集群运作的顺序就显得非常重要,特别是在其中某些设备开始签出的情况下。

ZooKeeper在集群中强制执行一套文件系统式的层级结构,并为设备保存所有元数据,这样我们就可以在不同设备之间进行作业同步。(上图所示为一套简单的二层式集群。)说明文档展示了如何在数据处理流程中实施多种标准化技术,例如生产方-消费方队列,从而保证数据能够以正确的顺序进行拆分、清理、筛选以及分类。当上述过程结束后,使用ZooKeeper的节点会彼此通信、并以最终生成的数据为起点开始分析工作。

官方网站:zookeeper.apache.org

NoSQL

大数据

并不是所有Hadoop集群都会使用HBase或者HDFS。某些集成了NoSQL的数据存储体系会采取自己的独特机制实现跨集群各节点的数据存储任务。在这种情况下,此类体系能够利用NoSQL数据库的全部功能对数据进行存储与检索,而后利用Hadoop规划同一集群当中的数据分析作业。

此类方案中最为常见的当数Cassandra、Riak或者MongoDB,而用户则在积极探索将这两种技术加以结合的最佳方式。作为MongoDB的主要支持厂商之一,10Gen公司建议用户利用Hadoop进行离线分析,而MongoDB同时仍然能够以实时方式统计来自Web的数据。上图所示为连接器如何实现两套体系之间的数据迁移。

Mahout

大数据

目前能够帮助我们进行数据分析、分类以及筛选的算法多种多样,而Mahout项目的设计目的正是为了将这些算法引入Hadoop集群当中。大多数标准化算法,例如K-Means、Dirichelet、并行模式以及贝叶斯分类等,都能够让我们的数据同Hadoop类型的映射与规约机制进行协作。

上图所示为一套篷聚类集群化算法,它选择点与半径来构成圆圈、从而覆盖整个点集合中的对应部分。这只是众多Hadoop内置数据分析工具之一。