- 博客(9)
- 收藏
- 关注
原创 如何合理的设置Executor资源参数
Spark的资源参数,基本都可以在 spark-submit 命令中作为参数设置如何合理的设置number-executor,executor-memory,executor-cores?问题假设--处理500G数据文件(未压缩)服务器配置:100节点 16core 48g要求:普通的统计运算(不是迭代计算/机器学习),不能简单的wordcount那应该怎样合理的分配资源?若是没有参数配置,则会默认 每个应用程序会有最大 max_core (配置文件配置)重点是executor数
2021-04-11 17:27:32
729
原创 Spark数据倾斜
数据倾斜Task之间数据分配的非常不均匀即为数据倾斜数据倾斜的影响个别任务耗时远高于其它任务,轻则造成系统资源的浪费,使整体应用耗时过大,不能充分发挥分布式系统并行计算的优势 个别Task发生OOM,导致整体作业运行失败数据倾斜原因数据异常Map Task数据倾斜,主要是数据源导致的数据倾斜数据文件压缩格式(压缩格式不可切分) Kafka数据分区不均匀Reduce task数据倾斜(重灾区,最常见):Shuffle (外因)。Shuffle操作涉及到大量的磁盘、网络IO,
2021-04-08 19:17:46
671
原创 Spark的Yarn模式运行机制
Yarn模式运行机制Yarn Cluster模式--用于生产cluster模式提交任务流程图 Client先向RM(ResourceManager)提交请求,并上传jar到HDFS上 RM在集群中选择一个NM,在其上启动AppMaster,在AppMaster中实例化SparkContext(Driver) AppMaster向RM注册应用程序,注册的目的是申请资源。RM监控App的运行状态直到结束 AppMaster申请到资源后,与NM通信,在Container中启动Executor进程
2021-04-08 19:14:01
281
原创 Spark SQL
SparkSQL特点写更少的代码 读更少的数据 提供更好的性能(字节码生成技术、SQL优化)SparkSQL数据抽象 DataSet会逐步取代 RDD 和 DataFrame 成为唯一的API接口 DataFrame 前身是SchemaRDD。Spark1.3更名为DataFrame。不继承RDD,自己实现了RDD的大部分功能 与RDD类似,DataFrame也是一个分布式数据集: DataFrame可以看做分布式 Row 对象的集合,提供了由列组成的详细模
2021-04-08 19:11:07
207
原创 SparkContext启动流程解析
Spark Context内部组件SparkContext 是 Spark 程序主要功能的入口点,链接Spark集群,创建RDD、累加器和广播变量,一个线程只能运行一个SparkContext。SparkContext在应用程序中将外部数据转换成RDD,建立了第一个RDD,也就是说SparkContext建立了RDD血缘关系的根,是DAG的根源。SparkContext 内部组件:SparkConf:Spark Application 的配置,用来设置 Spark 的 KV 格式的参数...
2021-04-08 19:04:26
355
原创 Spark Streaming
SparkStreaming简介 用于流式数据的处理 Spark Streaming具有有高吞吐量和容错能力强等特点 支持多数据源输入,eg:Kafka,Flume,Twitter和TCP套接字等 数据输入之后可以使用高阶API 处理结果可保存到多存储介质中 SparkStreaming能与MLlib以及Graphx融合 Spark Streaming使用离散化流(Discretized Stream)作为抽象表示,称为DStream。
2021-04-08 18:57:48
437
1
原创 Spark Shuffle原理
Shuffle详解以Shuffle为边界,Spark将一个Job划分为不同的Stage。Spark的Shuffle分为Write和Read两个阶段,分属于两个不同的Stage,前者是Parent Stage的最后一步,后者是Child Stage的第一步Spark 的 Stage 分为两种ResultStage。负责返回计算结果 ShuffleMapStage。其他的均为ShuffleMapStage如果按照 map 端和 reduce 端来分析的话:ShuffleMapStage可以即
2021-04-08 18:48:23
152
原创 Spark RDD 简述
Spark RDDRDD简介RDD包含5个特征:1. 一个分区的列表 2. 一个计算函数compute,对每个分区进行计算 3. 对其他RDDs的依赖(宽依赖、窄依赖)列表 4. 对key-value RDDs来说,存在一个分区器(Partitioner)【可选的】 5. 对每个分区有一个优先位置的列表【可选的】RDD特点 分区 RDD逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个 compute 函数得到每个分区的数据 只读 RDD是只读的,
2021-04-08 18:23:31
376
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人