首页 > 其他分享 >超大型纸业品牌“清风”也用上 Apache SeaTunnel 啦!

超大型纸业品牌“清风”也用上 Apache SeaTunnel 啦!

时间:2023-05-26 19:06:40浏览次数:38  
标签:SeaTunnel 超大型 Apache SAP 数据 我们 Clickhouse

file

我是韩山峰,来自金红叶纸业集团。今天,我将向大家介绍 Apache SeaTunnel 在我们金红叶纸业集团中的应用场景,包括我们为何选择 Apache SeaTunnel ,以及我们如何基于其提升我们内部的数据开发效率。

文|韩山峰 编辑整理| 曾辉

讲师介绍

file 韩山峰 金红叶纸业 数据分析师

01 产品选择历程

在我刚加入金红叶的时候,所有数据都在 Oracle 数据库中。在那时,我们用的是 Oracle 视图来做数仓。

file

如果一个视图不能满足需求,我们就会创建另一个视图,如果两个视图还不能满足需求,我们就会再套一个视图。但随着时间的推移,这种方式的效率问题开始显现,于是我们开始寻找新的方案。

第一个任务是研究 Oracle 和 Clickhouse 之间的数据同步。这一阶段,我们的目标很简单,即直接将系统表数据推送到 Clickhouse,然后由 Clickhouse 直接做前端应用。当解决了 Oracle 到 Clickhouse 的数据同步问题后,我们开始进入第二个阶段。

第二阶段,我们开始处理 SAP 的数据。作为一个传统企业,我们的制造、营销及供应链生产,都依赖于 ERP 系统,特别是 SAP,这也给我们带来了数据输出的挑战。我们选择了使用SAP的RFC接口进行数据输出,并且很巧合的是我们在第一阶段使用的工具 Kettle 也支持这种方式。

第三阶段,我们规划使用 Hive 来建设我们的数仓。然而,由于 Kettle 本身存在的问题和限制,我们开始寻找新的工具,能够将我们的 Oracle 数据库和 SAP 接口的数据导入到 Hive,并在数仓中进行模型处理和数据清洗。

第四阶段,我们开始探索如何将清洗过的 Hiv e数据推送到 Clickhouse,因为我们的 BI、报表以及可视化应用,更多的是依赖于 Clickhouse 。我们在这一阶段探讨了如何打通整个数据生态的问题。

file

在这个过程中,我们评估了多种解决方案,包括商业解决方案和开源的 Apache SeaTunnel ,我还记得刚接触 Apache SeaTunnel 时,当时它的名字叫 “Waterdrop” 。

我们详细阅读了它在 GitHub上 的文档,进行了深入的代码分析,并最终决定基于 Apache SeaTunnel 来搭建我们的数据集成工具。

在定好工具之后,我们开始面临新的挑战。企业内部除了标准的业务系统外,我们还购买了一些 SaaS 服务。很多 SaaS 服务只给你一个客户端或者一个 Web 账号密码,获取想要的数据会有一些困难。

这就引出了我们的第五阶段,即如何将所有的数据通过一个工具集成到我们的平台中,然后通过我们的 Clickhouse 对外提供服务。这个过程对我们来说是艰难的,但我们最终实现了目标,提升了我们的数据开发效率。

我们经历了五个阶段来选择并实施合适的数据产品。通过对不同产品的比较,从 Kettle 进行迭代升级到 SeaTunnel 。

我们列举了几个关键的步骤: 首先,我们处理的是传统的离线数据接入。其次,我们实现了通过 RFC 接口进行数据接入,这一步 Apache SeaTunnel 在原生形态下只部分支持。为了完整支持这一功能,我们研究了 SAP 文档和 Apache SeaTunnel 的源代码,对其进行了开发和优化。

在这个过程中,SeaTunnel 为我们技术团队提供了详细的文档,包括中英文版本。当我们遇到问题时,我们可以通过提交 Github 请求或 Slack、Apache SeaTunnel 的社区群来寻求解决。过程中配置文件和文档对于开发者来说相对容易理解,这也是我们选择Apache SeaTunnel的原因之一!

