【大数据】什么是数据集成?(SeaTunnel 集成工具介绍)

一、什么是数据集成?

数据集成是指将来自不同数据源的数据整合到一起形成一个统一的数据集。这个过程包括从不同的数据源中收集数据,对数据进行清洗、转换、重构和整合,以便能够在一个统一的数据仓库或数据湖中进行存储和管理。

  • 数据集成可以帮助企业更好地理解和利用他们的数据,并促进数据驱动的决策和业务流程优化。在数据集成过程中,需要考虑数据质量、数据安全性、数据格式、数据结构等方面的问题,并采用适当的技术和工具来解决这些问题,例如 ETL抽取、转换、加载)工具、数据映射工具、数据清洗工具、数据建模工具等。

  • 一般数据集成用到的工具主要有:SqoopDataX、或是本章讲解的 SeaTunnel,这三个工具都是数据转换集成工具,使用其中一个即可,其实也可以这样认为 Sqoop 是第一代,DataX 是第二代,SeaTunnel 是第三代工具,Sqoop 用的不是很多了,Datax 应该用的还是比较多的,SeaTunnelApache 顶级项目,也是最新代的数据集成工具,有兴趣的小伙跟随我的文章一起来了解 SeaTunnel 工具。想了解 SqoopDataX 小伙伴可以查阅我以下文章:

  • 大数据Hadoop之——数据同步工具Sqoop

  • 大数据Hadoop之——数据同步工具DataX

在这里插入图片描述

二、ETL 又是什么?

前面的文章其实讲过 ETL,这里只是再次回顾以下,ETL 中的 Eextract,数据抽取;TTransform,代表数据的转换;L 代表Load,数据加载。

在这里插入图片描述

三、SeaTunnel 介绍

1)概述

Apache SeaTunnel 是一个分布式、高性能、易扩展、用于海量数据(离线&实时)同步和转化的数据集成平台,每天可稳定高效地同步数百亿数据,并具有 已用于生产近100家公司。

SeaTunnel 工作流程图:

在这里插入图片描述

2)SeaTunnel 的作用

SeaTunnel专注于数据集成和数据同步,主要针对解决数据集成领域的常见问题

  • 各种数据源:有数百个常用数据源,其版本不兼容。随着新技术的出现,更多的数据源正在出现。用户很难找到能够完全快速支持这些数据源的工具。

  • 复杂同步场景:数据同步需要支持离线-全量同步、离线-增量同步、CDC、实时同步、数据库全量同步等多种同步场景。

  • 资源需求高:现有的数据集成和数据同步工具往往需要大量的计算资源或JDBC连接资源来完成海量小表的实时同步。这在一定程度上加重了企业的负担。

  • 缺乏质量和监控:数据集成和同步过程经常会遇到数据丢失或重复的情况。同步过程缺乏监控,无法直观地了解任务过程中数据的真实情况。

  • 复杂的技术栈:企业使用的技术组件不同,用户需要针对不同的组件开发相应的同步程序来完成数据集成。

  • 管理和维护难度大:受限于不同的底层技术组件(Flink/Spark),离线同步和实时同步往往分开开发和管理,增加了管理和维护的难度。

3)SeaTunnel 的特点

  • 丰富且可扩展的连接器:SeaTunnel 提供了一个不依赖于特定执行引擎的连接器 API。基于此 API 开发的连接器(源、转换、接收器)可以在许多不同的引擎上运行,例如当前支持的 SeaTunnel 引擎、FlinkSpark

  • 连接器插件:插件设计允许用户轻松开发自己的连接器并将其集成到 SeaTunnel 项目中。目前,SeaTunnel已经支持100多个连接器,而且数量还在激增。有列表 当前支持的连接器

  • 批量流集成:基于 SeaTunnel 连接器API开发的连接器,完美兼容离线同步、实时同步、全同步、增量同步等场景。它大大降低了管理数据集成任务的难度。
    支持分布式快照算法,保证数据一致性。

  • 多引擎支持:SeaTunnel 默认使用 SeaTunnel 引擎进行数据同步。同时,SeaTunnel 还支持使用 Flink 或 Spark 作为连接器的执行引擎,以适应企业现有的技术组件。SeaTunnel 支持多个版本的 Spark 和 Flink。

  • JDBC多路复用,数据库日志多表解析:SeaTunnel支持多表或全数据库同步,解决了JDBC连接过多的问题;支持多表或全库日志读写解析,解决了CDC多表同步场景重复读取解析日志的问题。

  • 高吞吐、低时延:SeaTunnel 支持并行读写,提供稳定可靠的数据同步能力,高吞吐、低时延。

  • 完善的实时监控:SeaTunnel支持数据同步过程中每个步骤的详细监控信息,让用户轻松了解同步任务读写的数据数量、数据大小、QPS等信息。

