Spark中很多组件之间是靠事件消息实现通信的,之前分析了一下Spark中RPC机制,RPC和事件消息机制目的都是实现组件之间的通信,前者解决远程通信问题,而后者则是在本地较为高效的方式。Spark中大量采用事件监听这种方式,实现driver端的组件之间的通信。本文就来解释一下Spark中事件监听是如何实现的。本文代码全部出自于Spark-2.0.0。
Docker Remote API
因为项目问题,需要编程远程操作和管理容器,有幸Docker提供了Restful API,又幸亏有神奇的网友写出了不同语言绑定的API Client,不用自己去写一套。这篇文章记录如何使用Java编程来操作远程Docker容器。
Spark RPC解读
Spark-1.6以后RPC默认使用Netty替代Akka,在Netty上加了一层封装,为实现对Spark的定制开发,必须对RPC实现方式有比较清晰的了解,本文解读Spark RPC实现。本文代码全部出自于Spark-2.0.0。
Spark on YARN配置日志Web UI
Spark部署在YARN之后,从Standalone模式下的Spark Web UI直接无法看到执行过的application日志,不利于性能分析。本文记录如何配置history UI。
Scala中下划线_用法小结
Scala函数式编程确实可以有效提高编程效率,和其祖先Java类似,Scala也有一堆通配符,而且更复杂、高级,本文对目前自己常见的下划线_的用法进行一个小结,备查。
Spark架构之shuffle
Spark内存管理
从1.6.0开始,Spark内存管理模式就变了,旧的内存管理模式通过一个StaticMemoryManager类实现,现在被称作legacy。legacy模式默认是关闭的,这就意味着相同的代码在1.5.x版本和1.6.0版本中执行会有不同,应该当心这点。出于兼容性考虑,你可以通过spark.memory.useLegacyMode参数来开启legacy模式,默认情况下是关闭的。
Spark Job调优(Part 2)
这篇文章将会完成Part 1中留下的部分,我会尽力介绍更多的你关心的能加速Spark程序的东西。特别是你将会学习资源调优或者配置Spark来充分利用集群提供的所有资源。然后我们会转向并行度调优