2017-11-11 189 views
0

优化在基于Yarn的群集上部署的Spark Jobs的最佳方式是什么? 。|性能调整和优化

寻找基于配置而非代码级别的更改。我的问题是经典设计级别的问题,应该使用什么方法来优化Spark Streaming或Spark SQL上开发的作业。

回答

0

有一个神话,BigData是神奇的,一旦部署到BigData集群,您的代码将像梦一样工作。

每个新手都有同样的信念:)也有一种误解认为,通过网络博客给出的配置对于每个问题都能正常工作。

没有深度优化您的集群的优化或调优Hadoop上的作业没有捷径。

但考虑到下面的方法,我敢肯定,你将能够在几个小时内优化你的工作。

我更喜欢运用纯粹的科学方法来优化作业。可以遵循以下步骤来开始优化作为基线的作业。

  1. 了解在群集配置的块大小。
  2. 检查容器/执行程序可用的最大内存限制。
  3. 在可用于集群的VCores下
  4. 在Spark流实时作业的情况下特别优化数据的速率。 (这是Spark-streaming中最棘手的公园)
  5. 考虑优化时的GC设置。
  6. 在代码级别上总是有优化的空间,这也需要考虑。
  7. 根据数据速率,按照步骤1,根据群集配置最佳地控制块大小。像在Spark中一样,可以计算batchinterval/blockinterval

    现在最重要的步骤来到这里。我分享的知识更专用于实时用例,如Spark流,使用Kafka的sql。

首先你需要知道的是,你需要知道什么样的数字或消息/记录你的工作最好。之后,您可以控制该特定数量的速率,并启动基于配置的实验来优化作业。就像我在下面所做的那样,能够解决高吞吐量的性能问题。

Performance Optimization Experiments

我从Spark Configurations看了一些参数和相同的工作,但有五个差异配置版本检查我的作业的影响比我作出了上述电网并开始实验。在三次实验中,我能够优化我的工作。上图中突出显示的绿色是我作业优化的魔术公式。

虽然相同的参数可能对类似的用例非常有帮助,但显然这些参数并不包含所有内容。最后但并非最不重要的是,我敢肯定,使用这种方法,你将能够在几个小时内优化你的工作。

+0

你好。我们社区中的许多人有时会说,每当他们看到有关软件工程师的性别假设时,他们就会担心人们会被排除在外。我想知道,你能否尽量避免在你的帖子中添加男性导向的问候和代词,以便创造一个更加温馨的环境?谢谢。 – halfer