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则是出了原生的单元测试框架,提高开发者的工作效率。
