栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark常见面试问题整理

Spark常见面试问题整理

文章目录
  • 数据倾斜
  • Spark运行架构

数据倾斜
  1. 什么是数据倾斜
    在并行处理的大数据系统中,某个部分(Partition)的数据量严重大于其他部分,导致该部分的数据处理速度成为数据集处理的瓶颈。
  2. 为什么会数据倾斜
    同一Stage中不同task处理的数据量存在显著差异,某个task处理的数据量严重大于其他task。
  3. 怎样解决数据倾斜的问题
    ① 提高shuffle操作的并行度
    为了避免task较少导致多个key分配到同一task且分配不均的问题,可以适当提高task的数量(但是并不能解决某一个key数据量严重大于其他key的情况的问题)

② 两阶段聚合(为key增加随机前缀/后缀)
如果某个key的数据量过大,比如key为‘hello’的数据有很多,可以为其加上前缀,变为:0_hello,1_hello,2_hello…
然后分别分配到不同task上,进行局部聚合,最终再进行全局聚合,彻底解决key的数据量不均衡的问题。
③ 将reduce join转为map join

Spark运行架构
  1. Spark的组成部件包括:driver和executor (都是进程),负责资源的使用。
    驱动器节点(driver):
    执行main()方法的进程,构建sparkContext对象,负责把用户程序分为多个stage(串行),并把每个stage分解为多个任务task(并行),为各执行器分配任务和调度任务执行;
    驱动器一旦终止,Spark应用结束。
    执行器节点(executor):
    负责运行任务,将rdd缓存在执行器进程内,并把结果返回给驱动器进程
    执行器彼此相互独立,如果一个执行器节点崩溃,Spark应用可以继续执行。
  2. 主节点(master)和工作节点(worker)(是物理节点),负责资源的管理和分配。
    一台机器可以同时作为master和worker节点。
    主节点(master):
    负责管理worker节点,executor向master请求资源。
    工作节点(worker):
    负责管理executor进程。一个Worker默认情况下分配一个Executor,配置时根据需要也可以配置多个Executor。

    未完待续
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/304428.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号