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

Hadoop分布式文件系统:HDFS是Google分布式文件系统的开源实现。它是Hadoop的两个核心组件之一,在低成本服务器集群中提供大规模分布式文件存储的能力

MapReduce:一种分布式并行编程模型,用于大规模数据集的并行计算。它将大规模集群上运行的复杂并行计算过程高度抽象为两个功能:map和reduce。

hadoop实现了两个功能_spark

 

 

YARN: 它是一个负责集群资源调度管理的组件。纱线的目标是实现“一个集群中的多个框架”,即在一个集群上部署一个统一的资源调度和管理框架纱线,其他计算框架可以部署在纱线上

hadoop实现了两个功能_数据集_02

 

 

HBase:它是Google BigTable的开源实现。它是一个高度可靠、高性能、面向列、可扩展的分布式数据库,主要用于存储非结构化和半结构化的松散数据。

Hive:它是一个基于Hadoop的数据仓库工具,可用于Hadoop文件中存储的数据集的数据排序、特殊查询和分析。

Flume:它是cloudera公司开发的一个高可用、可靠、分布式的海量日志收集、聚合和传输系统。

Sqoop是SQL对Hadoop的缩写。它主要用于Hadoop和关系数据库之间的数据交换,可以提高数据的互操作性。

hadoop实现了两个功能_hadoop实现了两个功能_03

 

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

Spark 是在借鉴了 MapReduce 之上发展而来的,继承了其分布式并行计算的优点并改进了 MapReduce 明显的缺陷,(spark 与 hadoop 的差异)具体如下:

首先,Spark 把中间数据放到内存中,迭代运算效率高。MapReduce 中计算结果需要落地,保存到磁盘上,这样势必会影响整体速度,而 Spark 支持 DAG 图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。

其次,Spark 容错性高。Spark 引进了弹性分布式数据集 RDD (Resilient DistributedDataset) 的抽象,它是分布在一组节点中的只读对象集合,这些集合是弹性的,如果数据集一部分丢失,则可以根据“血统”对它们进行重建。另外在RDD 计算时可以通过 CheckPoint 来实现容错。

最后,Spark 更加通用。mapreduce 只提供了 Map 和 Reduce 两种操作,Spark 提供的数据集操作类型有很多,大致分为:Transformations 和 Actions 两大类。Transformations包括 Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、Join、Cogroup、MapValues、Sort 等多种操作类型,同时还提供 Count, Actions 包括 Collect、Reduce、Lookup 和 Save 等操作

支持的运算平台,支持的开发语言更多。
spark 4 种开发语言:
scala,java,python,R

总结:Spark 是 MapReduce 的替代方案,而且兼容 HDFS、Hive,可融入 Hadoop 的生态系统,以弥补 MapReduce 的不足。

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

由于Hadoop生态系统中的某些组件实现的功能,spark目前无法替代它。例如,storm可以实现毫秒响应的流量计算,而spark不能实现毫秒响应。另一方面,企业中已有许多基于现有Hadoop组件开发的现有应用程序,完全转移到spark需要一定的成本。因此,在很多企业实际应用中,统一部署Hadoop和spark是一个现实合理的选择。

由于Hadoop MapReduce、HBase、storm和spark都可以在资源管理框架Thread上运行,因此它们可以统一部署在Thread上