我们知道,现在最主流的大数据技术几乎都是开源的产品,不管是 Hadoop 这样的大数据存储与计算产品,还是 Hive、Spark SQL 这样的大数据仓库,又或者 Storm、Flink 这样的大数据流计算产品,还有 Mahout、MLlib 这样的大数据机器学习算法库,它们都来自开源社区。所以,我们在使用大数据、学习大数据的过程中肯定少不了要和开源社区打交道。
我在 Intel 工作期间主要工作就是参与 Apache 开源社区的大数据项目开发,其实上一期我讲的 Panthera 最初也是准备为 Hive 项目增强标准 SQL 处理能力而开发,但是因为和 Apache Hive 项目管理方在开发理念上的冲突,最终选择独立开源。后来我又参与了 Apache Spark 的开发,为 Spark 源代码提交了一些性能优化的 Patch。我想通过专栏两期的内容,具体介绍一下如何参与 Apache 这样开源社区的软件开发,如何进行软件性能优化,以及我在 Apache Spark 源码上做的一些优化实践。
一方面我希望你能借此更深入、系统地了解软件性能优化;另一方面也可以更深入了解 Spark 的一些运行机制,同时也可以了解 Apache 开源社区的运作模式。因为我们在使用各类大数据产品的时候,一定会遇到各种问题,想要解决这些问题,你可以直接到官方的开源社区去求助并寻找答案。在使用过程中,如果这些大数据产品不能满足你的需求,你可以阅读源代码并直接对源代码进行修改和优化。因为你在实践过程中产生的需求可能其他人也会有,你可以将你修改的源代码提交到开源社区,请求合并到发布版本上,供全世界开发者使用。这也是开源最大的魅力。