NoSQL 并不是所有Hadoop集群都会使用HBase或者HDFS。某些集成了NoSQL的数据存储体系会采取自己的独特机制实现跨集群各节点的数据存储任务。在这种情况下,此类体系能够利用NoSQL数据库的全部功能对数据进行存储与检索,而后利用Hadoop规划同一集群当中的数据分析作业。 此类方案中最为常见的当数Cassandra、Riak或者MongoDB,而用户则在积极探索将这两种技术加以结合的最佳方式。作为MongoDB的主要支持厂商之一,10Gen公司建议用户利用Hadoop进行离线分析,而MongoDB同时仍然能够以实时方式统计来自Web的数据。上图所示为连接器如何实现两套体系之间的数据迁移。 Mahout 目前能够帮助我们进行数据分析、分类以及筛选的算法多种多样,而Mahout项目的设计目的正是为了将这些算法引入Hadoop集群当中。大多数标准化算法,例如K-Means、Dirichelet、并行模式以及贝叶斯分类等,都能够让我们的数据同Hadoop类型的映射与规约机制进行协作。 上图所示为一套篷聚类集群化算法,它选择点与半径来构成圆圈、从而覆盖整个点集合中的对应部分。这只是众多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 |