Spark
mischen520
JAVA高级架构师
展开
-
简述Spark中共享变量(广播变量和累加器)的基本原理与用途
累加器(accumulator)是Spark中提供的一种分布式的变量机制,其原理类似于mapreduce,即分布式的改变,然后聚合这些改变。累加器的一个常见用途是在调试时对作业执行过程中的事件进行计数。而广播变量用来高效分发较大的对象。共享变量出现的原因:通常在向Spark 传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不会影响驱动器中的对应变量。Spark.原创 2021-07-13 20:55:04 · 963 阅读 · 3 评论 -
简述Spark中的缓存机制(cache和persist)与checkpoint机制,并指出两者的区别与联系
都是做RDD持久化的cache:内存,不会截断血缘关系,使用计算过程中的数据缓存。checkpoint:磁盘,截断血缘关系,在ck之前必须没有任何任务提交才会生效,ck过程会额外提交一次任务。原创 2021-07-13 08:18:41 · 819 阅读 · 0 评论 -
Spark常用算子reduceByKey与groupByKey的区别,哪一种更具优势?
reduceByKey:按照key进行聚合,在shuffle之前有combine(预聚合)操作,返回结果是RDD[k,v]。groupByKey:按照key进行分组,直接进行shuffle。开发指导:reduceByKey比groupByKey,建议使用。但是需要注意是否会影响业务逻辑。...原创 2021-07-13 08:09:59 · 349 阅读 · 0 评论 -
列举Spark的transformation算子(不少于8个),并简述功能(重点)
1)map(func):返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成.2)mapPartitions(func):类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假设有N个元素,有M个分区,那么map的函数的将被调用N次,而mapPartitions被调用M次,一个函数一次处理所有分区。3)reduceByKey(func,[numTask]):在一个(K,V原创 2021-07-13 08:06:55 · 644 阅读 · 0 评论 -
Spark有几种部署方式?请分别简要论述
1)Local:运行在一台机器上,通常是练手或者测试环境。2)Standalone:构建一个基于Mster+Slaves的资源调度集群,Spark任务提交给Master运行。是Spark自身的一个调度系统。3)Yarn: Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。4)Mesos:国内大环境比较少用。...原创 2021-07-13 08:02:11 · 689 阅读 · 0 评论 -
reduceByKey、foldByKey、aggregateByKey、combineByKey区别
ReduceByKey 没有初始值 分区内和分区间逻辑相同foldByKey 有初始值 分区内和分区间逻辑相同aggregateByKey 有初始值 分区内和分区间逻辑可以不同combineByKey 初始值可以变化结构 分区内和分区间逻辑不同...原创 2021-07-07 08:06:50 · 718 阅读 · 0 评论 -
Repartition和Coalesce的区别
1)关系:两者都是用来改变RDD的partition数量的,repartition底层调用的就是coalesce方法:coalesce(numPartitions, shuffle = true)2)区别:repartition一定会发生shuffle,coalesce根据传入的参数来判断是否发生shuffle一般情况下增大rdd的partition数量使用repartition,减少partition数量时使用coalesce...原创 2021-07-07 08:03:38 · 870 阅读 · 0 评论 -
map和mapPartitions区别
1)map:每次处理一条数据2)mapPartitions:每次处理一个分区数据原创 2021-07-07 08:02:25 · 382 阅读 · 0 评论 -
Spark提交作业参数以及注意事项(高频面试题)
1)在提交任务时的几个重要参数executor-cores —— 每个executor使用的内核数,默认为1,官方建议2-5个num-executors —— 启动executors的数量,默认为2executor-memory —— executor内存大小,默认1Gdriver-cores —— driver使用内核数,默认为1driver-memory —— driver内存大小,默认512M2)边给一个提交任务的样式spark-submit \--master l..原创 2021-07-07 07:59:34 · 1605 阅读 · 0 评论 -
Spark常用端口号
1)4040 spark-shell任务端口2)7077 内部通讯端口。 类比Hadoop的8020/90003)8080 查看任务执行情况端口。 类比Hadoop的80884)18080 历史服务器。类比Hadoop的19888注意:由于Spark只负责计算,所有并没有Hadoop中存储数据的端口50070...原创 2021-07-07 07:45:15 · 308 阅读 · 0 评论 -
Spark调优:调节Executor堆外内存
Executor的堆外内存主要用于程序的共享库、Perm Space、 线程Stack和一些Memory mapping等, 或者类C方式allocate object。有时,如果你的Spark作业处理的数据量非常大,达到几亿的数据量,此时运行Spark作业会时不时地报错,例如shuffleoutput file cannot find,executorlost,task lost,out of memory等,这可能是Executor的堆外内存不太够用,导致Executor在运行的过程中内存溢出。..原创 2021-06-12 07:49:29 · 525 阅读 · 0 评论 -
Spark调优:降低cache操作的内存占比
1. 静态内存管理机制根据Spark静态内存管理机制,堆内存被划分为了两块,Storage和Execution。Storage主要用于缓存RDD数据和broadcast数据,Execution主要用于缓存在shuffle过程中产生的中间数据,Storage占系统内存的60%,Execution占系统内存的20%,并且两者完全独立。在一般情况下,Storage的内存都提供给了cache操作,但是如果在某些情况下cache操作内存不是很紧张,而task的算子中创建的对象很多,Execution内存又相对原创 2021-06-12 07:38:34 · 511 阅读 · 0 评论 -
RDD默认分区源码(RDD数据从文件中读取后创建)
1)分区测试object partition03_file_default { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkCoreTest") val sc: SparkContext = new SparkContext(conf) //1)默认分区原创 2021-06-08 06:58:58 · 129 阅读 · 0 评论 -
RDD分区源码解析(RDD数据从集合中创建)
1)分区测试(RDD数据从集合中创建)object partition02_Array { def main(args: Array[String]): Unit = { val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkCoreTest") val sc: SparkContext = new SparkContext(conf) //原创 2021-06-08 06:54:44 · 175 阅读 · 0 评论 -
RDD默认分区源码解析(RDD数据从集合中创建)
2.2.1 默认分区源码(RDD数据从集合中创建)1)默认分区数源码解读上述查看源码的操作是在idea中进行的,要学会使用ctrl+h查看源码2)创建一个包名:com.atguigu.partition3)代码验证package com.mischen.partitionimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object partition01_Arr原创 2021-06-08 06:43:04 · 171 阅读 · 0 评论 -
Spark WordCount编程示例
Spark Shell仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在IDEA中编制程序,然后打成Jar包,然后提交到集群,最常用的是创建一个Maven项目,利用Maven来管理Jar包的依赖。3.1编写程序1)创建一个Maven项目WordCount2)在项目WordCount上点击右键,AddFramework Support=》勾选scala3)在main下创建scala文件夹,并右键MarkDirectory as Sources Root=>在scala下创...原创 2021-06-06 14:11:38 · 329 阅读 · 1 评论 -
Spark配置历史服务器
由于spark-shell停止掉后,hadoop102:4040页面就看不到历史任务的运行情况,所以开发时都配置历史服务器记录任务运行情况。1)修改spark-default.conf.template名称[mischen@hadoop102 conf]$ mv spark-defaults.conf.template spark-defaults.conf2)修改spark-default.conf文件,配置日志存储路径(写)[atguigu@hadoop102 conf]$ vimsp.原创 2021-06-05 14:54:55 · 1502 阅读 · 0 评论 -
什么是RDD?以及他的工作流程
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。原创 2021-06-05 09:44:29 · 467 阅读 · 0 评论 -
Spark常用端口号
1)Spark查看当前Spark-shell运行任务情况端口号:40402)Spark Master内部通信服务端口号:7077 (类比于Hadoop的8020(9000)端口)3)Spark Standalone模式Master Web端口号:8080(类比于Hadoop YARN任务运行情况查看端口号:8088)4)Spark历史服务器端口号:18080 (类比于Hadoop历史服务器端口号:19888)...原创 2021-06-05 08:03:30 · 3813 阅读 · 0 评论 -
Spark yarn模式的运行流程
Spark有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到app的输出。yarn-cluster:Driver程序运行在由ResourceManager启动的APPMaster,适用于生产环境。1)客户端模式(默认)[atguigu@hadoop102 spark-yarn]$ bin/spark-submit \--class org.apache.原创 2021-06-05 07:59:17 · 309 阅读 · 0 评论 -
Spark的集群角色
Master和Worker集群资源管理原创 2021-06-05 07:52:46 · 305 阅读 · 0 评论 -
Spark Yarn模式的安装与使用
2.5 Yarn模式(重点)Spark客户端直接连接Yarn,不需要额外构建Spark集群。2.5.1 安装使用0)停止Standalone模式下的spark集群[atguigu@hadoop102 spark-standalone]$ sbin/stop-all.sh[atguigu@hadoop102 spark-standalone]$ zk.sh stop[atguigu@hadoop103spark-standalone]$ sbin/stop-master.sh1).原创 2021-06-04 06:12:56 · 817 阅读 · 0 评论 -
Spark的特点
原创 2021-05-30 09:53:04 · 83 阅读 · 0 评论 -
Spark内置模块简介
Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误恢复、与存储系统交互等模块。Spark Core中还包含了对弹性分布式数据集(Resilient Distributed DataSet,简称RDD)的API定义。Spark SQL:是Spark用来操作结构化数据的程序包。通过Spark SQL,我们可以使用 SQL或者Apache Hive版本的HQL来查询数据。Spark SQL支持多种数据源,比如Hive表、Parquet以及JSON等。Spark Stream..原创 2021-05-30 09:51:23 · 500 阅读 · 0 评论 -
什么是Spark?
1.1 什么是Spark回顾:Hadoop主要解决,海量数据的存储和海量数据的分析计算。Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。1.2 Hadoop与Spark历史原创 2021-05-30 09:45:11 · 174 阅读 · 0 评论