4)Seatunnel 优势与缺点

优势

  • 简单易用,灵活配置,无需开发
  • 模块化和插件化
  • 支持利用SQL做数据处理和聚合
  • 由于其高度封装的计算引擎架构,可以很好的与中台进行融合,对外提供分布式计算能力

缺点

  • Spark支持2.2.0 - 2.4.8,不支持spark3.x
  • Flink支持1.9.0,目前flink已经迭代至1.14.x,无法向上兼容
  • Spark作业虽然可以很快配置,但相关人员还需要懂一些参数的调优才能让作业效率更优

5)核心理念

SeaTunnel 设计的核心是利用设计模式中的“控制翻转”或者叫“依赖注入”,主要概括为以下两点:

  • 上层不依赖底层,两者都依赖抽象;

  • 流程代码与业务逻辑应该分离。整个数据处理过程,大致可以分为以下几个流程:输入 -> 转换 -> 输出,对于更复杂的数据处理,实质上也是这几种行为的组合:

在这里插入图片描述

四、架构演进

再看 SeaTunnel 架构演进的过程,我们现在目前在做的一个事情就是从 v1 到 v2的架构改造和升级。

在这里插入图片描述

对于 V1 版本来讲,SeaTunnel 本质上是一个 ETL平台。而 V2 版本则向 ELT 的路线发展。基于整个架构和设计哲学的讨论,我们可以在https://github.com/apache/incubator-seatunnel/issues/1608 看到,如果有兴趣,可以去了解一下 SeaTunnel 架构演进的前世今生。

V1 架构

在这里插入图片描述

  • V1 架构中,SeaTunnel 的连接器和异构数据都是强依赖分布式计算引擎的,对于不同的计算引擎,会有不同的一个 API 层,连接器也都依赖着 Spark 和 Flink,已经开发好的连接器本质上也都是 Spark connector 和 Flink connecter。

  • 接入数据之后,再去对接入进来的数据进行转换,然后再进行写出。这套设计哲学虽然代码开发量很少,而且很多细节都不需要考虑,因为现在开源的 Spark、Flink的 connecotor 都已经给我们解决了大多数的问题,但实际上这也是一种弊端。第一,强依赖计算引擎,我们无法做到解耦,而且每当计算引擎做大版本升级的时候,就需要进行大量的底层改造,难度比较大。

V2架构

在这里插入图片描述

基于这些痛点,我们对 V 2 版本进行了重构。首先,V2 版本有了自己的一套API,也是有了自己的一套数据类型,就可以去开发自己的连接器,而不依赖任何引擎,接入的每一条数据都是 SeaTunnelRow,通过翻译层,把 SeaTunnelRow push 到对应的计算引擎里。

最后做一下总结,进行 V1 和 V2 架构的升级对比,到底我们做了哪些事情。

在这里插入图片描述

五、相关竞品及对比

SeaTunnel Engine性能测试

在这里插入图片描述


对比的工具有大家耳熟能详的 DataX,袋鼠云的Chunjun,可能对于Chunjun大家比较陌生,实际上它没改名之前叫 FlinkX,以及最近刚进入 Apache 孵化器的 StreamPark(原名 StreamX)。

在这里插入图片描述

六、SeaTunnel 部署和简单使用

1)安装 JDK

下载地址(也可去官网下载):

链接:https://pan.baidu.com/s/1gOFkezOH-OfDcLbUmq6Dhw?pwd=szys
提取码:szys

# jdk包在我下面提供的资源包里,当然你也可以去官网下载。
tar -xf jdk-8u212-linux-x64.tar.gz

# /etc/profile文件中追加如下内容:
echo "export JAVA_HOME=`pwd`/jdk1.8.0_212" >> /etc/profile
echo "export PATH=\$JAVA_HOME/bin:\$PATH" >> /etc/profile
echo "export CLASSPATH=.:\$JAVA_HOME/lib/dt.jar:\$JAVA_HOME/lib/tools.jar" >> /etc/profile

# 加载生效
source /etc/profile

2)下载

export version="2.3.1"
wget "https://archive.apache.org/dist/incubator/seatunnel/${version}/apache-seatunnel-incubating-${version}-bin.tar.gz"
tar -xzvf "apache-seatunnel-incubating-${version}-bin.tar.gz"

3)安装接器插件

