1、大数据概述

1.列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述。

Hadoop的核心是YARN,HDFS和Mapreduce

下图是hadoop生态系统,集成spark生态圈。在未来一段时间内,hadoop将于spark共存,hadoop与spark都能部署在yarn、mesos的资源管理系统之上

image

1、HDFS(Hadoop分布式文件系统)

HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适合带有大型数据集的应用程序。它提供了一次写入多次读取的机制,数据以块的形式,同时分布在集群不同物理机器上。

2、Mapreduce(分布式计算框架)

MapReduce是一种分布式计算模型,用以进行大数据量的计算。它屏蔽了分布式计算框架细节,将计算抽象成map和reduce两部分,其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce非常适合在大量计算机组成的分布式并行环境里进行数据处理。

3、HBASE(分布式列存数据库)

HBase是一个建立在HDFS之上,面向列的针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。

HBase采用了BigTable的数据模型:增强的稀疏排序映射表(Key/Value),其中,键由行关键字、列关键字和时间戳构成。

HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

4、Zookeeper(分布式协作服务)

解决分布式环境下的数据管理问题:统一命名,状态同步,集群管理,配置同步等。

Hadoop的许多组件依赖于Zookeeper,它运行在计算机集群上面,用于管理Hadoop操作。

5、HIVE(数据仓库)

Hive定义了一种类似SQL的查询语言(HQL),将SQL转化为MapReduce任务在Hadoop上执行。通常用于离线分析。

HQL用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语句被翻译为Hadoop上面的MapReduce任务。

6、Pig(ad-hoc脚本)

Pig定义了一种数据流语言—Pig Latin,它是MapReduce编程的复杂性的抽象,Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin),其编译器将Pig Latin翻译成MapReduce程序序列将脚本转换为MapReduce任务在Hadoop上执行。通常用于进行离线分析。

7、Sqoop(数据ETL/同步工具)

Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。Sqoop利用数据库技术描述数据架构,用于在关系数据库、数据仓库和Hadoop之间转移数据。

8、Flume(日志收集工具)

Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力。总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。当然也可以用于收集其他类型数据

9、Mahout(数据挖掘算法库)

Mahout的主要目标是创建一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。

10、Oozie(工作流调度器)

Oozie是一个可扩展的工作体系,集成于Hadoop的堆栈,用于协调多个MapReduce作业的执行。它能够管理一个复杂的系统,基于外部事件来执行,外部事件包括数据的定时和数据的出现。

11、Yarn(分布式资源管理器)

该框架为提供了以下几个组件:

  - 资源管理:包括应用程序管理和机器资源管理

  - 资源双层调度

  - 容错性:各个组件均有考虑容错性

  - 扩展性:可扩展到上万个节点

12、Mesos(分布式资源管理器)

  与yarn类似,Mesos是一个资源统一管理和调度的平台,同样支持比如MR、steaming等多种运算框架。

13、Tachyon(分布式内存文件系统)

