NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

LinkedIn 开源高可用 Hadoop 工具集 Gradle

  • 2015-08-28
  • 本文字数:1011 字

    阅读完需:约 3 分钟

许多大科技公司都是开源事业的参与者和引领者,比如 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 上数据驱动的特征实际上是由几十个 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 上。


感谢魏星对本文的审校。

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

2015-08-28 19:003947
用户头像

发布了 268 篇内容, 共 118.2 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

怎么向女朋友解释什么叫区块链?

艾小仙

比特币 区块链 以太坊 defi

ARTS打卡 第15周

引花眠

微服务 ARTS 打卡计划

LeetCode题解:239. 滑动窗口最大值,单调队列,JavaScript,详细注释

Lee Chen

大前端 LeetCode

握草,你竟然在代码里下毒!

小傅哥

Java 程序员 小傅哥 bug 有毒代码

给DevOps加点料——融入安全性的DevSecOps

禅道项目管理

DevOps 运维 测试 开发 安全性

云原生 go-zero 微服务框架

万俊峰Kevin

微服务 microservice go-zero Go 语言

ARTS Week15

时之虫

ARTS 打卡计划

一点思考|工作十几年了,竟从未用过do-while!

王磊

Java

用函数式写法精简Java代码的一个例子

Sean

Java 函数式编程

学习 Java,有什么书籍推荐?学习的方法和过程是怎样的?

沉默王二

Java 学习 程序员 书单

商业通识 : 商业为什么能进步?

Walker

学习 得到 个人成长 商业

阿里巴巴发布国内首个公益区块链标准 用技术让公益公开透明

CECBC

区块链 公益

程序的机器级表示-数组的分配和访问

引花眠

计算机基础

Spring 5 中文解析测试篇-Spring测试

青年IT男

Spring5 JUnit

有奖征文重磅来袭,来!一起玩把大的!

有只小耳朵

3. 站在使用层面,Bean Validation这些标准接口你需要烂熟于胸

YourBatman

Hibernate-Validator Bean Validation 数据校验

透彻理解AQS源码分析系列之AQS基础二

InfoQ_d2212957090d

架构师训练营第十三周总结

张明森

oeasy教您玩转linux010206 蒸汽机车 sl

o

Golang Package sync 透析

卓丁

sync Go 语言

读后感之《任正非:以客户为中心》

王新涵

深入理解JVM垃圾回收机制 - GC Roots枚举

SkyeDance

GC Roots枚举 安全点 安全区域 OopMap

从湖南“软硬兼施”,管窥三湘水畔的智能浪潮

脑极体

如何将VSCode变成绿色版本

lmymirror

vscode 教程

拥抱K8S系列-05-基于docker部署面临的问题

张无忌

Docker 运维

给大家介绍下,这是我的流程图软件 —— draw.io

程序员小航

工具 流程图 draw.io drawio-desktop 画图软件

翻转链表,机器学习视觉训练,对数据的人工标注,使信息丢失,John 易筋 ARTS 打卡 Week 16

John(易筋)

大数据 学习 ARTS 打卡计划 翻转链表 Google论文评判人工预处理

2020-09-03-第十三周学习总结

路易斯李李李

甲方日常 8

句子

工作 随笔杂谈 日常

Go: gops如何与Go运行时交互?

陈思敏捷

gops Go 语言

不支持原子性的 Redis 事务也叫事务吗?

大头星

Java redis 事务

LinkedIn开源高可用Hadoop工具集Gradle_Java_张天雷_InfoQ精选文章