从 2.2.0-beta 开始,二进制包默认不提供连接器依赖,所以第一次使用时,我们需要执行以下命令来安装连接器: (当然也可以手动下载连接器 [Apache Maven Repository](https://repo.maven.apache.org/maven2/org/apache/seatunnel/ 下载,然后手动移动到连接器目录下的 Seatunnel 子目录)。

# config/plugin_config ,可以修改这个配置指定下载连接器,会下载到这个目录下connectors/seatunnel/
cd apache-seatunnel-incubating-${version}
sh bin/install-plugin.sh 2.3.1

4)快速开始

config/v2.batch.conf.template

env {
  execution.parallelism = 1
  job.mode = "BATCH"
}

source {
    FakeSource {
      result_table_name = "fake"
      row.num = 16
      schema = {
        fields {
          name = "string"
          age = "int"
        }
      }
    }
}

sink {
  Console {}
}

启动应用程序:

cd "apache-seatunnel-incubating-${version}"
# 连接器:connectors/seatunnel/connector-fake-2.3.1.jar
./bin/seatunnel.sh --config ./config/v2.streaming.conf.template -e local

在这里插入图片描述

5)快速开始使用 Flink

编辑 config/v2.streaming.conf.template,决定了海隧道启动后数据输入、处理和输出的方式和逻辑。 下面是配置文件的示例,与上面提到的示例应用程序相同。

env {
  execution.parallelism = 1
  job.mode = "BATCH"
}

source {
    FakeSource {
      result_table_name = "fake"
      row.num = 16
      schema = {
        fields {
          name = "string"
          age = "int"
        }
      }
    }
}

sink {
  Console {}
}

启动应用程序(Flink 版本之间 1.15.x 和 1.16.x):

cd "apache-seatunnel-incubating-${version}"
./bin/start-seatunnel-flink-15-connector-v2.sh --config ./config/v2.streaming.conf.template

这里只是演示了官方文档里的简单示例,有兴趣的话,可以去实验其它的数据转换场景。其实转换的思路跟之前的软件都是一样的,有任何疑问欢迎给我留言,后续会更新相关技术类的文章,请小伙伴耐心等待,可关注我的公众号【大数据与云原生技术分享】加群交流或私信交流~