02 产品应用场景

在数据接入方面,我们主要有以下几个应用场景:

file

离线数据接入:这是我们最主要的应用场景,我们将各个业务系统的数据库和不同的库表通过 Apache SeaTunnel 同步到我们的 Hive 中,然后在 Hive 内部处理业务逻辑,再将处理后的数据输出到我们的 Clickhouse 中,最后通过前端的 BI 或报表工具对数据进行展示。

RFC数据接入:这是我们的另一个主要应用场景。在这个过程中。我们使用 SAP 的 RFC 接口进行数据接入,该接口是 SAP 提供的标准对外接口之一,同时提供 Java 和 Python 的实现。

file

第三方数据接入:虽然这种场景在我们的应用中比重较小,我们会通过 HTTP 协议或 Kafka 协议接入这些数据,然后进行内部的数据分析。

03 开发效率提升

接下来跟大家介绍一下,我们团队在开发效率方面的提升,这么说吧!它基本上把我们算是彻底地变成了这种 “复制粘贴” 工程师了,所有的主题,都采用这种标准化的目录结构、标准化的模板去建造,然后分发分工处理;就是完全变成一个流水线的一个工作。

然后第二个就是说在“流水线”的过程中,我们有很多这种固定化的一些东西,也是一方面是内部的一个规范性的约束,一方面就是说我们也从开源的里边学了一些,学习到一些东西,然后把它用在我们这边。

当我们的团队第一次接触开源时,我们的态度主要是借鉴和应用。但是我们发现 SeaTunnel 这个活跃度高文档齐全的项目,我们就拿来使用。

file 在使用过程中,我们发现它确实能够解决我们公司内部,包括我们的数据团队内部的一些问题。在使用过程中,我们也发现了一些问题,这促使我们提出了 PR 并尝试反馈一些正向的建议。这种反馈其实也帮助了我们,所以我们也想一直在做一些对于社区来说是积极的反馈。

我们在2021年时使用的是1.0的版本,2.0的版本当时还没出来。我们在使用1.0的版本时,遇到了很多问题,到了2.0时代,支持的协议真的很多,有一些是我们非常需要的,比如 HTTP 这种协议。在我们内部的测试之后,我们发现这确实能极大地减轻我们的开发时间。

04 产品升级迭代

在我们刚开始的那个架构图中,我们实际上使用的是 Azkaban ,这是因为当时我们没有太多的时间去测试不同的产品,所以我们选择了最简单的 Azkaban 来做我们整个集群的资源调度工具。

但它也存在一些问题,比如它不能很好地管理我的各种脚本。

file

随着我们接入的主题越来越多,相关主题的依赖也变得越来越多。原来可能只有一两个主题相互之间可以解决,现在我们需要非常小心地调整各个依赖之间的调度时间。有的时候,可能突然出现数据量大的任务需要耗费一两个小时,那么接下来的任务可能就会执行失败。我们需要非常小心地处理各个依赖的调度。

然后,我们接触到了 Apache DolphinScheduler 这个工具,它基本上能够很好地解决我们的调度依赖问题和资源管理问题,我们的后续计划就是使用 DolphinScheduler 这个工具去替代当前的 Azkaban 。

最后,我想分享一本我最近阅读关于软件行业书籍中的一段话,它让我有很深的感触。这本书描述的是1960年代,那个时候还是真空管的年代,芯片还在初始阶段。

书中有一段话我觉得非常深刻,它说:芯片越简单,它所提供的可靠性和电力节省程度就越好。我觉得这也适用于我们的软件程序。如果我们的程序对用户来说足够简单,它的可靠性和它提供的功能就会越强大。

本文由 白鲸开源 提供发布支持!

标签:SeaTunnel,超大型,Apache,SAP,数据,我们,Clickhouse
From: https://blog.51cto.com/u_15459354/6358235

