Spark大学生期末考试大数据技术_分布式

二:mapreduce与spark的对比

1.spark基于内存,mapreduce基于磁盘。

2.spark更加通用,spark提供了transformation和action这两大类的多个功能api,另外还有流式处理sparkstreaming模块、图计算GraphX等等;mapreduce只提供了map和reduce两种操作,流计算以及其他模块的支持比较缺乏。

Spark大学生期末考试大数据技术_数据_02

3.mapreduce任务调度和启动开销大,spark线程池模型减少task启动开销。

4.mapreduce不适合迭代计算(如机器学习、图计算等),交互式处理(数据挖掘) 和流式处理(点击日志分析), 其中间结果需要落地,需要保存到磁盘,这样必然会有磁盘io操做,影响性能。

spark把运算的中间数据存放在内存,迭代计算效率更高,更适合做需要反复迭代的计算。

Spark大学生期末考试大数据技术_分布式_03

5.spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,RDD是一组分布式的存储在节点内存中的只读性质的数据集,这些集合是弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血缘关系来实现重建;mapreduce的话容错可能只能重新计算了,成本较高  。

6.spark框架和生态更为复杂,首先有RDD、血缘lineage(保存了RDD的依赖关系)、执行时的有向无环图DAG、stage划分等等,很多时候spark作业都需要根据不同业务场景的需要进行调优已达到性能要求;

mapreduce框架及其生态相对较为简单,对性能的要求也相对较弱,但是运行较为稳定,适合长期后台运行。

总结:spark生态更为丰富,功能更为强大、性能更佳,适用范围更广;mapreduce更简单、稳定性好、适合离线海量数据挖掘计算。

Spark大学生期末考试大数据技术_大数据_04

三:结构化数据与非结构化数据

结构化数据是指按照预定义的模式和格式进行组织和存储的数据。它通常以表格形式存在,每个数据字段都有明确定义的数据类型和约束条件。结构化数据可以使用关系型数据库进行存储和管理,例如使用SQL语言进行查询和操作。常见的结构化数据包括用户信息、订单记录、销售数据等。

非结构化数据是指没有明确格式和模式的数据,它的组织形式不规则且不易被机器直接理解和处理。非结构化数据通常以文本、图像、音频、视频等形式存在。由于非结构化数据的复杂性,传统的关系型数据库难以有效存储和处理这些数据。因此,针对非结构化数据,常用的存储和处理方式包括文本搜索引擎、图像识别技术、自然语言处理等。

四:spark搭建的三种模式

1.local

Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。

2.yarn

Standalone模式是指使用Spark原生的资源管理器的集群运行模式,需要使用Master和Worker节点,其中,Master节点负责资源的控制、管理、监控集群中的Worker节点.3.standalone

五:mapreduce的执行流程

YARN模式是指使用Hadoop的YARN作为资源管理器的集群运行模式。
在YARN模式下,不需要使用Master和Worker节点(即不需要在搭建额外的spark集群了),而是使用YARN下的ResourceManager 节点与NodeManager节点,对应Standalone模式下的Master节点和Worker节点。

1、数据输入
  • 在执行MapReduce任务前,将小文件进行合并,大量小文件会产生大量的map任务,增大map任务装载次数,而任务装载较耗时,从而导致MapReduce运行速度较慢。因此采用CombineTextInputFormat来作为输入,解决输入端大量的小文件场景。
2、Map阶段
  • 减少溢写(spill)次数
  • 减少合并(merge)次数
  • 在map之后,不影响业务逻辑前提下,先进行combine处理,减少 I/O
3、Reduce阶段
  • 合理设置map和reduce数
  • 设置map、reduce共存
  • 规避使用reduce
  • 合理设置reduce端的buffer
4、Shuffle阶段
  • Shuffle阶段的调优就是给Shuffle过程尽量多地提供内存空间,以防止出现内存溢出现象,可以由参数mapred.child.java.opts来设置,任务节点上的内存大小应尽量大。

Spark大学生期末考试大数据技术_数据_05

Spark大学生期末考试大数据技术_spark_06

六:Spark的架构

a.客户端:用户提交作业的客户端

b.Driver:运行Application的main()函数并创建SparkContext

c.SparkContext:整个应用的上下文,控制应用的生命周期

d.Cluster Manager:资源管理器,即在集群上获取资源的外部服务,目前主要有Standalone(Spark原生的资源管理器)和YARN(Hadoop集群的资源管理器)

e.SparkWorker:集群中任何可以运行应用程序的节点,运行一个或多个Executor进程