大数据和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
“最近复购率一直在下降,我们的营销力度不小啊,为什么用户还是走了?” “是不是广告投放的用户质量不高?还是我们的产品问题 ...
2025-02-21以下文章来源于数有道 ,作者数据星爷 SQL查询是数据分析工作的基础,也是CDA数据分析师一级的核心考点,人工智能时代,AI能为 ...
2025-02-19在当今这个数据驱动的时代,几乎每一个业务决策都离不开对数据的深入分析。而其中,指标波动归因分析更是至关重要的一环。无论是 ...
2025-02-18当数据开始说谎:那些年我们交过的学费 你有没有经历过这样的场景?熬了三个通宵做的数据分析报告,在会议上被老板一句"这数据靠 ...
2025-02-17数据分析作为一门跨学科领域,融合了统计学、编程、业务理解和可视化技术。无论是初学者还是有一定经验的从业者,系统化的学习路 ...
2025-02-17挖掘用户价值本质是让企业从‘赚今天的钱’升级为‘赚未来的钱’,同时让用户从‘被推销’变为‘被满足’。询问deepseek关于挖 ...
2025-02-17近来deepseek爆火,看看deepseek能否帮我们快速实现数据看板实时更新。 可以看出这对不知道怎么动手的小白来说是相当友好的, ...
2025-02-14一秒精通 Deepseek,不用找教程,不用买资料,更不用报一堆垃圾课程,所有这么去做的,都是舍近求远,因为你忽略了 deepseek 的 ...
2025-02-12自学 Python 的关键在于高效规划 + 实践驱动。以下是一份适合零基础快速入门的自学路径,结合资源推荐和实用技巧: 一、快速入 ...
2025-02-12“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩 ...
2025-02-08活动介绍 为了助力大家在数据分析领域不断精进技能,我们特别举办本期打卡活动。在这里,你可以充分利用碎片化时间在线学习,让 ...
2025-02-071、闺女,醒醒,媒人把相亲的带来了。 我。。。。。。。 2、前年春节相亲相了40个, 去年春节相亲50个, 祖宗,今年你想相多少个 ...
2025-02-06在数据科学的广阔领域中,统计分析与数据挖掘占据了重要位置。尽管它们常常被视为有关联的领域,但两者在理论基础、目标、方法及 ...
2025-02-05在数据分析的世界里,“对比”是一种简单且有效的方法。这就像两个女孩子穿同一款式的衣服,效果不一样。 很多人都听过“货比三 ...
2025-02-05当我们只有非常少量的已标记数据,同时有大量未标记数据点时,可以使用半监督学习算法来处理。在sklearn中,基于图算法的半监督 ...
2025-02-05考虑一种棘手的情况:训练数据中大部分样本没有标签。此时,我们可以考虑使用半监督学习方法来处理。半监督学习能够利用这些额 ...
2025-02-04一、数学函数 1、取整 =INT(数字) 2、求余数 =MOD(除数,被除数) 3、四舍五入 =ROUND(数字,保留小数位数) 4、取绝对值 =AB ...
2025-02-03作者:CDA持证人 余治国 一般各平台出薪资报告,都会哀嚎遍野。举个例子,去年某招聘平台发布《中国女性职场现状调查报告》, ...
2025-02-02真正的数据分析大神是什么样的呢?有人认为他们能轻松驾驭各种分析工具,能够从海量数据中找到潜在关联,或者一眼识别报告中的数 ...
2025-02-01现今社会,“转行”似乎成无数职场人无法回避的话题。但行业就像座围城:外行人看光鲜,内行人看心酸。数据分析这个行业,近几年 ...
2025-01-31