![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 60
Rnan-prince
知是行之始,行是知之成(1352638748@qq.com)
展开
-
Spark比Mapreduce快的原因
1)基于内存spark是基于内存进行数据处理的,MapReduce是基于磁盘进行数据处理的。MapReduce的设计:中间结果保存在文件中,提高了可靠性,减少了内存占用。但是牺牲了性能。Spark的设计:数据在内存中进行交换,要快一些,但是内存这个东西,可靠性不如磁盘。所以性能方面比MapReduce要好。DAG计算模型在迭代计算上还是比MapReduce的效率更高。2)DAG有向无环图spark中具有DAG有向无环图,DAG有向无环图在此过程中减少了shuffle以及落地磁盘的次数。Spa原创 2021-01-17 22:24:25 · 1488 阅读 · 0 评论 -
Spark技术栈中的组件
Spark技术栈概述相对于第一代的大数据生态系统Hadoop中的MapReduce,Spark 无论是在性能还是在方案的统一性方面,都有着极大的优势。Spark框架包含了多个紧密集成的组件。主要有Spark Core、Spark Streaming、Spark SQL等。Spark core是其它组件的基础,spark的内核,主要包含:有向循环图、RDD、Lingage、Cache、broadcast等,封装了底层通讯框架,实现了Spark的作业调度、内存管理、容错、与存储系统交互等基本功能,并针原创 2021-01-17 22:21:34 · 635 阅读 · 0 评论 -
Spark如何防止内存溢出
Spark使用过程中会有多种内存溢出的情况,即包括driver端的内存溢出,map对象过多内存溢出,数据不平衡内存溢出,shuffle后内存溢出以及standalone资源分配不均匀导致的内存溢出。driver端的内存溢出可以增大driver的内存参数:Spark.driver.memory (default 1g)这个参数用来设置Driver的内存。在Spark程序中,SparkContext,DAGScheduler都是运行在Driver端的。对应rdd的Stage切分也是在Driver端运行,原创 2021-01-17 22:19:14 · 563 阅读 · 0 评论 -
Spark任务提交后的执行流程
客户端启动后直接运行用户程序,启动Driver相关的工作:DAGScheduler和BlockManagerMaster等。 客户端的Driver向Master注册。 Master还会让Worker启动Exeuctor。Worker创建一个ExecutorRunner线程,ExecutorRunner会启动 ExecutorBackend进程。 ExecutorBackend启动后会向Driver的SchedulerBackend注册。Driver的DAGScheduler解析作业并生成相应的Stag原创 2021-01-17 22:16:03 · 137 阅读 · 0 评论 -
Spark处理数据比Hive快的原因
Spark SQL比Hadoop Hive快,是有一定条件的,而且不是Spark SQL的引擎比Hive的引擎快,相反,Hive的HQL引擎还比Spark SQL的引擎更快。其实,关键还是在于Spark 本身快。那么Spark为什么快呢? 消除了冗余的HDFS读写 Hadoop每次shuffle操作后,必须写到磁盘,而Spark在shuffle后不一定落盘,可以cache到内存中,以便迭代时使用。如果操作复杂,很多的shufle操作,那么Hadoop的读写IO时间会大大增加。、 消除了冗原创 2021-01-17 22:12:29 · 1728 阅读 · 0 评论 -
Spark常用操作(收藏)
1、transformation 操作map(func): 对调用 map 的 RDD 数据集中的每个 element 都使用 func,然后返回一个新的 RDD,这个返回的数据集是分布式的数据集。 filter(func): 对调用 filter 的 RDD 数据集中的每个元素都使用 func,然后返回一个包含使 func 为 true 的元素构成的 RDD。 flatMap(func): 和 map 差不多,但是 flatMap 生成的是多个结果。 mapPartitions(func): 和原创 2021-01-03 21:30:37 · 663 阅读 · 0 评论 -
Hadoop,HDFS,Map Reduce,Spark,Hive,Yarn之间的关系
HadoopHadoop 生态圈(或者泛生态圈)是一个能够对大量数据进行分布式处理的软件框架,是大数据平台的开发工具,但不是一个单一的工具,也不是一种单一的技术,而是一系列技术和工具的合集。用户在不需要了解分布式底层细节的情况下,能够开发分布式程序。Hadoop大数据平台,采用分布式架构,包含多个与大数据处理相关的组件:HDFS、MapReduce、Yarn、Hbase、Hive、Spark、Kafak、Storm、HDF、Ambari等,并根据用户的实际需求完成功能定制。Hadoop框架中原创 2020-12-09 23:39:09 · 4668 阅读 · 0 评论 -
Spark Streaming读取Kafka数据的两种方式
Spark Streaming与kafka集成有以下两种接收数据的方式:基于Receiver的方式 基于Direct的方式基于Receiver方式特点: 需要使用单独的Receiver线程来异步获取Kafka数据。 Receiver底层实现中使用了Kafka高级消费者API,因此,不需要自己管理Offset,只需指定Zookeeper和消费者组GroupID,系统便会自行管理。 执行过程: Spark Streaming启动时,会在Executor中同时启动Rece原创 2020-12-08 23:02:54 · 887 阅读 · 1 评论 -
Spark宽依赖与窄依赖
Spark中RDD的高效与DAG(有向无环图)有很大的关系,在DAG调度中需要对计算的过程划分Stage,划分的依据就是RDD之间的依赖关系。RDD之间的依赖关系分为两种,宽依赖(wide dependency/shuffle dependency)和窄依赖(narrow dependency)1.窄依赖窄依赖就是指父RDD的每个分区只被一个子RDD分区使用,子RDD分区通常只对应常数个父RDD分区,如下图所示【其中每个小方块代表一个RDD Partition】窄依赖有分为两种:一种是一原创 2020-12-01 00:30:16 · 1217 阅读 · 0 评论 -
reduceBykey与groupByKey性能比较
reduceByKey:reduceByKey会在结果发送至reducer之前会对每个mapper在本地进行merge,有点类似于在MapReduce中的combiner。这样做的好处在于,在map端进行一次reduce之后,数据量会大幅度减小,从而减小传输,保证reduce端能够更快的进行结果计算。groupByKey:groupByKey会对每一个RDD中的value值进行聚合形成一个序列(Iterator),此操作发生在reduce端,所以势必会将所有的数据通过网络进行传输,造成不必要的浪费。原创 2020-12-01 00:17:51 · 398 阅读 · 0 评论 -
如何在Python Spark Streaming中更新广播变量?
我需要使用Python在Spark Structured Streaming中随时间更新广播变量(例如,在定义的时间间隔内)。好多资料都是用Scala或Java。 用Python编写Broadcast Wrapper类 如下:import timefrom datetime import datetimefrom pyspark import SparkConf, SparkContextconf = SparkConf() \ .setMaster("local") \ ..原创 2020-10-14 01:53:14 · 449 阅读 · 0 评论 -
spark集群运算的模式
Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA即独立模式,自带完整的服务,可单原创 2020-11-30 23:27:27 · 540 阅读 · 0 评论