Tachyon(/'tæki:ˌɒn/ 意为超光速粒子)是以内存为中心的分布式文件系统,拥有高性能和容错能力,能够为集群框架(如Spark、MapReduce)提供可靠的内存级速度的文件共享服务。

14、Tez(DAG计算模型)

Tez是Apache最新开源的支持DAG作业的计算框架,它直接源于MapReduce框架,核心思想是将Map和Reduce两个操作进一步拆分,分解后的元操作可以任意灵活组合,产生新的操作,这些操作经过一些控制程序组装后,可形成一个大的DAG作业。目前hive支持mr、tez计算模型,tez能完美二进制mr程序,提升运算性能。

15、Spark(内存DAG计算模型)

Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍

16、Giraph(图计算模型)

Apache Giraph是一个可伸缩的分布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。

17、GraphX(图计算模型)

Spark GraphX最先是伯克利AMPLAB的一个分布式图计算框架项目,目前整合在spark运行框架中,为其提供BSP大规模并行图计算能力。

18、MLib(机器学习库)

Spark MLlib是一个机器学习库,它提供了各种各样的算法,这些算法用来在集群上针对分类、回归、聚类、协同过滤等。

19、Streaming(流计算模型)

Spark Streaming支持对流数据的实时处理,以微批的方式对实时数据进行计算

20、 Kafka(分布式消息队列)

Kafka主要用于处理活跃的流式数据。活跃的流式数据在web网站应用中非常常见,这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计处理。

21、Phoenix(hbase sql接口)

Apache Phoenix 是HBase的SQL驱动,Phoenix 使得Hbase 支持通过JDBC的方式进行访问,并将你的SQL查询转换成Hbase的扫描和相应的动作。

22、ranger(安全管理工具)

Apache ranger是一个hadoop集群权限框架,提供操作、监控、管理复杂的数据权限,它提供一个集中的管理机制,管理基于yarn的hadoop生态圈的所有数据权限。

23、knox(hadoop安全网关)

Apache knox是一个访问hadoop集群的restapi网关,它为所有rest访问提供了一个简单的访问接口点,能完成3A认证(Authentication,Authorization,Auditing)和SSO(单点登录)等

24、 falcon(数据生命周期管理工具)

Apache Falcon 是一个面向Hadoop的、新的数据处理和管理平台,设计用于数据移动、数据管道协调、生命周期管理和数据发现。它使终端用户可以快速地将他们的数据及其相关的处理和管理任务“上载(onboard)”到Hadoop集群。

25、Ambari(安装部署配置管理工具)

Apache Ambari 的作用来说,就是创建、管理、监视 Hadoop 的集群,是为了让 Hadoop 以及相关的大数据软件更容易使用的一个web工具。

 

 

2.对比Hadoop与Spark的优缺点。

Hadoop的优点

1、Hadoop具有按位存储和处理数据能力的高可靠性。

2、Hadoop通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。

3、Hadoop能够在节点之间进行动态地移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性。

4、Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配,具有高容错性。

Hadoop的缺点

1、Hadoop不适用于低延迟数据访问。

2、Hadoop不能高效存储大量小文件。

3、Hadoop不支持多用户写入并任意修改文件。

Spark的优点

1、速度快

基于内存运算时比mapreduce快100倍,基于磁盘运算也快10倍以上

2、使用方便,支持多语言

本地调试很方便

支持多种语言:Scala、Java、Python、R

多种运行模式:Local模式、Standalone模式、Spark On Yarn、Spark On Mesoes、Kubernetes

3、丰富的操作算子

spark有丰富的算子,代码很简洁,几行代码就可以实现mapreduce几个类的工作。

Value型Transformation算子:map、flatMap、mapPartition、filter、union、distinct、distinct、sample、cache、persist

Key-Value型Transformation算子:mapValues、reduceByKey、partitionBy

Action算子:count、foreach、collect、reduce、saveAsTextFile、join、leftOuterJoin、rightOuterJoin

4、支持的场景多

支持批处理、实时处理 Spark Streaming、机器学习 Mllib、图计算 Graphx

各种处理可以在同一个应用中无缝隙使用

5、生态完善、社区活跃

很容易操作hadoop、hbase、cassandra、kafka

文档很全

Spark的缺点

1、流式计算不如flink

2.3版本以前spark的流式计算是将流数据当成小批量的数据(Micro-batch)进行处理,延迟较高,通常大于百毫秒级别;

2.3版本以后开始支持连续处理模型(类flink), 但功能不如flink全。

2、资源消耗较高

spark是基于内存计算,因此对资源的要求较高,尤其是内存;

当从hdfs上读取很多小文件生成rdd时,rdd元数据会占用较多内存。

 

 

3.如何实现Hadoop与Spark的统一部署?

一方面,由于Hadoop生态系统中的一些组件所实现的功能,目前还是无法由Spark取代的,比如,Storm可以实现毫秒级响应的流计算,但是,Spark则无法做到毫秒级响应。另一方面,企业中已经有许多现有的应用,都是基于现有的Hadoop组件开发的,完全转移到Spark上需要一定的成本。因此,在许多企业实际应用中,Hadoop和Spark的统一部署是一种比较现实合理的选择。

由于Hadoop MapReduce、HBase、Storm和Spark等,都可以运行在资源管理框架YARN之上,因此,可以在YARN之上进行统一部署(如图所示)。这些不同的计算框架统一运行在YARN中,可以带来如下好处:

 计算资源按需伸缩;

 不用负载应用混搭,集群利用率高;

 共享底层存储,避免数据跨集群迁移。

 

posted @ 2022-02-23 18:10  吕浩洵  阅读(91)  评论(0编辑  收藏  举报