相关文章

  • 一文教会你用Apache SeaTunnel Zeta离线把数据从MySQL同步到StarRocks
    在上一篇文章中,我们介绍了如何下载安装部署SeaTunnelZeta服务(3分钟部署SeaTunnelZeta单节点Standalone模式环境),接下来我们介绍一下SeaTunnel支持的第一个同步场景:离线批量同步。顾名思意,离线批量同步需要用户定义好SeaTunnelJobConfig,选择批处理模式,作业启动后开始同步数据,当......
  • Apache深入优化
    拓扑图:推荐步骤:在centos01安装Apache服务,配置Apache服务设置网站主页在centos02配置DNS服务使用bdqn域名在centos01配置Apache优化prefork和worker工作模式配置压力测试验证实验步骤:在centos01上安装apache服务配置网站配置apache服务启动服务查看运行状态修改apache网站根目录设置......
  • 表达式语言引擎:Apache Commons JEXL 2.1 发布
    CommonsJEXL2.1发布了,该版本和2.0.1是二进制兼容的,但源码不兼容,因为新增了两个接口:org.apache.commons.jexl2.Scriptorg.apache.commons.jexl2.JexlInfoJEXL2.1改进内容:Amorethorougharithmetic(JexlArithmetic)thatallowsfinecontroloverdecimals(scaleand......
  • Apache Hudi 在袋鼠云数据湖平台的设计与实践
    在大数据处理中,实时数据分析是一个重要的需求。随着数据量的不断增长,对于实时分析的挑战也在不断加大,传统的批处理方式已经不能满足实时数据处理的需求,需要一种更加高效的技术来解决这个问题。ApacheHudi(HadoopUpsertsDeletesandIncrementalProcessing)就是这样一种技术,提供......
  • Apache maven 安装与配置 (Mac)
    一、准备文件Maven3.5.4version下载 https://maven.apache.org/download.cgi  二、安装与配置(1)安装将下载好的文件解压到/usr/local目录下,如果找不到/usr/local目录,可以打开苹果访达,按住shift+command+G,则会弹出一个搜索框,在里面输入/usr/local即可出现。也可以使......
  • Apache-maven的安装与配置(IDEA)
    https://mbd.baidu.com/ug_share/mbox/4a83aa9e65/share?product=smartapp&tk=8b0406b2ed7c5e71944c9c31062c5007&share_url=https%3A%2F%2Fyebd1h.smartapps.cn%2Fpages%2Fblog%2Findex%3FblogId%3D122922148%26_swebfr%3D1%26_swebFromHost%3Dbaiduboxapp&domai......
  • org.apache.jasper.JasperException: /pages/role-list.jsp (行.: [145], 列: [8]) 根
    org.apache.jasper.JasperException:/pages/role-list.jsp(行.:[145],列:[8])根据标记文件中的TLD或attribute指令,attribute[items]不接受任何表达式 web.xml中版本号不兼容产生的问题;解决方法:<%@taglibprefix=“c”uri=“http://java.sun.com/jstl/core”%>改为<%@t......
  • 开源之夏 2023|欢迎报名 Apache RocketMQ 社区项目!
    开源之夏是由中科院软件所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,培养和发掘更多优秀的开发者,促进优秀开源软件社区的蓬勃发展,助力开源软件供应链建设。参与学生通过远程线上协作方式,配有资深导师指导,参与到开源......
  • Apache Log4j2远程代码执行漏洞(CVE-2021-44228)修复
    1、演示说明:最近在项目中遇到用户扫描es时发现ApacheLog4j2远程代码执行漏洞(CVE-2021-44228),该漏洞具体原理不再赘述,此处分享解决过程。2、演示环境:(1)系统版本:#cat/etc/redhat-release(2)JDK版本:#java-version(3)es版本:#./elasticsearch-V3、下载命令行扫描工具:下载地址:https://gi......
  • Apache、Tomcat、IIS(PHP、JSP、ASP)共存及安装Tomcat
    1.安装Tomcatapt-getinstalltomcat7apt-getinstalltomcat7-adminapt-getinstalltomcat7-docsapt-getinstalltomcat7-examples 2.开启,中止和重启/etc/init.d/tomcat7start/etc/init.d/tomcat7stop/etc/init.d/tomcat7restart 3.根目录链接cd/var/l......