一、列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述
-
1. HDFS(Hadoop分布式文件系统)
Hadoop分布式文件系统是Hadoop项目的两大核心之一,是针对谷歌文件系统(GoogleFileSystem,GFS)的开源实现。
HDFS具有处理超大数据
、流式处理
、可以运行在廉价商用服务器上
等优点。
HDFS在设计之初就是要运行在廉价的大型服务器集群上,因此在设计上就把硬件故障作为一种常态来考虑,可以保证在部分硬件发生故障的情况下仍然能够保证文件系统的整体可用性和可靠性。HDFS放宽了一部分POSIX约束,从而实现以流的形式访问文件系统中的数据。
HDFS在访问应用程序数据时,可以具有很高的吞吐率
,因此对于超大数据集的应用程序而言,选择HDFS作为底层数据存储是较好的选择。 -
2. MapReduce(分布式计算框架)
MapReduce是针对谷歌MapReduce的开源实现。
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算,它将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了两个函数一一Map和Reduce上,并且允许用户在不了解分布式系统底层细节的情况下开发并行应用程序,并将其运行于廉价计算机集群上,完成海量数据的处理。通俗地说MapReduce的核心思想就是“分而治之”
。 -
3. Hive(基于Hadoop的数据仓库)
Hive是—个基于Hadoop的数据仓库工具,可以用于对Hadoop文件中的数据集进行
数据整理
、特殊查询
和分析存储
。
Hive的学习门槛比较低,因为它提供了类似于关系数据库SQL语言的查询语言——HiveQL,可以通过HiveQL语句快速实现简单的MapReduce统计,Hive自身可以将HiveQL语句转换为MapReduce任务进行运行,而不必开发专门的MapReduce应用,因而十分适合数据仓库的统计分析。 -
4. HBase(分布式列存数据库)
HBase是一个提供
高可靠性
、高性能
、可伸缩
、实时读写
、分布式
的列式数据库,一般采用HDFS作为其底层数据存储。
HBase是针对谷歌BigTable的开源实现,二者都采用了相同的数据模型,具有强大的非结构化数据存储能力。
HBase与传统关系数据库的一个重要区别是,前者釆用基于列的存储,而后者采用基于行的存储。
HBase具有良好的横向扩展能力,可以通过不断增加廉价的商用服务器来增加存储能力。 -
5. Zookeeper(分布式协作服务)
Zookeeper是针对谷歌Chubby的一个开源实现,是高效和可靠的协同工作系统,提供分布式锁之类的基本服务,用于构建分布式应用,减轻分布式应用程序所承担的协调任务。
-
6. Sqoop(数据同步工具)
Sqoop是SQL-to-Hadoop的缩写,主要用来在Hadoop和关系数据库之间交换数据的互操作性。
通过Sqoop可以方便地将数据从MySQL、Oracle.PostgreSQL等关系数据库中导人Hadoop(可以导人HDFS、HBase或Hive),或者将数据从Hadoop导出到关系数据库,使得传统关系数据库和Hadoop之间的数据迁移变得非常方便。
Sqoop主要通过JDBC(JavaDataBaseConnectivity湘关系数据库进行交互,理论上,支持JDBC的关系数据库都可以使Sqoop和Hadoop进行数据交互。
Sqoop是专门为大数据集设计的,支持增量更新,可以将新记录添加到最近一次导出的数据源上,或者指定上次修改的时间戳。 -
7. Pig(基于hadoop的数据流系统)
Pig是一种数据流语言和运行环境,适合于使用HadooP和MapReduce平台来查询大型半结构化数据集。虽然MapReduce应用程序的编写不是十分复杂,但毕竟也是需要一定的开发经验的。
Pig的出现大大简化了Hadoop常见的工作任务,它在MapReduce的基础上创建了更简单的过程语言抽象,为Hadoop应用程序提供了一种更加接近结构化査询语言的接口。 -
8. Mahout(数据挖掘算法库)
Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
Mahout现在已经包含了聚类,分类,推荐引擎(协同过滤)和频繁集挖掘等广泛使用的数据挖掘方法。
除了算法外,Mahout还包含了数据的输入/输出工具,与其他存储系统(如数据库,MongoDB或Cassandra)集成等数据挖掘支持架构。 -
9. Flume(日志收集工具)
Flume是Cloudera提供的一个
高可用的
、高可靠的
、分布式
的海量日志采集、聚合和传输的系统。
Flume支持在日志系统中定制各类数据发送方,用于数据收集;同时,Flume提供对数据进行简单处理并写到各种数据接受方的能力。 -
10. Ambari
ApacheAmbari是一种基于Web的工具,支持ApacheHadoop集群的
安装、部署、配置和管理
。
Ambari目前已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、HBase、Zookeeper、Sqoop等。
二、对比Hadoop与Spark的优缺点
优点
-
Spark确实速度很快(最多比Hadoop MapReduce快100倍)
-
Spark还可以执行批量处理,然而它真正擅长的是处理流工作负载、交互式查询和机器学习。
-
相比MapReduce基于磁盘的批量处理引擎,Spark赖以成名之处是其数据实时处理功能。
-
Spark与Hadoop及其模块兼容。实际上,在Hadoop的项目页面上,Spark就被列为是一个模块。
缺点
-
Spark不能为我们提供完整的技术栈。它允许我们将它的功能集成到我们的Hadoop集群中并且从中获益,而不用完全脱离我们老的集群方案。
-
Spark还不够成熟。在大数据栈中我们有很广泛的选择可以选出不同的开源产品来组合在一起形成一个单独的技术栈使用。
三、如何实现Hadoop与Spark的统一部署
-
一方面,由于Hadoop生态系统中的一些组件所实现的功能,目前还是无法由Spark取代的,比如,Storm可以实现毫秒级响应的流计算,但是,Spark则无法做到毫秒级响应。
-
另一方面,企业中已经有许多现有的应用,都是基于现有的Hadoop组件开发的,完全转移到Spark上需要一定的成本。因此,在许多企业实际应用中,Hadoop和Spark的统一部署是一种比较现实合理的选择。
-
由于Hadoop MapReduce、HBase、Storm和Spark等,都可以运行在资源管理框架YARN之上,因此,可以在YARN之上进行统一部署。(如图所示)