大数据和Hadoop生态圈,Hadoop发行版和基于Hadoop的企业级应用2
Zookeeper ——用于Hadoop的分布式协调服务。Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。
Oozie——Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。
Pig——它是MapReduce编程的复杂性的抽象。Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。其编译器将Pig Latin翻译成MapReduce程序序列。
Hive ——Hive类似于SQL高级语言,用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。像Pig一样,Hive作为一个抽象层工具,吸引了很多熟悉SQL而不是Java编程的数据分析师。
Hadoop的生态圈还包括以下几个框架,用来与其它企业融合:
Sqoop是一个连接工具,用于在关系数据库、数据仓库和Hadoop之间转移数据。Sqoop利用数据库技术描述架构,进行数据的导入/导出;利用MapReduce实现并行化运行和容错技术。
Flume提供了分布式、可靠、高效的服务,用于收集、汇总大数据,并将单台计算机的大量数据转移到HDFS。它基于一个简单而灵活的架构,并提供了数据流的流。它利用简单的可扩展的数据模型,将企业中多台计算机上的数据转移到Hadoop。
除了在图1-1所示的核心部件外,Hadoop生态圈正在不断增长,以提供更新功能和组件,如以下内容:
Whirr——Whirr是一组用来运行云服务的Java类库,使用户能够轻松地将Hadoop集群运行于Amazon EC2、Rackspace等虚拟云计算平台。
Mahout——Mahout是一个机器学习和数据挖掘库,它提供的MapReduce包含很多实现,包括聚类算法、回归测试、统计建模。通过使用 Apache Hadoop 库,可以将Mahout有效地扩展到云中。
BigTop —— BigTop作为Hadoop子项目和相关组件,是一个用于打包和互用性测试的程序和框架。
Ambari——Ambar通过为配置、管理和监控Hadoop集群提供支持,简化了Hadoop的管理。
Hadoop家族成员正在逐步增加。在本书中,主要涉及到了三个新的Apache Hadoop孵化项目。
孵化项目演变到Apach项目的过程
下面将会简要介绍Apache基金会的运作方式,以及Apache各种项目及其彼此之间的联系。Apache的个人会员共同治理整个组织,Apache提供项目的创建、成熟和回收。
新的项目开始于“孵化器”。建立Apache孵化器,是为了帮助新项目加入Apache。Apache提供管理和检验,经过筛选后,再建立新的项目或者子项目。在创建孵化项目后,Apache会评估项目的成熟度,并负责将孵化器中的项目“毕业”到Apache项目或子项目。孵化器也会由于各种原因而终止一些项目。
要查看孵化器中项目(当前的、孵化成功的、暂时停止的和回收的)的完整列表,可以通过此网址:http://incubator.apache.org/projects/index.html。
当今大多数的Hadoop方面的书籍,要么专注于Hadoop生态圈中某个独立组件的描述,要么介绍如何使用Hadoop业务分析工具(如Pig和Hive)。尽管这些方面也很重要,但是这些书籍通常没有进行深入的描述,并不能帮助架构师建立基于Hadoop的企业级应用或复杂应用。
虽然Hadoop是开源的Apache(和现在GitHub)项目,但是在Hadoop行业,仍然出现了大量的新兴公司,以帮助人们更方便地使用Hadoop为目标。这些企业大多将Hadoop发行版进行打包、改进,以确保所有的软件一起工作,并提供技术支持。现在,Apache自己也在开发更多的工具来简化Hadoop的使用,并扩展其功能。这些工具是专有的,并有所差异。有的工具成为了Apache Hadoop家族中新项目的基础。其中,有些是经过Apache2许可的开源GitHub项目。尽管所有这些公司都基于Apache Hadoop发行版,但是他们都与Hadoop的愿景有了细微的不同——应该选取哪个方向,怎样完成它。
这些公司之间最大的区别是:Apache源代码的使用。除了MapR公司之外,都认为Hadoop应该由Apache项目的代码定义。相反,MapR认为Apache的代码只是实施参考,可以基于Apache提供的API来实现自己的需求。这种方法使得MapR做出了很大的创新,特别是在HDFS和HBase方面,MapR让这两个基本Hadoop的存储机制更加可靠、更加高性能。MapR还推出了高速网络文件系统(NFS),可以访问HDFS,从而大大简化了一些企业级应用的集成。
有两个关注度较高的Hadoop发行版,分别由亚马逊和微软发布。两者都提供Hadoop的预安装版本,运行于相应的云服务平台(Amazon or Azure),提供PaaS服务。它们都提供了扩展服务,允许开发人员不仅能够利用Hadoop的本地HDFS,也可以通过HDFS映射利用微软和雅虎的数据存储机制(Amazon的S3,和Azure的Windows Azure存储机制)。亚马逊还提供了,在S3上面保存和恢复HBase内容的功能。
表1-1展示了主要的Hadoop发行版的主要特点。
表1: 不同的Hadoop供应商
供应商 |
HADOOP特性 |
Cloudera CDH,个人版和企业版 |
CDH基于Hadoop2,(撰写本文时为4.1.2版本)包括HDFS,YARN,HBas,MapReduce,Hive, Pig, Zookeeper, Oozie, Mahout, Hue以及其他开源工具(包括实时查询引擎Impala)。Cloudera的个人免费版包括所有CDH工具,和支持高达50个节点的集群管理器。Cloudera企业版提供了更复杂的管理器,支持无限数量的集群节点,能够主动监控,并额外提供了数据分析工具。 |
Hortonworks数据平台 |
发行版(Alpha 2.0版)基于Hadoop2,包括HDFS,YARN, HBase, MapReduce, Hive, Pig, HCatalog, Zookeeper, Oozie, Mahout, Hue, Ambari, Tez,实时版Hive(Stinger)和其他开源工具。Hortonworks提供了高可用性支持、高性能的Hive ODBC驱动和针对大数据的Talend Open Studio。 |
MapR |
基于Hadoop1,发行版(撰写本文时为版本M7)包括HDFS, HBase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他开源工具。它还包括直接NFS访问、快照、“高实用性”镜像、专有的HBase实现,与Apache完全兼容的API和一个MapR管理控制台。 |
IBM InfoSphere BigInsights |
基于Hadoop1,提供了两个版本。基本版包括HDFS, Hbase, MapReduce, Hive, Mahout, Oozie, Pig, ZooKeeper, Hue以及其他一些开源工具。并提供IBM的安装程序和数据访问工具的基本版本。企业版增加了复杂的作业管理工具、集成了数据源的数据访问层和BigSheets(类似电子表格的界面,用来操作集群中的数据)。 |
GreenPlum的Pivotal HD |
在撰写本文时,最新版基于Hadoop2,包括HDFS, MapReduce, Hive, Pig, HBase, Zookeeper, Sqoop, Flume和其他开源工具。Pivotal HD企业级还增加了先进的HAWQ数据库服务(ADS),和丰富、成熟、并行的SQL处理工具。 |
亚马逊弹性MapReduce(EMR) |
在撰写本文时,最新版基于Hadoop1。亚马逊EMR是一个web服务,能够使用户方便且经济高效地处理海量的数据。它采用Hadoop框架,运行在亚马逊弹性计算云EC2和简单存储服务S3之上。包括HDFS(S3支持),HBase(专有的备份恢复),MapReduce,, Hive (Dynamo的补充支持), Pig, and Zookeeper. |
Windows Azure的HDlnsight |
HDlnsight基于Hortonworks数据平台(Hadoop1),运行在Azure云。它集成了微软管理控制台,易于部署,易于System Center的集成。通过使用Excel插件,可以整合Excel数据。通过Hive开放式数据库连接(ODBC)驱动程序,可以集成Microsoft SQL Server分析服务(SSAS)、PowerPivot和Power View。Azure Marketplace授权客户连接数据、智能挖掘算法以及防火墙之外的人。Windows Azure Marketplace从受信任的第三方供应商中,提供了数百个数据集。 |
当然,大量的发行版让你疑惑“我应该使用哪个发行版?”当公司/部门决定采用一个具体的版本时,应该考虑以下几点:
技术细节——包括Hadoop的版本、组件、专有功能部件等等。
易于部署——使用工具箱来实现管理的部署、版本升级、打补丁等等。
易于维护——主要包括集群管理、多中心的支持、灾难恢复支持等等。
成本——包括针发行版的实施成本、计费模式和许可证。
企业集成的支持——Hadoop应用程序与企业中其他部分的集成。
版本的选择依赖于,你打算利用Hadoop来解决哪些问题。本书中的讨论与版本无关,因为笔者看中的是每个发行版提供的价值。
为了满足大数据带来的新挑战,需要重新思考构建数据分析的程序的方式。传统的在数据库中存储数据,构建应用程序的方法,对于大数据处理将不再有效。主要因为:
因此,一个典型的基于Hadoop的企业级应用如图1-2所示。在这些应用中,包括数据存储层、数据处理层、实时访问层和安全层。要实现这种体系结构,不仅需要理解Hadoop组件所涉及的API,而且需要理解他们的功能和局限性,以及每个组件在整体架构中的作用。
如图1-2所示,数据存储层包括源数据和中间数据。源数据主要来自这些外部数据源,外部数据源包括企业应用程序、外部数据库、执行日志和其它数据源。中间数据结果来自Hadoop的执行过程,它们被Hadoop的实时应用程序使用,并交付给其他应用程序和终端用户。
图1-2: Hadoop企业级应用
可以使用不同的机制将源数据转移到Hadoop,包括:Sqoop,Flume,直接安装HDFS作为一个网络文件系统(NFS),或者利用Hadoop的实时服务和应用程序。在HDFS中,新的数据不会覆盖现有数据,而是新建一个数据版本。这一点很重要,因为HDFS是一个“写一次”的文件系统。
对于数据处理层,Oozie预处理源数据,并将其转换为中间数据。不同于源数据,中间数据会被覆盖,没有多个版本,所以中间数据量不会很大。
对于实时访问层,Hadoop的实时应用程序既支持直接数据访问,也支持基于数据集的访问。这些应用程序读取基于Hadoop的中间数据,并将源数据存储在Hadoop。该应用程序也可以用于服务用户,或者用于其它企业的Hadoop集成。
源数据用来存储和初步处理数据,中间数据用于传递和整合数据。因为采用了源数据和中间数据完全分离的结构,所以允许开发人员在没有任何事务处理需求的情况下,构建任何虚拟和复杂的应用程序。通过中间预处理过程,明显减少了服务数据量,使得实时数据访问更加灵活。
HADOOP扩充性
虽然许多文章认为,对于开发人员来讲,Hadoop隐藏了底层的复杂性。但是,其实是这些文章没有充分认识到Hadoop的可扩展。
通过设计Hadoop的实现方式,可以使开发人员轻松、无缝地集成新的功能到Hadoop中执行。Hadoop明确指定一些类库来负责MapReduce执行的不同阶段。通过这种方式,满足了开发者执行特定问题的要求,从而确保每一个作业以最低成本、最高性能性能来执行。
可以自定义Hadoop执行的以下内容:
本书有一部分内容,在他人工作成果的基础上,对自定义方法,以及实现方式进行了专门的描述。
本书涵盖了Hadoop企业级应用的所有主要层,如图1-2所示。
第2章介绍了构建数据层的方法,包括HDFS和HBase(架构和API)。然后,对两者进行对比分析,以及如何将HDFS和HBase相结合。本章还介绍了Avro(Hadoop的新的序列化框架),以及它在存储或访问数据中的作用。最后,你将了解HCatalog,以及用它来做广告和访问数据的方式。
本书将对数据处理进行了大量的描述。对于应用程序的数据处理部分,笔者建议使用MapReduce和Oozie。
在本书中,为什么以MapReduce源码为核心?
你可能会问,为什么本书将重点放在MapReduce源码上,而不是可以让MapReduce编程变得更简单的高级语言上面。你可以在网上或者Hadoop社区内,找到很多关于这方面的讨论。在这些讨论中给出的解释是,MapReduce源码量(就代码行数而言)比提供相同的功能的Pig源码量通常要多很多。尽管这是一个不争的事实,不过还有一些其他因素:
并不是什么都可以描述为一种高级语言。有些任务,更适合使用传统的Java代码来执行。
如果你写的代码仅需要执行一次,那么代码的行数可能对你很重要。但是,如果你正在编写企业级应用,那么你应该考虑其他标准,包括性能、可靠性和安全性。通常情况下,MapReduce源码提供了更多的途径,从而更容易实现这些特质。
MapReduce通过自定义方式,为用户提供的更多功能,以进一步提高应用程序的性能、可靠性和安全性。
在第3章中,您将了解MapReduce的架构、主要构成和编程模型。本章介绍了MapReduce的应用程序设计、设计模式和MapReduce注意事项。本章还讲介绍MapReduce的执行是如何实现的。正如所提到的,MapReduce最强的特征之一是它可以自定义执行。第4章会介绍自定义选项的详细信息,并举例说明。第5章通过演示实例,对MapReduce进一步讨论,构建可靠的MapReduce应用。
尽管MapReduce功能很强大,但是对于一个切实可行的解决方案,通常需要将多个MapReduce应用集合到在一起。这个过程非常复杂,通过使用Hadoop的Workflow/Coordinator(工作流/协调员)引擎,可以被大大简化MapReduce应用的集成。
Oozie的价值
Oozie是Hadoop中最容易被低估的组件。很少有人(甚至没有)在Hadoop书籍讨论这个极其重要的组件。本书不但彰显了Oozie什么可以做,而且还提供了一个端到端的例子,用来展示如何利用Oozie功能来解决实际问题。类似于Hadoop的其余部分,Oozie的功能也具有很好的扩展性。开发者可以通过不同的方法来扩展Oozie的功能。
在Hadoop中,最容易被低估的挑战是:将Hadoop执行与企业处理的其余部分进行整合。使用Oozie来协调MapReduce应用,并通过公开Oozie API的方式公开了Hadoop进程。通过这种方式,你会很容易就找到更好的集成方法,对Hadoop处理和企业处理部分进行集成。
第6章描述了Oozie是什么,Oozie的体系结构、主要组成、编程语言和执行模型。为了更好地解释每个Oozie组件的功能和角色,第7章通过使用Oozie应用解决端到端的实际问题。第8章中,通过展示Oozie的一些高级功能,对Oozie进一步描述。这些高级功能包括自定义Workflow活动、动态生成Workflow和支持超级JAR文件(一个包含了所有的包及其依赖关系的JAR文件)。
第9章主要讲解实时访问层。该章首先介绍了一个工业中实时Hadoop应用实例,然后针对实现方式提出了整体架构。接着,介绍了建立这种实现的三种主要方法——基于HBase的应用程序、实时查询以及基于流的处理。本章介绍了总体架构,并提供了基于HBase实时应用的两个例子。然后,描述了一个实时查询体系结构,并讨论了两个具体的实现——Apache Drill 和 Cloudera’s Impala。还介绍了实时查询和MapReduce的对比。最后,您将了解基于Hadoop的复杂事件处理,以及两个具体的实现——Strom和HFlame。
开发企业级应用需要大量的规划,以及信息安全方面的策略。第10章将重点讲解Hadoop的安全模型。
随着云计算的发展,许多企业尝试将他们的Hadoop运行在云上。第11章的重点是,通过使用EMR实现,在亚马逊的云上运行Hadoop应用;并且介绍了其它AWS服务(如S3),用来补充Hadoop的功能。本章还介绍了,通过使用不同的方法来运行云上的Hadoop,并讨论了最佳实践方案。
除了Hadoop自身的安全问题外,通常Hadoop还需要集成其他企业的组件,来实现数据的导入和导出。第12章将重点介绍,如何才能维护好那些使用了Hadoop的企业级应用,并提供了示例和最佳安全实践,来确保所有Hadoop企业级应用的安全运行。
本章高度概括了大数据和Hadoop之间的关系。并介绍了大数据及其价值,还介绍了企业面临的大数据挑战,包括数据存储和处理的挑战。通过本章,你还了解了Hadoop及其历史。
通过本章,你了解了Hadoop特点,并知道了为什么Hadoop如此适合大数据处理。本章还概述了Hadoop的主要组件,并介绍了一些例子,用来展示Hadoop如何简化数据科学,简化创建企业应用程序的过程。
本章介绍了关于Hadoop发行版本的基础知识,以及为什么许多企业倾向于选择特定供应商的发行版。因为他们不希望处理Apache项目中的兼容问题,或者他们需要供应商的技术支持。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
数据分析在当今信息时代发挥着重要作用。单因素方差分析(One-Way ANOVA)是一种关键的统计方法,用于比较三个或更多独立样本组 ...
2025-04-25CDA持证人简介: 居瑜 ,CDA一级持证人国企财务经理,13年财务管理运营经验,在数据分析就业和实践经验方面有着丰富的积累和经 ...
2025-04-25在当今数字化时代,数据分析师的重要性与日俱增。但许多人在踏上这条职业道路时,往往充满疑惑: 如何成为一名数据分析师?成为 ...
2025-04-24以下的文章内容来源于刘静老师的专栏,如果您想阅读专栏《刘静:10大业务分析模型突破业务瓶颈》,点击下方链接 https://edu.cda ...
2025-04-23大咖简介: 刘凯,CDA大咖汇特邀讲师,DAMA中国分会理事,香港金管局特聘数据管理专家,拥有丰富的行业经验。本文将从数据要素 ...
2025-04-22CDA持证人简介 刘伟,美国 NAU 大学计算机信息技术硕士, CDA数据分析师三级持证人,现任职于江苏宝应农商银行数据治理岗。 学 ...
2025-04-21持证人简介:贺渲雯 ,CDA 数据分析师一级持证人,互联网行业数据分析师 今天我将为大家带来一个关于用户私域用户质量数据分析 ...
2025-04-18一、CDA持证人介绍 在数字化浪潮席卷商业领域的当下,数据分析已成为企业发展的关键驱动力。为助力大家深入了解数据分析在电商行 ...
2025-04-17CDA持证人简介:居瑜 ,CDA一级持证人,国企财务经理,13年财务管理运营经验,在数据分析实践方面积累了丰富的行业经验。 一、 ...
2025-04-16持证人简介: CDA持证人刘凌峰,CDA L1持证人,微软认证讲师(MCT)金山办公最有价值专家(KVP),工信部高级项目管理师,拥有 ...
2025-04-15持证人简介:CDA持证人黄葛英,ICF国际教练联盟认证教练,前字节跳动销售主管,拥有丰富的行业经验。在实际生活中,我们可能会 ...
2025-04-14在 Python 编程学习与实践中,Anaconda 是一款极为重要的工具。它作为一个开源的 Python 发行版本,集成了众多常用的科学计算库 ...
2025-04-14随着大数据时代的深入发展,数据运营成为企业不可或缺的岗位之一。这个职位的核心是通过收集、整理和分析数据,帮助企业做出科 ...
2025-04-11持证人简介:CDA持证人黄葛英,ICF国际教练联盟认证教练,前字节跳动销售主管,拥有丰富的行业经验。 本次分享我将以教培行业为 ...
2025-04-11近日《2025中国城市长租市场发展蓝皮书》(下称《蓝皮书》)正式发布。《蓝皮书》指出,当前我国城市住房正经历从“增量扩张”向 ...
2025-04-10在数字化时代的浪潮中,数据已经成为企业决策和运营的核心。每一位客户,每一次交易,都承载着丰富的信息和价值。 如何在海量客 ...
2025-04-09数据是数字化的基础。随着工业4.0的推进,企业生产运作过程中的在线数据变得更加丰富;而互联网、新零售等C端应用的丰富多彩,产 ...
2025-04-094月7日,美国关税政策对全球金融市场的冲击仍在肆虐,周一亚市早盘,美股股指、原油期货、加密货币、贵金属等资产齐齐重挫,市场 ...
2025-04-08背景 3月26日,科技圈迎来一则重磅消息,苹果公司宣布向浙江大学捐赠 3000 万元人民币,用于支持编程教育。 这一举措并非偶然, ...
2025-04-07在当今数据驱动的时代,数据分析能力备受青睐,数据分析能力频繁出现在岗位需求的描述中,不分岗位的任职要求中,会特意标出“熟 ...
2025-04-03