1.列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述。
HDFS(Hadoop 分布式文件系统),HDFS 是 Hadoop 生态圈中提供分布式存储支持的系统,上层的很多计算框架(Hbase、Spark 等)都依赖于 HDFS 存储。
MapReduce(分布式计算模型)离线计算,Tez 和 Spark,它们通过大量使用内存、灵活的数据交换,更少的磁盘读写来提高分析效率。
Yarn(分布式资源管理器)作为一个通用的分布式资源管理器,它可以管理多种计算模型,如 Spark、Storm、MapReduce 、Flink 等都可以放到 Yarn 下进行统一管理。
Spark(内存计算)提供了内存中的分布式计算能力,相比传统的 MapReduce 大数据分析效率更高、运行速度更快。
HBase(分布式列存储数据库)继承了列存储的特性,它非常适合需对数据进行随机读、写操作、比如每秒对PB级数据进行几千次读、写访问是非常简单的操作。其次,Hbase构建在HDFS之上,其内部管理的文件全部存储在HDFS中。这使它具有高度容错性和可扩展性,并支持Hadoop mapreduce程序设计模型。
Hive(数据仓库)定义了一种类似 SQL 的查询语言(HQL),它可以将 SQL 转化为 MapReduce 任务在 Hadoop 上执行。
Oozie(工作流调度器)Oozie 工作流通过 hPDL 定义,工作流操作通过远程系统启动任务。当任务完成后,远程系统会进行回调来通知任务已经结束,然后再开始下一个操作。
Sqoop 与 Pig,通过 Hive 可以把脚本和 SQL 语言翻译成 MapReduce 程序,扔给计算引擎去计算。Pig 与 Hive 类似,它定义了一种数据流语言,即 Pig Latin,它是 MapReduce 编程的复杂性的抽象,Pig Latin 可以完成排序、过滤、求和、关联等操作,支持自定义函数。Pig 自动把 Pig Latin 映射为 MapReduce 作业,上传到集群运行
Flume(日志收集工具)Flume 数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume 还具有能够将日志写往各种数据目标(文件、HDFS、网络)的能力。在 Hadoop 平台,我们主要使用的是通过 Flume 将数据从源服务器写入 Hadoop 的 HDFS 上。
Kafka(分布式消息队列) 是 Apache 组织下的一个开源系统,它的最大特性就是可以实时的处理大量数据以满足各种需求场景
ZooKeeper(分布式协作服务)当节点发生矛盾冲突时, ZooKeeper 站在第三方客观的角度,根据一些规则,客观的对冲突双方做出合理、合规的判决,从中进行调解。
Ambari(大数据运维工具)Ambari 是一个大数据基础运维平台,它实现了 Hadoop 生态圈各种组件的自动化部署、服务管理和监控告警,Ambari 通过 puppet 实现自动化安装和配置,通过 Ganglia 收集监控度量指标,用 Nagios 实现故障报警。目前 Ambari 已支持大多数 Hadoop 组件,包括 HDFS、MapReduce、Oozie、Hive、Pig、 Hbase、ZooKeeper、Sqoop、Kafka、Spark、Druid、Storm 等几十个常用的 Hadoop 组件。
2.对比Hadoop与Spark的优缺点
Spark它本身没有一个分布式存储系统。而分布式存储是如今许多大数据项目的基础。它可以将PB级的数据集存储在几乎无限数量的普通计算机的硬盘上,并提供了良好的可扩展性,只需要随着数据集的增大增加硬盘。因此,Spark需要一个第三方的分布式存储。也正是因为这个原因,许多大数据项目都将
Spark安装在Hadoop之上。这样,Spark的高级分析应用程序就可以使用存储在HDFS中的数据了。
与Hadoop相比,Spark真正的优势在于速度。Spark的大部分操作都是在内存中,而Hadoop的MapReduce系统会在每次操作之后将所有数据写回到物理存储介质上。这是为了确保在出现问题时能够完全恢复,但Spark的弹性分布式数据存储也能实现这一点。
在高级数据处理(如实时流处理和机器学习)方面,Spark的功能要胜过Hadoop。实时处理意味着可以在数据捕获的瞬间将其提交给分析型应用程序,并立即获得反馈。
3.如何实现Hadoop与Spark的统一部署?
由于Hadoop MapReduce、HBase、Storm和Spark等,都可以运行在资源管理框架YARN之上,因此,可以在YARN之上进行统一部署