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.总结

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

  • 相关阅读:
    机械大楼电梯控制项目软件 -- github团队组建
    C# webBrowser 开新窗口保持Session(转)
    Asterisk manager API(AMI)文档(中文版)
    记录两个不错的软件
    extjs4 各种怪异问题
    几款打印控件
    jquery.UI.tabs
    FineUI 基于 ExtJS 的专业 ASP.NET 控件库
    Ext之ExtGrid增删改查询回顾总结
    showModalDialog 刷新问题,在页面中跳转问题
  • 原文地址:https://www.cnblogs.com/runnerjack/p/12107473.html
Copyright © 2011-2022 走看看