Hadoop是一种软件技术,旨在存储和处理分布在集群中的大量数据,该集群由商用服务器和存储设备组成。Hadoop最初受谷歌发布的关于其处理大量数据的论文的启发,这些论文概述了谷歌在索引网络时处理大量数据的方法。随着其在行业和政府中的日益普及,Hadoop迅速发展,成为传统企业数据仓库的补充,在某些情况下甚至取代了企业数据仓库。
许多组织正在利用Hadoop和MongoDB的力量,共同创建完整的大数据应用程序
MongoDB为在线、实时操作应用程序提供动力,服务于业务流程和最终用户,将Hadoop创建的分析模型暴露给操作流程
Hadoop从MongoDB中消耗数据,将其与其他来源的数据混合,以生成复杂的分析和机器学习模型。结果被加载回MongoDB,以提供更智能、更有上下文意识的操作流程 - 例如,提供更相关的报价、更快地识别欺诈、更好地预测制造过程的故障率。
在探索用户如何创建此类大数据应用程序之前,首先让我们深入了解Hadoop的架构。
Hadoop是Apache软件基金会的一个开源项目,由雅虎的工程师于2005年开始,基于谷歌早期的研究论文。Hadoop最初包括一个名为HDFS的分布式文件系统和称为MapReduce的数据处理和执行模型。
Apache Hadoop基本框架包括以下核心模块
Hadoop Common:支持其他Hadoop模块的通用工具。
Hadoop分布式文件系统(HDFS):一个分布式文件系统,它将数据存储在商用机器上,为集群提供非常高的聚合带宽。
Hadoop YARN:一个资源管理平台,负责管理集群中的计算资源,并将它们用于用户应用程序的调度。
Hadoop MapReduce:一个大规模数据处理编程模型。
除了这些基本模块之外,“Hadoop”一词还演变成了包括数十个其他独立工具和项目,这些工具和项目可以安装在Hadoop之上或与之并行安装,以简化对存储在Hadoop集群中的数据的访问和处理。
Ambari:用于管理和监控Hadoop集群的图形用户界面。
Hive:提供类似SQL访问数据的数据仓库基础设施。
Pig:用于访问和转换数据的脚本语言。
Sqoop:管理关系数据库和Hadoop之间的数据迁移。
Flume:从日志文件收集数据到HDFS的服务。
Mahout:机器学习库。
Tez:基于YARN的数据流编程框架,用于批处理和交互式查询。越来越多地用于替换Hive和Pig作业的MapReduce。
Spark:用于快速批处理、事件流和交互式查询的内存集群计算框架。MapReduce的潜在继任者,但不受Hadoop的限制。Spark能够使用几乎任何文件系统或数据库进行持久化。
Zookeeper:为分布式应用提供高性能协调服务。
MongoDB Connector for Hadoop:Hadoop的插件,提供将MongoDB作为MapReduce、Spark、HIVE和Pig作业的输入源和输出目标使用的能力。
基于Apache Hadoop项目,许多公司构建了商业Hadoop发行版。主要提供商包括MongoDB合作伙伴Cloudera、Hortonworks和MapR。所有这些都已使用各自发行版对MongoDB Connector for Hadoop进行认证。
应用程序将工作提交给Hadoop作为作业。作业提交到Hadoop集群中的主节点,即称为JobTracker的集中进程。Hadoop设计的一个显著方面是将处理移动到数据,而不是将数据移动到处理。因此,JobTracker将作业编译成并行任务,这些任务分布在HDFS存储数据的副本中。JobTracker维护任务的状态,并协调集群中各个节点上的作业结果。
Hadoop确定如何在集群资源之间分配工作,以及如何处理可能出现的系统组件故障。系统的自然属性是工作往往均匀分布——Hadoop在各个节点上维护数据的多份副本,并且每份数据副本根据其执行任务的能力请求工作。容量更大的副本往往请求更多的工作来执行。
Hadoop有几个架构属性有助于确定适合该系统的应用程序类型
HDFS为数据提供了单次写入多次读取、仅追加访问模型。
HDFS针对默认的64MB或128MB块的大文件进行顺序读取进行了优化。
HDFS维护数据的多个副本以实现容错。
HDFS设计用于高吞吐量,而不是低延迟。
HDFS不是基于模式的;可以存储任何类型的数据。
Hadoop作业在作业范围内定义了读取数据的模式。
Hadoop不使用索引。每次查询都会扫描数据。
Hadoop作业往往需要几分钟或几小时才能执行。
与其支持需要提供对数据子集细粒度访问的实时、操作应用程序,Hadoop更适合于几乎所有类型非常迭代的计算,在单个操作中扫描TB或PB数据,从并行处理中受益,并且是批处理或交互式(即30秒以上的响应时间)。组织通常使用Hadoop生成复杂分析模型或高容量数据存储应用程序,如
风险评估
回顾性和预测性分析
机器学习和模式匹配
客户细分和流失分析
ETL管道
活动归档
用户需要将 Hadoop 的分析输出提供给他们的在线、运营应用程序。这些应用程序有特定的访问需求,HDFS 无法满足,包括
毫秒级延迟查询响应速度。
对数据索引子集的随机访问。
支持实时动态查询和聚合,使在线应用程序更智能和更具上下文。
在用户与在线应用程序交互时实时更新快速变化的数据,无需重写整个数据集。将 Hadoop 的分析实时提供给在线应用程序和用户需要集成一个高度可扩展、高度灵活的运营数据库层。
以下表格提供了使用 MongoDB 与 Hadoop 一起推动大数据应用的客户示例。