1.大数据概述
1.列举Hadoop生态的各个组件及其功能、以及各个组件之间的相互关系,以图呈现并加以文字描述。
(1),HDFS是hadoop的分布式文件系统,用于数据的存储和管理。
(2),mapreduce是分布式计算框架,用于处理和计算大量的数据。
(3), hive是基于hadoop的数据仓库,用于将sql转化为mapreduce任务在hadoop上执行。
(4),hbase是分布式列存数据库,可以让大规模数据更加随机,在实时读写访问的同时,mapreduce可以处理保存在hbase里的数据,使得数据存储和并行计算有了更好的结合。
(5),zookeeper是分布式协作服务,解决了分布式环境下的数据管理问题。
(6),sqoop是数据同步工具,用于传统数据库和hadoop之间数据的传输。
(7),pig是基于hadoop的数据流系统,通常用于离线分析,它定义了一种数据流语言-pig latin,可以将脚本转换为mapreduce任务在hadoop上执行。
(8),mahout是数据挖掘算法库,创建了一些可扩展的机器学习领域经典算法的实现,让开发者们可以更快速更方便地创建应用程序。
(9),flume是日志收集工具,具有分布式,高可靠,高容错,易于定制和扩展的特点。它将数据从产生,传输,处理并写入目标的路径的过程抽象为数据流,在具体的数据流中,数据源支持在flume中定制数据发送方,从而支持收集各种不同协议数据。
(10),yarn是一种新的 Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
2.对比Hadoop与Spark的优缺点。
1.1 Hadoop的优点
1、Hadoop具有按位存储和处理数据能力的高可靠性。
2、Hadoop通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。
3、Hadoop能够在节点之间进行动态地移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性。
4、Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配,具有高容错性。
1.2 Hadoop的缺点
1、Hadoop不适用于低延迟数据访问。
2、Hadoop不能高效存储大量小文件。
3、Hadoop不支持多用户写入并任意修改文件。
2.1 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
文档很全
2.2 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中,可以带来如下好处: