大数据处理框架SDC的拓展及应用

2019-08-06 04:25吴广建于梦洁
计算机时代 2019年7期
关键词:管道

吴广建 于梦洁

摘  要: SDC(Streamsets Data Collector)是一款可拖拽式的大数据ETL工具,可以不用写代码就能实现大量数据的处理,但要实现任务定时管理和多数据源等复杂功能则需要利用其公司的非开源产品。文章介绍利用SDC内部接口,设计开发定时组件以及结合其自带组件,实现管道(PipeLine)的定时任务调度和多数据源应用。实验结果表明,拓展的框架组件可以实现伪实时及复杂的定时任务,并结合内部组件完成本机及远程多数据源整合应用,能解决用户对具体定时场景的应用问题。

关键词: ETL工具; 管道; 定时组件; 多数据源

中图分类号:TP391          文献标志码:A     文章编号:1006-8228(2019)07-19-03

Abstract: SDC(Streamsets Data Collector) is a drag-and-drop big data ETL tool that can handle large amounts of data without writing code, but for complex functions such as task timing management and multiple data sources, it is needed to work with its company's non-open source products. In this paper, SDC internal interface is used to design and develop a timing component and with the combination of SDC internal components to realize timing task scheduling and multi-data source application of pipeline. The experimental results show that the extended framework components can realize pseudo-real-time and complex timing tasks, and combine the internal components to complete the integration application of local and remote multiple data sources, which solves the application problem of users to specific timing scenarios.

Key words: big data; ETL tool; pipeline; timing component; multi-data source

0 引言

随着大数据时代的到来,数据量越来越多,早在2010年全球数据就跨入了ZB时代,到2020年全球将拥有35ZB的数据量。由于数据量巨大、数据类型多样、价值密度低,大数据技术为我们分析问题和解决问题提供了新的思路和方法,其研究渐渐成为热点[3]。数据分析是整个大数据处理流程里最核心的部分,在数据分析的过程中, 会发现数据的价值所在[4]。数据分析处理工具的种类越来越多,我们对工具的性能、方便、及易用性要求越来越高,各式各样的数据处理工具用在数据处理的不同场景[5],以满足我们现在数据分析的需要。本文介绍的框架可以实现不用书写一段代码就可以实现端到端的数据传送,可用于数据的离线提取、实时更新等,本文利用自定义定时组件、RPC组件和事件触发组价,实现了多数据源的整合定时更新。

1 简介

2014年,前Clouderra开发团队负责人和前Informatica产品负责人创建了Streamsets公司,他们意识到大数据正在打破传统的基于结构数据的数据集成范式和数据移动模式,因此开发了多种大数据应用产品,其中公司核心产品是一款开源的数据移动引擎框架SDC,是一款具有UI界面可拖拽的大数据ETL工具。

1.1 SDC相关组件

⑴ PipeLine

Pipeline画布内部,可以定义一个Origin数据源,多个processor处理器和多个Destination目的地。在Data Collector中可以运行多个PipeLine, 当PipeLine运行时可以实时监控每条数据,提供数据状态的可视化界面。PipeLine还提供数据报警、事件触发、传递参数,集群模式运行等功能。

⑵ Original

Original組件对接外部接口或设备进行数据的抽取,是数据的来源。每个PipeLine中只能有一个数据源(origin)例如:JDBC Query Consumer,Kafka Consumer。

⑶ Processor

Processors组件可以将origin抽取来的数据进行清洗,然后再传到Destination组件,processor组件可以添加多个。例如:字段删除、分割、合并等。

⑷ Destination

Destination组件将清洗过后的数据装载到目的地址,目的地址可以为多个。例如:将数据上传的关系型数据库、或者通过RPC http传给另一个PipeLine。

⑸ Executor

在SDC中存在两种类型的事件,一种是PipeLine相关事件,只有在PipeLine启动或者停止时产生;另一种是stage相关事件,是单个组件产生的事件,例如:JDBC query Consumer查询完数据时会产生”jdbc-query-success”,”no-more-data”事件。

1.2 SCH(streamsets Control hub)[6]

SCH是一个非开源的产品,在官网上付费订阅后才可使用。它为企业中的团队开发提供了方便,主要功能:实现了PipeLine的自动部署,PipeLine之间实现多个数据的拓扑结构,实现PipeLine的定时操作,实现控制创建、版本管理、版本回滚等。官方为SCH提供了云服务,也可将SCH安装在远程的服务器上进行PipeLine的管理工作。

2 SDC应用

2.1 应用扩展

