1.大数据概述
1.列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述。
(1) 由Hadoop生态圈可以看出HDFS是Hadoop的基石。HDFS是一个具备高度容错性的文件系统,同时适合部署在低廉价的硬件上。提供高吞吐量的数据访问,适合有着超大数据集的应用程序。
(2) YARN解决了上一代Hadoop资源利用率低和不能兼容异构的计算框架等多种问题,提供统一的资源管理和调度。
(3) MapReduce是一种编程模型,这种编程模型非常适合进行分布式计算,利用函数式编程思想,将对数据集的过程分为Map和Reduce两个阶段,程序的设计有很高的扩展性。
(4) Tez有向无环图的执行引擎,DAG作业的开源计算框架。
(5) Spark采用基于内存的分布式数据集,对迭代计算有很大优势,用于构建大规模,延迟低的数据分析应用。
(6) HBase采用了Bigtable的数据模型–列族,是面向列族的开源数据库。它擅长大规模数据的随机、实时读写访问。
(7) Zookeeper基于Fast Paxos算法实现,解决分布式系统中一致性的问题。
(8) Hive构建在Hadoop之上的数据仓库,用于解决海量结构化的日志数据统计,可以将结构化的数据文件映射为一张表,提供简单的SQL查询功能。
(9) Pig与Hive类似,也是对大数据集进行分析和评估的工具,不同点在于Pig提供了一种高层的,面向领域的抽象语言Pig Latin,将脚本转换为Mapreduce任务在Hadoop上执行。使用Pig Latin语言表达数据流,目的在于让MapReduce用起来更简单。
(10) Shark可以近似认为仅将物理执行计划从MR作业替换成了Spark作业。
(11) Oozie是基于工作流引擎的服务器,可以在上面运行Hadoop任务。
(12) Ambari是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。
(13) Flume是Cloudera提供的一个高可用,高可靠,分布式的海量日志采集、聚合和传输系统,Flume支持在日志系统中定制各类数据发送方,用于数据收集,同时Flume提供对数据进行简单处理并写到各个数据接收方的能力。
(14) Sqoop主要作用在于结构化的数据存储与Hadoop之间进行数据双向交换。Sqoop可以将关系型数据库的数据导入到HDFS、Hive、也可以从HDFS、Hive导出到关系型数据库中。Sqoop利用了Hadoop的优点,整个导入导出都是由MapReduce计算框架实现并行化,非常高效。
2.对比Hadoop与Spark的优缺点。
Hadoop:两步计算,磁盘存储。Spark:多步计算,内存存储。
Spark 是在借鉴了 MapReduce 之上发展而来的,继承了其分布式并行计算的优点并改进了 MapReduce 明显的缺陷。
(1) MapReduce 中计算结果需要落地,保存到磁盘上,影响整体速度。
Spark支持 DAG 图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。把中间数据放到内存中,迭代运算效率高。
(2) Hadoop将每次处理后的数据都写入到磁盘上,所以其天生就能很有弹性的对系统错误进行处理。
Spark的数据对象存储在分布于数据集群中的叫做弹性分布式数据集
(3) Hadoop会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。
Spark则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。
3.如何实现Hadoop与Spark的统一部署?
由于Hadoop MapReduce、HBase、Storm和Spark等,都可以运行在资源管理框架YARN之上,因此,可以在YARN之上进行统一部署。