1. 大数据概述

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

Hadoop生态圈

图1 Hadoop生态圈

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

HDFS是Hadoop组件的核心之一,是整个hadoop体系的基础,是用来负责数据的存储与管理功能的。

HDFS是高度容错设计和适合在低成本的硬件上部署。

HDFS能够提供高吞吐量访问应用程序数据,所以其适用于大型数据集的应用程序。

2、Yarn(资源管理框架)

YARN是集群资源调度管理的组件,在YARN之上部署其他计算框架,由YARN统一进行资源分配。

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

MapReduce是分布式并行编程模型,用于大规模数据集的并行计算,它屏蔽了分布式计算框架细节,将计算抽象成map和reduce两部分。

其中Map对数据集上的独立元素进行指定的操作,生成键-值对形式中间结果。Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。

让不会分布式并行编程的技术人员,也可以将程序运行在分布式系统上,实现海量数据集的计算。

MapReduce非常适合在大量计算机组成的分布式并行环境里进行数据处理。

4、Sqoop(数据同步工具)

Sqoop是SQL-to-Hadoop的缩写,主要用于传统数据库和Hadoop之前传输数据。

数据的导入和导出本质上是Mapreduce程序,充分利用了MR的并行化和容错性。

Sqoop利用数据库技术描述数据架构,用于在关系数据库、数据仓库和Hadoop之间转移数据。

5、Hbase(分布式列存数据库)

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

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

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

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

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

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

7、Hive(数据仓库)

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

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

可对存储在Hadoop文件中的数据集进行数据整理、特殊查询和分析处理。

8、Flume(日志收集工具)

它将数据从产生、传输、处理并最终写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集各种不同协议数据。

同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。

此外,Flume还具有能够将日志写往各种数据目标(可定制)的能力,用于收集数据。

总的来说,Flume是一个可扩展、适合复杂环境的海量日志收集系统。当然也可以用于收集其他类型数据。

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

Spark 是使用 scala 实现的基于内存计算的大数据开源集群计算环境,用于大规模数据处理的统一分析引擎。

它提供 Java、Scala、Python 和 R 中的高级 API,以及支持通用执行图的优化引擎。

它还支持一组丰富的高级工具,包括用于 SQL 和结构化数据处理的Spark SQL 、用于机器学习的MLlib、用于图形处理的 GraphX 以及用于增量计算和流处理的结构化流。

具有轻量级快速处理、易于使用、支持复杂查询、实时的流处理、与已存Hadoop数据整合、活跃和不断壮大的社区等特点。

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

二、对比Hadoop与Spark的优缺点。

(1)性能

Spark在内存中处理数据相比于Hadoop使用磁盘IO进行操作速度更快,具体流程为:

Mapreduce: 读 – 处理 - 写磁盘 -- 读 - 处理 - 写
Spark: 读 - 处理 - 处理 --(需要的时候)写磁盘 - 写

Mapreduce与Spark的比较

图2 Mapreduce与Spark的比较

而不同于Mapreduce,Spark把中间数据缓存在内存里,处理数据的延迟大大降低了

由于Spark数据的交换无需写入磁盘,能很大程度地避免数据落地

(2)易用性

Spark支持Scala、Java、Python、Spark SQL等语言等,Spark可以使用交互模式操作获得实时反馈。

MapReduce没有交互模式。

(3)成本

Spark在数据多大PB的情况下依然有非常高的处理速度。

被用于在数量只有十分之一的机器上,对100TB数据进行排序的速度比Hadoop MapReduce快3倍。

(4)兼容性

MapReduce和Spark相互兼容

MapReduce通过JDBC和ODC兼容诸多数据源、文件格式和商业智能工具,Spark具有与MapReduce同样的兼容性。

三、如何实现Hadoop与Spark的统一部署?

由于Hadoop生态系统中的一些组件所实现的功能,目前还是无法由Spark取代的,例如Spark无法做到毫秒级响应。

另一方面,企业许多现有应用是基于Hadoop开发的,技术转换成用Spark开发需要一定成本。

所以可将不同的计算框架统一部署在Yarn资源管理框架上,由Yarn进行资源调度和管理,计算资源按需伸缩,不需要负载应用混搭,提高集群利用率,共享底层存储,避免数据跨集群迁移,实现Hadoop和spark的统一部署。

posted @ 2022-02-26 12:08  ztop  阅读(162)  评论(0编辑  收藏  举报