由于SCH是非开源的组件,不利用SCH情况下无法实现SDC的定时任务调度,而且对于每个管道画布只允许有一个数据源(origin)存在,这就限制了多个数据源进行数据的整合问题。为了解释如何解决以上两个问题,下面展示了简单的应用场景案例。案例中具体分为三个部分:①利用开源的Quartz[7]包开发SDC扩展组件——基于Cron[8]表达式的定时任务组件;②利用系統自带组件RPC实现多个数据源的数据整合;③利用组件的事件触发机制和组件Pipeline Finisher Executor实现停止管道。图1详细描述了应用的具体流程,图中虚线箭头代表发送http请求触发管道,图中实线箭头表示数据流。

2.1.1 Cron PipeLine

Cron PipeLine中包括三个组件:第一个为自定义组件CRON trigger,用于定时触发cron表达式产生数据流;第二个组件为系统自带组件Stream Selector,功能是将第一个组件产生的数据流根据指定条件进行分发;第三个组件为自定义组件PipeLine Trigger,功能是根据第一个组件的数据流进行定时启动指定管道。

⑴ CRON trigger组件

自定义CRON trigger组件为origin组件,利用开源的作业调度框架Quartz和Quartz所支持的Cron表达式进行origin组件开发扩展[9],以下为伪代码。

① 利用LinkedBlockingQueue创建容器,以保证线程安全。

② 参考Quartz文档,创建scheduler,job,trigger,利用界面传来的cron表达式产生数据放入上面创建容器。

③ 在produce方法中将容器中数据拉出传给下一个组件(LinkedBlockingQueue.poll(15,TimeUnit.SECONDS)可降低CPU占有率)。

⑵ PipeLine Trigger组件

自定义PipeLine Trigger组件利用SDC所提供的restApi接口,通过发送http请求控制PipeLine的启动。组件设计可以开启本地服务的Pipeline,也可开启远程服务的PipeLine,远程服务要提供远程地址及远程用户密码,以下为伪代码。

① 传入用户名和密码用于用户校验。

② 根据SDC提供接口,发送http请求开启指定pipeline。

2.1.2 多数据源

多数据源是利用SDC的两个RPC组件实现的。分别为发送端SDC RPC组件和接受端SDC RPC组件,原理是利用rpc协议[10]实现数据的传输。这两个组件所在管道可以在同一个主机上,也可以在同一个内网或者外网。

图1中,在PipeLine1中连接数据源,将抽取的数据传入发送端SDC RPC组件,发送端SDC RPC组件中配置对应的数据传输目的地址和SDC RPC ID,在PipeLine3中接受端SDC RPC组件通过监听指定的端口号和设置SDC RPC ID验证接受传输来的数据(SDC RPC ID用于识别发送端SDC RPC组件)。

3 结论及展望

本文主要阐述了SDC框架的拓展及应用,通过配合自定义定时组件、组件SDC RPC和组件PipeLine Finish Executor,实现了多数据源整合的定时策略,通过多次框架组件测试表明整个组件实用性强,能实现伪实时及复杂的定时任务,解决了具体场景定时任务应用问题。由于组件实现了cron表达式输入实现定时,有些使用者对cron表达式不了解。因此组件扩展还需进一步研究,从而实现界面鼠标点击定时以及对任务的进一步优化管理。大数据时代导致大数据研发公司层出不穷,各式各样的大数据框架供我们应用在不同的大数据处理情景下,相信不久的将来将出现更加优秀的大数据ETL处理框架。

参考文献(References):

[1] Streamsets Data Collector. Available at https://streamsets.com/products/sdc

[2] Ralph Kimball著,周连科译.数据仓库工具箱[M].清华大学出版社,2017.

[3] 陶雪娇,胡晓峰,刘洋.大数据研究综述[J].系统仿真学报,2013.25(S1):142-146

[4] 刘智慧,张泉灵.大数据技术研究综述[J].浙江大学学报(工学版),2014,48(06):957-972.

[5] 程学旗,靳小龙,王元卓,郭嘉丰,张铁赢,李国杰.大数据系统和分析技术综述[J].软件学报,2014.25(09):1889-1908

[6] Streamsets Control Hub.Available at https://streamsets.com/products/sch

[7] quartz. Available at http://www.quartz-scheduler.org/documentation

[8] Richard Blum著,门佳,武海峰译.Linux命令行与shell脚本编程大全[M].人民邮电出版社,2016.

[9] Streamsets tutorials. Available at https://github.com/streamsets/tutorials

[10] 李智慧.大型分布式网站架构[M].电子工业出版社,2018.

猜你喜欢
管道
欢迎订阅《化工设备与管道》
接好煤改气“最后一米”管道
中俄东线天然气管道开通
管道氦检漏泄漏性试验的应用与推广
粗氢管道腐蚀与腐蚀控制
石化低压蒸汽管道断裂与安全评定
GYFTS-(2-144) 非金属架空、管道光缆
油气管道也要“反腐”
中国管道建设情况及管道用钢发展趋势
MARK VIe控制系统在西气东输管道上的应用与维护