zoukankan      html  css  js  c++  java
  • Spark的数据本地化级别及调优操作

    1. 数据本地化的级别:

    ①     PROCESS_LOCAL

    task要计算的数据在本进程(Executor)的内存中。

     

    ②     NODE_LOCAL

    a)         task所计算的数据在本节点所在的磁盘上。

    b)        task所计算的数据在本节点其他Executor进程的内存中。

     

    ③     NO_PREF

    task所计算的数据在关系型数据库中,如mysql。

     

    ④     RACK_LOCAL

    task所计算的数据在同机架的不同节点的磁盘或者Executor进程的内存中

     

    ⑤     ANY

    跨机架。

    2. Spark数据本地化调优:

     

    Spark中任务调度时,TaskScheduler在分发之前需要依据数据的位置来分发,最好将task分发到数据所在的节点上,如果TaskScheduler分发的task在默认3s依然无法执行的话,TaskScheduler会重新发送这个task到相同的Executor中去执行,会重试5次,如果依然无法执行,那么TaskScheduler会降低一级数据本地化的级别再次发送task。

    如上图中,会先尝试1,PROCESS_LOCAL数据本地化级别,如果重试5次每次等待3s,会默认这个Executor计算资源满了,那么会降低一级数据本地化级别到2,NODE_LOCAL,如果还是重试5次每次等待3s还是失败,那么还是会降低一级数据本地化级别到3,RACK_LOCAL。这样数据就会有网络传输,降低了执行效率。

    ①     如何提高数据本地化的级别?

    可以增加每次发送task的等待时间(默认都是3s),将3s倍数调大,      结合WEBUI来调节:

       • spark.locality.wait 

       • spark.locality.wait.process

       • spark.locality.wait.node

       • spark.locality.wait.rack

    注意:等待时间不能调大很大,调整数据本地化的级别不要本末倒置,虽然每一个task的本地化级别是最高了,但整个Application的执行时间反而加长。

    ②     如何查看数据本地化的级别?

    通过日志或者WEBUI

  • 相关阅读:
    Caliburn Micro 框架 WP8使用研究(二)页面导航
    Windows Phone 8 Fast Resume 快速恢复浅析(二)
    Caliburn Micro 框架 WP8使用研究(一)简介
    当BI迈入云端,分析云为我们带来了什么?
    解读SQL Server 2012中的最新BI功能
    一个典型的BI系统介绍
    SQL Server数据库服务器的负载均衡集群实现方法
    Web数据挖掘在电子商务中的应用
    2012商业智能发展趋势预测
    一个商业智能培训经理眼中的商业智能
  • 原文地址:https://www.cnblogs.com/eric666666/p/11301266.html
Copyright © 2011-2022 走看看