优化部署在基于纱线的群集上的Spark Jobs的最佳方法是什么?
根据配置而非代码级别查找更改。我的问题是经典的设计级问题,应该使用什么方法来优化在Spark Streaming或Spark SQL上开发的作业。
答案 0 :(得分:0)
有一种说法是BigData很神奇,一旦部署到BigData集群,你的代码将像梦一样工作。
每个新手都有相同的信念:)还有一种误解,即通过网络博客提供的配置可以很好地解决每个问题。
在没有深入了解群集的情况下,优化或调优Hadoop上的作业没有捷径。
但考虑到以下方法,我确信您将能够在几个小时内优化您的工作。
我更喜欢运用纯粹的科学方法来优化乔布斯。可以按照以下步骤专门开始优化作为基线的作业。
现在最重要的步骤来到这里。我正在分享的知识更具体到实时用例,如Spark流,SQL和Kafka。
首先,您需要知道您的工作在哪些数字或消息/记录中效果最佳。之后,您可以控制特定数量的速率并启动基于配置的实验以优化作业。就像我在下面所做的那样,能够以高吞吐量解决性能问题。
我已经阅读了Spark Configurations中的一些参数,并检查了对我的工作的影响,而不是我上面的网格,并以相同的工作开始实验,但有五个不同的配置版本。在三个实验中,我能够优化我的工作。上图中突出显示的绿色是我的工作优化的神奇公式。
尽管相同的参数可能对类似的用例非常有用,但显然这些参数并不涵盖所有内容。
答案 1 :(得分:0)
假设应用程序正常工作,即内存配置已得到处理,我们至少有一次成功运行应用程序。我通常会寻找遗嘱执行者的未充分利用并尽量减少它。以下是值得一提的寻找提高集群/执行者利用率的机会的常见问题:
无耻插件(作者)Sparklens https://github.com/qubole/sparklens可以自动为您解答这些问题。
有些事情并非特定于应用程序本身。假如您的应用程序必须随机播放大量数据,请选择具有更好磁盘和网络的计算机。对数据进行分区以避免完整数据扫描。使用像镶木地板或ORC这样的列式格式,以避免为您不需要的列提取数据。列表很长,有些问题已知,但还没有很好的解决方案。