LinkedIn开源高可用Hadoop工具集Gradle
许多大科技公司都是开源事业的参与者和引领者,比如Google、Netflix、非死book等公司,它们开源后的工具被广泛使用。现在,LinkedIn也加入了开源大家庭。LinkedIn的工程师创建了一个名为 Gradle 的项目,该项目包含了若干个可以在应用中简化连接多个Hadoop Job的工作流工具。
创建运行在Hadoop集群上的应用的难点众所周知,而Gradle则是一项十分有潜力的高效解决方案。适用于Apache Hadoop的LinkedIn Gradle插件(Hadoop插件)包含了同样适用于Apache Hadoop的 LinkedIn Gradle DSL(Hadoop DSL) 。几年前,LinkedIn公司就已采用Gradle作为其基础软件构建系统。Gradle使得Hadoop开发者能够更高效地完成应用程序的编译、测试和调配。Gradle还可以帮助开发者方便地使用多个Hadoop应用框架。不管在开发时使用了什么工具,Hadoop插件都可以让开发者在一致的体验下管理他们的项目。
在开发出Hadoop插件之前很久,LinkedIn的工程师们就意识到了编写个人的Hadoop Job仅仅是有效使用Hadoop挑战的一部分。LinkedIn上数据驱动的特征实际上是由几十个 Azkaban 或 Apache Oozie 管理的Hadoop Job工作流产生的。理解工作流中各个Job之间的关系并且管理工作流手册成为了一项难点。例如,为了指定LinkedIn上运行的一些处理大数据的工作流,需要用到非常多的Job文件,工程师为此写了几个内部开发的工具以便更简单地处理工作流。然而这些工具都是使用了Ant、Maven和Ruby混合编成,这就阻碍了全公司上下全面采用Gradle的进程。随着时间的推移,系统变得越来越脆弱,维护也变得越来越困难。为了解决以上问题,LinkedIn 开发了Hadoop DSL。
Hadoop DSL是一个基于特定领域的嵌入式 Groovy 语言,开发者可以在DSL中随意使用Groovy或Java。它有着自然语言的结构,适用于特定的Job和诸如Azkaban、Apache Oozie等Hadoop工作流管理器。另外,DSL是静态编译的,因此也可以进行静态检查。静态检查器可以在编译时检查出工作流文件中的常见问题,这样就避免了在运行Hadoop工作流几个小时后才报出错误。
Gradle和Hadoop DSL已经成为了LinkedIn开发Hadoop工作流的标准工具。源代码在 GitHub 上。