理解您的Apache火花通过可视化应用程序
一幅画的最大价值是当它让我们发现我们从未想看到的。
——约翰•图基
在过去,Apache火花UI已经帮助用户调试自己的应用程序。在最新的火花1.4版本我们很高兴地宣布,数据可视化波发现火花UI。新的可视化添加在此版本中包括三个主要组件:
- 引发事件的时间轴视图
- 执行DAG
- 火花的可视化流媒体数据
这篇文章将会是第一个在一个由两部分组成的系列文章。这篇文章将介绍第一个两个组件并保存最后一个为未来在即将到来的一周。
引发事件的时间轴视图
引发事件以来一直面向用户的API的一部分早期版本的火花。在最新的版本中,火花UI显示这些事件在时间轴的相对顺序和交叉事件乍一看很明显。
时间轴视图可以在三个层次:在所有的工作,在一个工作,在一个阶段。着陆页,时间轴显示所有火花事件在应用程序在所有的工作。考虑下面的例子:
事件的序列是相当简单的。毕竟执行人注册不久,应用程序运行4并行工作,其中一个失败而其余成功了。然后,当所有工作已经完成了应用程序退出,执行人被删除。现在让我们点击其中一个工作。
这个工作运行字数在3文件和连接结束时的结果。从时间轴,很明显,3字数阶段并行运行时不相互依赖。然而,最后加入并依赖于前3个阶段的结果,所以相应的阶段(最后收集)开始,直到所有前阶段没有完成。进一步让我们看里面的一个阶段。
这个阶段有20个分区(并不是所有的显示)分散在4的机器。每个酒吧都代表一个阶段内的任务。从这个时间轴视图中,我们可以收集关于这个阶段的一些见解。首先,分区分布在机器相当好。第二,大部分的任务执行时间由原始计算而不是网络或I / O开销,这并不奇怪,因为我们拖着很少的数据。第三,并行性的水平可以增加如果我们分配执行人更多的核心;目前看来,每个执行者可以执行不超过两个任务。
我想借此机会展示引发的另一个特性使用这个时间表:动态分配。这个特性允许火花的数量规模执行人根据工作负载,动态集群资源共享更有效率。让我们看看在行动时间表。
首先要注意的是,应用程序获得执行人的工作提前,而不是保留它们。然后,第一份工作完成后不久,执行人用于工作的集合就变为空闲的,并返回到集群。这允许其他应用程序运行在同一集群使用我们的资源同时,从而增加集群利用率。只有当一个新工作在我们的火花应用获得了一批新的执行器来运行它。
视图的能力引发事件的时间表有助于识别应用程序中的瓶颈。调试应用程序的下一步是将某一特定任务或阶段映射到火花操作了。
执行DAG
第二个可视化除了火花的最新版本显示每个作业的执行DAG。在火花,与一系列相关工作抽样依赖组织直接无环图(DAG)看起来像下面的:
这个工作执行一个简单的单词计数。首先,它执行文本文件在HDFS操作读取一个输入文件,然后flatMap操作每一行分割成的话,那么地图(单词,1)对操作形式,最后一个reduceByKey操作每个单词的数量。
可视化的蓝色阴影框指火花操作用户调用在他/她的代码。这些盒子的点代表抽样中创建相应的操作。本身是分组的操作阶段中运行。
有一些从这个可视化观察,可以获得。首先,它揭示了火花优化流水线操作不被打乱。特别是,从HDFS阅读从一个输入分区后,直接适用于随后的每一个执行者flatMap和地图功能分区在相同的任务,从而消除引发另一个阶段的需要。
第二,一个抽样缓存在第一阶段(用绿色突出显示)。自封闭操作涉及阅读从HDFS,缓存这个抽样意味着未来计算抽样可以访问至少一个子集的原始文件从内存中而不是从HDFS。
DAG可视化的价值是最为明显的复杂的工作。作为一个例子,在MLlib交替最小二乘(ALS)实现计算近似两个因子的乘积矩阵迭代。这涉及到一系列的地图,加入,groupByKey操作。
值得注意的是,在正确的地方在肌萎缩性侧索硬化症,缓存的性能是至关重要的,因为算法重用以前在每个迭代计算结果。DAG可视化,用户和开发人员现在可以确定某些抽样是否正确缓存一眼,如果不是,很快理解为什么一个实现是缓慢的。
与时间轴视图一样,DAG可视化允许用户点击一个舞台,扩大细节在舞台上。下面描述了一个阶段的DAG可视化肌萎缩性侧索硬化症。
在舞台上看来,所有属于这个阶段抽样的细节自动扩展。用户现在可以快速找到特定抽样的信息,而不必诉诸猜测并检查通过悬停在单个点的工作页面。
最后,我想强调DAG之间的初步集成可视化和火花SQL。因为火花SQL用户更高层次的身体更加熟悉运营商比低水平火花原语,前者应该显示。结果是类似于SQL查询计划映射到底层执行DAG。
集成火花流也引发1.4中实现,但将会展示在一个单独的文章。
在不久的将来,火花UI将更加意识到更高层次的语义库来提供更多的相关细节。火花SQL将自己的标签类似于现有火花流。在火花核心,额外的信息,如数量的分区,叫网站,和缓存的百分比将显示在DAG当用户将鼠标悬停于一个抽样。
总结
最新的火花1.4.0发布介绍几个主要的可视化UI增加火花。这种努力来源于项目的识别,以一种直观的方式呈现应用程序的详细信息是公开的信息一样重要。未来版本将继续这一趋势引发的用户界面的用户更容易引发核心和更高级别的图书馆建在上面。
请继续关注本系列的第二部分关于UI改进火花流!
承认
水果的特征展示了在这篇文章中引发的几个贡献者社区的劳动。特别是,@sarutak的日本电报电话公司的数据是时间轴视图的主要作者的特性。