LinkedIn开源分布式处理框架Samza迈入1.0版

在2013年由LinkedIn开源发布的分布式处理框架Samza,在2014年成为顶级Apache项目后,现在正式迈入1.0版。该公司表示,内部有超过3,000个在正式环境执行的应用程式,皆有使用Samza。而根据Apache基金会发布的数据,目前导入该开源项目的公司,包含eBay、Slack、TripAdvisor等,用于基础构架性能监控、即时分析、侦测异常系统行为等场景。

LinkedIn主管工程师Jagadish Venkatraman表示,Samza 1.0版的关键功能在于,提供更高层次的API、集成Apache Beam、Samza SQL,并且推出专用的Samza应用测试框架等。

LinkedIn表示,虽然稳定性是Samza的核心优势,但是工程团队开始意识到,该工具的API层次相对低,仅有提供基本的Callback-based API,开发者必须在底层API上进行复杂实例功能,同时,多组Samza任务得依赖Kafka链接,导致应用程序开发缓慢、易于出错。

因此,在此版本中,LinkedIn在Samza内置了更多高层次API,提供许多直接可用的运算符,像是map、filter、join、window等,让开发者可以组合这些运算符,表达复杂的数据串流分析流程。同时,这些高层次API也可集成相依性管理工具YARN使用,完成代码开发后,就可以在各类环境执行。

第二个重要特色是集成Apache Beam,提供Samza应用程序的可携带性。LinkedIn解释,由于Samza是使用Java、Scala语言开发,串流分析应用仍受限于采用JVM家族之语言。但是Beam项目的特色在于,提供一套统一API,让工作流程可以移植到不同之大数据引擎运行,如Samza、Spark、Flink,如此开发者就可用Python这款广泛受数据科学应用的语言,处理数据串流任务。因此,在Samza 1.0版,采用Beam API的应用程序,也可使用Samza执行,“集成Beam可携性及Samza引擎扩展性的优点。”

再者是推出Samza SQL指令,让开发者能使用声明式语法,开发即时串流应用程序。LinkedIn解释,使用声明式语法的好处在于,可以专注高层应用的开发,不需担心底层细节,如资源管理、程序可携性。

而在Samza应用程序后续的运维、测试工作也有进行改善。首先,在此版本中扩大Samza可以执行的环境,原先系统运维者必须先在基础构架环境中,创建独立YARN集群,提供Samza执行串流分析任务。但LinkedIn表示,随着Samza的采用率增加,也有社群用户反应,希望Samza可以支持更多样环境,如Kubernetes、Mesos,或者其他公有云环境。因此,在Samza 1.0版本中,该项目开始内置了Standalone部署模式,用户可以将Samza视为单一函数库,嵌入在应用程序内执行,同时也可自由选择要使用哪些资源管理工具。

再者是提高Samza应用程序的可测性。原先用户多半需要重启一个新Kafka本地集群,并且导入部分数据,检验最后产出结果是否正确,让整体工作时间拉长。现在LinkedIn则是出了原生的单元测试框架,提高开发者的工作效率。