美文网首页
Spark性能调优-数据本地化调优

Spark性能调优-数据本地化调优

作者: 数据萌新 | 来源:发表于2018-11-05 17:21 被阅读0次

    1. task数据本地化级别

    (1) PROCESS_LOCAL:进程本地化

    (2) NODE_LOCAL:节点本地化

    (3) NO_PREF:没有本地化级别

    (4) RACK_LOCAL:机架本地化

    (5) ANY:跨机架取数据

    2. TaskScheduler发送task选择本地化级别的策略

    比如计算需要的数据在node01这台服务器中的Executor1这个进程中,那么TaskScheduler会把TaskSet发往Executor1进程中执行,此时的数据本地化级别时PROCESS_LOCAL,Executor1是最佳的计算位置,如果发送的task在等待了3秒,重试了5次之后仍然没有执行,那么TaskScheduler就认为Executor1的资源不充足,不足以支撑计算,那么降低数据本地化级别,把task发往node01的另外一个进程Executor2中,这时的数据本地化级别为NODE_LOCAL,如果还无法执行,降低为RACK_LOCAL,ANY,直到Task可以开始计算

    3. 查看某任务的数据本地化级别的方法

    (1) 在Spark Web UI中查看

    (2) 查看Spark作业的执行日志

    4. 修改task数据本地化级别的方法

    增加等待时间,默认3s,可以成倍数提高,按照6s,12s,24s…这样的方式来修改,这样可以快速找到最佳值,配置参数:

    # 可以调整全部级别的task执行等待时间,也可以分别调整
    spark.locality.wait         default(3s)
    spark.locality.wait.process default(3s)
    spark.locality.wait.node    default(3s)
    spark.locality.wait.rack    default(3s)
    

    在默认情况下,最初的数据本地化级别为PROCESS_LOCAL,如果等待了3s,重试5次后还没有开始执行task,那么会降低级别,再尝试开始执行task,比如,我们就想让task的数据本地化级别为PROCESS_LOCAL,那么把spark.locality.wait.process修改为一个很大的值,那么这个task会一直等待,直到本机的executor中已经加载过来了需要的数据,当然,我们不会这么做。

    相关文章

      网友评论

          本文标题:Spark性能调优-数据本地化调优

          本文链接:https://www.haomeiwen.com/subject/wxasxqtx.html