原因主要有两点:
1、尽管在过去谷歌一直是闭源的,但在为云客户服务的过程中,谷歌已经认识到了开源软件的的巨大价值,比如基于谷歌三篇论文产生的Hadoop社区就是一个非常好的例子。思想上的转变使Apache Beam的诞生成为可能;
2、就Beam这个项目而言,要成功的必要条件之一是,必须有已经开源的Runner为Beam模型提供充分的支持,这样它才会在自建云和非谷歌云的场景下成为一个非常有竞争力的备选方案。去年Apache Flink在他们的系统内采用了Beam模型,这一条件也得到了满足;
无利不起早,谷歌这样做也是有着直接商业动机的,就是希望能有尽可能多的Apache Beam数据处理流水线可以运行在谷歌的Cloud Dataflow上,别忘了这是Apache Beam的原型。进一步说,采用开源的方式来引导这件事,也是有许多直接好处的:
1、支持Apache Beam的Runner越多,它作为一个平台的吸引力就越大;
2、使用Apache Beam的用户越多,想在谷歌云平台上运行Apache Beam的用户也就越多;
3、开发Apache Beam过程中吸引到的伙伴越多,那对这样的数据处理模型的推广就越有利;
而且,好处也不会全都归于谷歌,Apache Beam项目中的所有参与方都会受益。如果在构建数据处理流水线时存在着这样一个可移植的抽象层,那就会更容易出现新的Runner,它们可以专注于技术创新,提供更高的性能、更好的可靠性、更方便的运维管理等。换句话说,消除了对API的锁定,就解放了处理引擎,会导致更多产品之间的竞争,从而最终对整个行业起到良性的促进作用。
谷歌坚信Apache Beam就是数据批量处理和流式处理的未来。这么做会为各种不同的Runner营造一个健康的生态系统,让它们之间相互竞争,而最后可以让用户得到实在的好处。