原文地址:https://blog.csdn.net/qq_35745940/article/details/129899167

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读5.3k次,点赞10次,收藏39次。本章详细写了mysql的安装,环境的搭建以及安装时常见的问题和解决办法。_mysql安装及配置超详细教程
文章浏览阅读1.8k次,点赞50次,收藏31次。本篇文章讲解Spark编程基础这门课程的期末大作业,主要围绕Hadoop基本操作、RDD编程、SparkSQL和SparkStreaming编程展开。_直接将第4题的计算结果保存到/user/root/lisi目录中lisipi文件里。
文章浏览阅读7.8k次,点赞9次,收藏34次。ES查询常用语法目录1. ElasticSearch之查询返回结果各字段含义2. match 查询3. term查询4. terms 查询5. range 范围6. 布尔查询6.1 filter加快查询效率的原因7. boosting query(提高查询)8. dis_max(最佳匹配查询)9. 分页10. 聚合查询【内含实际的demo】_es查询语法
文章浏览阅读928次,点赞27次,收藏18次。
文章浏览阅读1.1k次,点赞24次,收藏24次。作用描述分布式协调和一致性协调多个节点的活动,确保一致性和顺序。实现一致性、领导选举、集群管理等功能,确保系统的稳定和可靠性。高可用性和容错性Zookeeper是高可用的分布式系统,通过多个节点提供服务,容忍节点故障并自动进行主从切换。作为其他分布式系统的高可用组件,提供稳定的分布式协调和管理服务,保证系统的连续可用性。配置管理和动态更新作为配置中心,集中管理和分发配置信息。通过订阅机制,实现对配置的动态更新,以适应系统的变化和需求的变化。分布式锁和并发控制。
文章浏览阅读1.5k次,点赞26次,收藏29次。为贯彻执行集团数字化转型的需要,该知识库将公示集团组织内各产研团队不同角色成员的职务“职级”岗位的评定标准;
文章浏览阅读1.2k次,点赞26次,收藏28次。在安装Hadoop之前,需要进行以下准备工作:确认操作系统:Hadoop可以运行在多种操作系统上,包括Linux、Windows和Mac OS等。选择适合你的操作系统,并确保操作系统版本符合Hadoop的要求。安装Java环境:Hadoop是基于Java开发的,因此需要先安装和配置Java环境。确保已经安装了符合Hadoop版本要求的Java Development Kit (JDK),并设置好JAVA_HOME环境变量。确认硬件要求:Hadoop是一个分布式系统,因此需要多台计算机组成集群。
文章浏览阅读974次,点赞19次,收藏24次。# 基于大数据的K-means广告效果分析毕业设计 基于大数据的K-means广告效果分析。
文章浏览阅读1.7k次,点赞6次,收藏10次。Hadoop入门理论
文章浏览阅读1.3w次,点赞28次,收藏232次。通过博客和文献调研整理的一些农业病虫害数据集与算法。_病虫害数据集
文章浏览阅读699次,点赞22次,收藏7次。ZooKeeper使用的是Zab(ZooKeeper Atomic Broadcast)协议,其选举过程基于一种名为Fast Leader Election(FLE)的算法进行。:每个参与选举的ZooKeeper服务器称为一个“Follower”或“Candidate”,它们都有一个唯一的标识ID(通常是一个整数),并且都知道集群中其他服务器的ID。总之,ZooKeeper的选举机制确保了在任何时刻集群中只有一个Leader存在,并通过过半原则保证了即使部分服务器宕机也能维持高可用性和一致性。
文章浏览阅读10w+次,点赞62次,收藏73次。informatica 9.x是一款好用且功能强大的数据集成平台,主要进行各类数据库的管理操作,是使用相当广泛的一款ETL工具(注: ETL就是用来描述将数据从源端经过抽取(extract)、转换(transform)、加载(load)到目的端的过程)。本文主要为大家图文详细介绍Windows10下informatica powercenter 9.6.1安装与配置步骤。文章到这里就结束了,本人是在虚拟机中装了一套win10然后在此基础上测试安装的这些软件,因为工作学习要分开嘛哈哈哈。!!!!!_informatica客户端安装教程
文章浏览阅读7.8w次,点赞245次,收藏2.9k次。111个Python数据分析实战项目,代码已跑通,数据可下载_python数据分析项目案例
文章浏览阅读1.9k次,点赞61次,收藏64次。TDH企业级一站式大数据基础平台致力于帮助企业更全面、更便捷、更智能、更安全的加速数字化转型。通过数年时间的打磨创新,已帮助数千家行业客户利用大数据平台构建核心商业系统,加速商业创新。为了让大数据技术得到更广泛的使用与应用从而创造更高的价值,依托于TDH强大的技术底座,星环科技推出TDH社区版(Transwarp Data Hub Community Edition)版本,致力于为企业用户、高校师生、科研机构以及其他专业开发人员提供更轻量、更简单、更易用的数据分析开发环境,轻松应对各类人员数据分析需求。_星环tdh没有hive
文章浏览阅读836次,点赞21次,收藏19次。
文章浏览阅读1k次,点赞21次,收藏15次。主要介绍ETL相关工作的一些概念和需求点
文章浏览阅读1.4k次。本文以Android、java为开发技术,实现了一个基于Android的博物馆线上导览系统 app。基于Android的博物馆线上导览系统 app的主要使用者分为管理员和用户,app端:首页、菜谱信息、甜品信息、交流论坛、我的,管理员:首页、个人中心、用户管理、菜谱信息管理、菜谱分类管理、甜品信息管理、甜品分类管理、宣传广告管理、交流论坛、系统管理等功能。通过这些功能模块的设计,基本上实现了整个博物馆线上导览的过程。
文章浏览阅读897次,点赞19次,收藏26次。1.背景介绍在当今的数字时代,数据已经成为企业和组织中最宝贵的资源之一。随着互联网、移动互联网和物联网等技术的发展,数据的产生和收集速度也急剧增加。这些数据包括结构化数据(如数据库、 spreadsheet 等)和非结构化数据(如文本、图像、音频、视频等)。这些数据为企业和组织提供了更多的信息和见解,从而帮助他们做出更明智的决策。业务智能(Business Intelligence,BI)...
文章浏览阅读932次,点赞22次,收藏16次。也就是说,一个类应该对自己需要耦合或调用的类知道的最少,类与类之间的关系越密切,耦合度越大,那么类的变化对其耦合的类的影响也会越大,这也是我们面向对象设计的核心原则:低耦合,高内聚。优秀的架构和产品都是一步一步迭代出来的,用户量的不断增大,业务的扩展进行不断地迭代升级,最终演化成优秀的架构。其根本思想是强调了类的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会波及有关系的类。缓存,从操作系统到浏览器,从数据库到消息队列,从应用软件到操作系统,从操作系统到CPU,无处不在。
文章浏览阅读937次,点赞22次,收藏23次。大数据可视化是关于数据视觉表现形式的科学技术研究[9],将数据转换为图形或图像在屏幕上显示出来,并进行各种交互处理的理论、方法和技术。将数据直观地展现出来,以帮助人们理解数据,同时找出包含在海量数据中的规律或者信息,更多的为态势监控和综合决策服务。数据可视化是大数据生态链的最后一公里,也是用户最直接感知数据的环节。数据可视化系统并不是为了展示用户的已知的数据之间的规律,而是为了帮助用户通过认知数据,有新的发现,发现这些数据所反映的实质。大数据可视化的实施是一系列数据的转换过程。