zoukankan      html  css  js  c++  java
  • SparkStreaming本地化策略性能调优与使用场景分析

    1.背景介绍:平台使用的华为FI C203的版本,通过SparkStreaming消费kafka数据后,进行算法处理入库。其中在算法部分耗时为4秒,每个批的数据量在30MB左右。执行算法部分的算子分区数据从50调大至150,发现算法部分时间开销仍然在4秒左右,并未提高。

    2.调优手段:

    spark.locality.wait

    spark.locality.wart.process

    spark.locality.wait.node

    spark.locality.wait.rack

    的默认3秒时间改为0秒。

    3.原因解释

    以上参数是调整会影响到数据本地化策略的。本地化策略有5种。

    1.PROCESS_LOCAL:进程本地化,性能最好(相对数据量较大时)。

    2.ODE_LOCAL:节点本地化。代码和数据在同一个节点中。

    3.NO_PREF:数据从哪里获取都一样,比如从数据库中获取数据。

    4.RACK_LOCAL:数据和task在一个机架的两个节点上,数据需要通过网络在节点之间进行传输。

    5.ANY:数据和task可能在集群中的任何地方,而且不在一个机架中,性能最差(相对数据量较大时)。

    将时间由3秒改为0秒时,spark来不及分析用哪种本地化策略,就已经被降级了(1->5,数字越大,级别越低),降级后的现象是数据shuffle到别的节点上进行算法处理,未降级的特点是算法随着数据走,数据并大部分集中在某一个或两个物理节点,由于cpu不够,反而降低算法处理的整体时间开销。然而sparkStreaming抓取的数据并不大,降级后数据跟随算法走,通过shuffle后,算法与数据分散到不同物理节点上,由于数据量少,网络传输快,cpu资源充足,反而效率更高。调整后算法的算子时间开销不到1秒。

    4.总结

    以上调优手段看使用场景使用,数据量小时时间调小;数据量大的,尽量让算法跟随数据走。

  • 相关阅读:
    webService客户端搭建(三)
    webService服务器端搭建(二)
    electron 编译 sqlite3避坑指南---尾部链接有已经编译成功的sqlite3
    解决网页中Waiting (TTFB)数据加载过慢的问题
    Node-sqlite3多字段插入数据问题
    win上使用nvm管理node版本
    centos系统设置局域网静态IP
    将win平台上的mysql数据复制到linux上报错Can't write; duplicate key in table
    win上配置nginx
    Nodejs解决所有跨域请求
  • 原文地址:https://www.cnblogs.com/runnerjack/p/12107473.html
Copyright © 2011-2022 走看看