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

Mahout从属于Apache项目并遵循Apache许可。

官方网站:mahout.apache.org

Lucene/Solr

大数据

这是目前惟一的一款用于检索非结构化文本大型块的工具,它同时也是Hadoop的天生合作伙伴。由于利用Java编写,Lucene能够轻松与Hadoop展开协作,共同创建出一套用于分布式文本管理的大型工具。Lucene负责处理检查任务、Hadoop则负责将查询分布到整个集群当中。

新的Lucene-Hadoop功能正迅速发展成为全新项目。以Katta为例,作为Lucene的衍生版本,它能自动对整个集群进行解析。Solr则提供集成度更高的动态集群化解决方案,能够解析XML等标准化文件格式。上图所示为Luke,一款用于Lucene浏览的图形用户界面。它现在还提供插件、用于对Hadoop集群进行浏览检索。

Lucene及其多个衍生版本都属于Apache项目的组成部分。

官方网站:www.apache.org

Avro

大数据

当Hadoop作业需要进行数据共享时,我们完全可以使用任何一种数据库加以实现。但Avro是一套序列化系统,能够利用一定模式将数据整理起来并加以理解。每一个数据包都附带一种JSON数据结构,用于解释数据的具体解析方式。这种数据头会指定数据结构,从而避免我们在数据中编写额外的标签来对字段进行标记。如此一来,当共享数据较为规律时,其体积将比传统格式(例如XML或者JSON)更为紧凑。

上图所示为针对某个文件的Avro处理模式,其中分为三种不同字段:姓名、最喜欢的数字与最喜欢的颜色。Avro同样属于Apache项目的组成部分,其代码拥有Java、C++以及Python等多个语言版本。

官方网站:avro.apache.org

Oozie

大数据

将一项作业拆分成多个步骤能够让工作变得更为简单。如果大家将自己的项目拆分成数个Hadoop作业,那么Oozie能够以正确的顺序将其组合起来并加以执行。大家不需要插手堆栈调整,等待一个堆栈执行结束后再启动另一个。Oozie能够按照DAG(即有向无环图)的规范对工作流加以管理。(环图相当于无限循环,对于计算机来说就像一种陷阱。)只需将DAG交给Oozie,我们就可以放心出去吃饭了。

上图所示为来自Oozie说明文档的一幅流程图。Oozie代码受到Apache许可的保护。

官方网站:oozie.apache.org

GIS工具

大数据

咱们生活的世界相当广阔,因此让运行Hadoop的集群与地理地图协作也是项难度很高的任务。针对Hadoop项目的GIS(即地理信息系统)工具采用多种基于Java的最佳工具,能够透彻理解地理信息并使其与Hadoop共同运行。我们的数据库将通过坐标而非字符串来处理地理查询,我们的代码则通过部署GIS工具来计算三维空间。有了GIS工具的帮助,大家面临的最大难题只剩下正确解读”map”这个词–它到底代表的是象征整个世界的平面图形,还是Hadoop作业当中的第一步、也就是”映射”?

上图所示为说明文档中关于这些工具的不同层级。目前这些工具可在GitHub上进行下载。

下载地址:http://esri.github.io/gis-tools-for-hadoop/

Flume

数据收集这项任务绝对不比数据存储或者数据分析更轻松。作为又一个Apache项目,Flume能够通过分派”代理”以收集信息并将结果保存在HDFS当中。每一个代理可以收集日志文件、调用Twitter API或者提取网站数据。这些代理由事件触发,而且可以被链接在一起。由此获得的数据随后即可供分析使用。Flume项目的代码受Apache许可保护。

下载地址: flume.apache.org.

Hadoop上的SQL

大数据

如果大家希望在自己的大型集群当中对全部数据来一次快速的临时性查询,正常来说需要编写一个新的Hadoop作业,这自然要花上一些时间。过去程序员们多次掉进过这同一个坑里,于是大家开始怀念老式SQL数据库–利用相对简单的SQL语言,我们就能为问题找到答案。从这一思路出发,众多公司开发出一系列新兴工具,这些方案全部指向更为快捷的应答途径。