自学内容网 自学内容网

SparkCore中的常见问题

1、rdd五大特性

特性一:每个RDD都由一系列的分区构成

特性二:RDD的转换操作本质上是对RDD所有分区的并行转换

特性三:每个RDD都会保存与其他RDD之间的依赖关系:血链机制或者血脉机制

特性四:可选的,如果是二元组【KV】类型的RDD,在Shuffle过程中可以自定义分区器。

特性五:可选的,Spark程序运行时,Task的分配可以指定实现本地优先计算:最优计算位置.

2、spark启动yarn需要启动哪些服务

# 启动yarn
start-yarn.sh
# 启动MR的JobHistoryServer:19888
mapred --daemon start historyserver
# 启动Spark的HistoryServer:18080
/opt/installs/spark/sbin/start-history-server.sh

3、spark中哪些是shuffle算子,哪些是触发算子,哪些是转换算子

count foreach saveAsTextFile first take 
  collect  reduce top takeOrdered 
  collectAsMap foreachParition   max min mean sum  checkpoint
map flatMap filter union distinct groupByKey sortByKey sortBy reduceByKey 
 repartition coalesce keys values mapValues
 join fullOuterJoin leftOuterJoin rightOuterJoin
 mapPartitions  cache persist
 groupByKey sortByKey sortBy reduceByKey repartition
   coalesce(根据情况)  join( fullOuterJoin / leftOuterJoin / rightOuterJoin)

4、创建rdd的两种方式

方式一:并行化一个已存在的集合

方式二:读取外部共享存储系统

5、宽依赖算子

窄依赖:Narrow Dependencies

定义:父RDD的一个分区的数据只给了子RDD的一个分区 【不用经过Shuffle

特点:一对一或者多对一不经过Shuffle,性能相对较快, 但无法实现全局分区、排序、分组等

一个Stage内部的计算都是窄依赖的过程,全部在内存中 完成。

宽依赖:Wide/Shuffle Dependencies

定义:父RDD的一个分区的数据给了子RDD的多个分区【需要调用Shuffle的分区器来实现】

特点:一对多,必须经过Shuffle,性能相对较慢,可以实现全 局分区、排序、分组等

Spark的job中按照宽依赖来划分Stage

本质:只是一种标记,标记两个RDD之间的依赖关系

3、为什么要标记宽窄关系?

1)提高数据容错的性能,避免分区数据丢失时,需要重新构建整个RDD

2)提高数据转换的性能,将连续窄依赖操作使用同一个Task都放在内存中直接转换

6、容错机制

persist持久化机制

checkpoint检查点机制

7、spark的shuffle过程

1)Hash Based Shuffle

特点:没有排序,只分区,每个Task按照ReduceTask个数生成多个文件

2) Hash Based Shuffle 【优化后的,File Consolidation机制】

3) Sort Based Shuffle [目前最新的]

Shuffle Write:类似于MR中的Map端Shuffle,但是Spark的 Shuffle Write有3种,会根据情况自动判断选择哪种Shuffle Write

第一种:SortShuffleWriter

第二种:BypassMergeSortShuffleWriter

第三种:UnsafeShuffleWriter

Shuffle Read:类似于MR中的Reduce端Shuffle,但是 Spark的Shuffle Read功能由算子来决定,不同算子经过的过程不一样的。


原文地址:https://blog.csdn.net/weixin_64860388/article/details/143524807

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!