BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

LinkedIn开源高可用Hadoop工具集Gradle

| 作者 张天雷 关注 4 他的粉丝 发布于 2015年8月29日. 估计阅读时间: 3 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

许多大科技公司都是开源事业的参与者和引领者,比如Google、Netflix、Facebook等公司,它们开源后的工具被广泛使用。现在,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上数据驱动的特征实际上是由几十个AzkabanApache 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上。


感谢魏星对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT