教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS

这篇具有很好参考价值的文章主要介绍了教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS

一直以来,大数据量一直是爆炸性增长,每天几十 TB 的数据增量已经非常常见,但云存储相对来说还是不便宜的。众多云上的大数据用户特别希望可以非常简单快速的将文件移动到更实惠的 S3、OSS 上进行保存,这篇文章就来介绍如何使用 SeaTunnel 来进行到 OSS 的数据同步。

首先简要介绍一下 Apache SeaTunnel,SeaTunnel 专注于数据集成和数据同步,主要解决以下问题:

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

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

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

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

SeaTunnel 支持海量数据的高效离线/实时同步, 每天可稳定高效同步数百亿级数据,已经有 B 站,腾讯云,微博,360,Shopee 等数百家公司生产使用。

下面步入今天的正题,今天具体来说是讲 Apache SeaTunnel 产品与阿里云 OSS 的集成。

在阿里云 OSS 产品界面,开通 Bucket:

教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS

下面是 SeaTunnel 的部署, SeaTunnel 支持多种部署方式: 单机,集群,K8s 等方式。由于 SeaTunnel 不依赖 Zookeeper 等第三方组件,所以整体部署非常简单,具体请参考其官网:https://seatunnel.apache.org/docs/2.3.0/start-v2/locally/deployment

接下来是 SeaTunnel 使用过程,使用命令:

./bin/seatunnel.sh -m local -c ./config/localfile-oss.config

在 SeaTunnel 中,用户可以通过 config 文件定制自己的数据同步需求,最大限度地发挥 SeaTunnel 的潜力。那么接下来就给大家介绍一下如何配置 Config 文件

可以看到,config 文件包含几个部分:env、source、transform、sink。不同的模块有不同的功能。了解这些模块后,您将了解 SeaTunnel 的工作原理。

用于添加一些引擎可选参数,无论是哪个引擎(Spark或Flink),这里都要填写相应的可选参数。

source 用于定义 SeaTunnel 需要从哪里获取数据,并将获取的数据用于下一步。可以同时定义多个源。现在支持的来源检查 SeaTunnel 的来源。每个 Source 都有自己特定的参数来定义如何取数据,SeaTunnel 也提取了每个 source 会用到的参数,比如parameter,用来指定 result_table_name 当前 source 产生的数据的名称,方便供其他模块后续使用。

本例中的 localfile-oss.config 配置文件内容介绍:

env {                                                                                                                                                                          
 
  # You can set SeaTunnel environment configuration here                                                                                                                      
 
  execution.parallelism = 10                                                                                                                                                  
 
  job.mode = "BATCH"                                                                                                                                                           
 
  checkpoint.interval = 10000                                                                                                                                                  
 
  #execution.checkpoint.interval = 10000                                                                                                                                      
 
  #execution.checkpoint.data-uri = "hdfs://localhost:9000/checkpoint"                                                                                                         
 
}                                                                                                                                                                              
 
                                                                                                                                                                               
 
source {                                                                                                                                                                       
 
LocalFile {                                                                                                                                                                   
  #本地待同步的数据文件夹, 本例子中只有一个 test0.csv 文件,具体内容参考下图
  path = "/data/seatunnel-2.3.1/testfile/source"                                                                                                                              
 
  type = "csv"                                                                                                                                                                
                                                                                                                                                                   
  delimiter = "#"                                                                                                                                                               
 
  schema {                                                                                                                                                                     
 
    fields {                                                                                                                                                                   
 
        name = string                                                                                                                                                          
 
        age = int                                                                                                                                                             
 
        gender = string                                                                                                                                                        
 
    }                                                                                                                                                                          
 
  }                                                                                                                                                                            
}                                                                                                                                                                             
                                                                                                        
 
}                                                                                                                                                                              
 
                                                                                                                                                                               
 
sink {                                                                                                                                                                                                                                                                                                                                         
  OssJindoFile {                                                                                                                                                              
                                                                                                                                                                                                                                   path="/seatunnel/oss03"                                                        
    bucket = "oss://bucket123456654321234.cn-hangzhou.oss-dls.aliyuncs.com"                                                                                                      
 
    access_key = "I5t7VZyZSmMNwKsNv1LTADxW"                                                                                                                                   
 
    access_secret = "BinZ9J0zYxRbvG9wQUi6LiUjZElLTA"                                                                                                                                                                                                                                                           
 
    endpoint = "cn-hangzhou.oss-dls.aliyuncs.com"                                                                                                                             
 
  }
                                                                                                                                                                                                                                                                                  
}

注:下图本地待同步的数据文件夹, 本例子中只有一个 test0.csv 文件,具体内容
教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS

特别注意:如果是开通了 HDFS 的 OSS,有 2 个地方是不一样的:1 是 bucket,1 是 endpoint 。如下红色部分是开通了 HDFS 后的,被 “#” 注释掉的是未开通 HDFS 的情况。

教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS

SeaTunnel 对这 2 种情况都是支持的,只是大家要注意一下配置 bucket 和 endpoint 时的不同!

执行运行命令后,我们可以从 SeaTunnel 控制台看下以下 SeaTunnel 本次同步情况的数据:


       Job Statistic Information                                                                                                                                           

Start Time : 2023-02-22 17:12:19

End Time : 2023-02-22 17:12:37

Total Time(s) : 18

Total Read Count : 10000000

Total Write Count : 10000000

Total Failed Count : 0


从阿里云界面上可以看到 OSS 端的监控数据:

教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS
教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS
教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS

可以看出来 SeaTunnel 快速高效地同步了 1000万数据量的本地文件!

最后,Apache SeaTunnel 目前已经支持了过百种数据源,并发布了 SeaTunnel Zeta 同步引擎,性能巨佳,还有群进行技术支持,欢迎对比,欢迎一试!感兴趣的伙伴欢迎联系社区志愿者微信: seatunnel1

参考:

1、https://seatunnel.apache.org/docs/2.3.0/start-v2/locally/deployment

2、https://seatunnel.apache.org/docs/2.3.0/start-v2/locally/quick-start-seatunnel-engine

3、https://seatunnel.apache.org

本文由 白鲸开源 提供发布支持!文章来源地址https://www.toymoban.com/news/detail-710163.html

到了这里,关于教程 | 使用 Apache SeaTunnel 同步本地文件到阿里云 OSS的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java使用阿里云OSS实现文件上传到云盘

    一、进入阿里云官网的OSS管理控制台并注册账号 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 欢迎登录阿里云,全球领先的云计算及人工智能科技公司,阿里云为200多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安

    2024年01月17日
    浏览(43)
  • 【云存储】使用OSS快速搭建个人网盘教程(阿里云)

    不管是本地存储还是在云环境中,都有三种主要的存储类型: 块存储、文件存储和对象存储。 1.1 块存储 块存储是一种将 数据存储为固定大小块 的数据存储方式。 块存储将数据分成多个块,每个块的大小通常是固定的,比如4KB、8KB、16KB等。 块存储的数据结构相对固定,无法

    2024年02月14日
    浏览(29)
  • WordPress使用阿里云OSS作为媒体库提升网站速度及配置教程

    首先需要注册阿里云(www.aliyun.com)账户,可以直接用淘宝账户登录,这年头都有淘宝账户吧!:) 进入阿里云中的对象存储OSS首页,开通阿里云OSS对象存储 开通阿里云OSS对象存储 开通后进入管理控制台,新建一个Bucket(空间),填写空间名,按照你的网站受众用户所在区

    2024年02月20日
    浏览(40)
  • 阿里云OSS对象存储使用临时URL访问,并对下载文件重命名

    如何使用临时授权的url访问云对象地址,又如何通过该URL下载自定义的文件名。 下面是两个内容点: 1.直接获取临时url,这个跟官方的差不多,基本上照搬即可。 2.获取临时url,并且可以对下载文件重命名。 java SDK版本 3.5.0 官方文档 oss java sdk 举例 直接使用临时URL访问,这里可

    2024年02月09日
    浏览(40)
  • 微信小程序使用阿里云oss设置上传文件的content-type

    图片文件上传到阿里云oss的默认访问content-type是jpge,这个格式在浏览器不能直接打开,需要手动设置上传的content-type 参考链接 UploadTask wx.uploadFile(Object object) OSS调用PostObject用于通过HTML表单上传的方式将文件(Object)上传到指定存储空间(Bucket)。 阿里OSS 上传图片 springboo

    2024年02月12日
    浏览(35)
  • 【源码编译】Apache SeaTunnel-Web 适配最新2.3.4版本教程

    Apache SeaTunnel新版本已经发布,感兴趣的小伙伴可以看之前版本发布的文章 本文主要给大家介绍为使用2.3.4版本的新特性,需要对Apache SeaTunnel-Web依赖的版本进行升级,而SeaTunnel2.3.4版本部分API跟之前 版本不兼容 ,所以需要对 SeaTunnel-Web的 源码进行修改 适配。 克隆SeaYunnel-We

    2024年04月14日
    浏览(25)
  • 阿里云OSS-小程序文件直传(支持微信小程序、H5、PC端web使用)

    支持微信小程序、H5、PC端web使用,整套文件进行封装统一使用 开发背景:做类似发布朋友圈的功能需求,由于后端对发布功能只提供一个接口,文字、状态、文件上传统一一个接口上传,且对文件上传方面做的接口存在诸多问题(人已经整麻了),包括各种数据结构的转换

    2024年02月07日
    浏览(31)
  • SeaTunnel 海量数据同步工具的使用(连载中……)

    SeaTunnel 是一个非常易用,高性能、支持实时流式和离线批处理的海量数据处理产品,前身是 WaterDrop (中文名:水滴),自 2021年10月12日更名为 SeaTunnel 。2021年12月9日,SeaTunnel 正式通过Apache 软件基金会的投票决议,以全票通过的优秀表现正式成为 Apache 孵化器项目。 2022年

    2024年01月16日
    浏览(28)
  • 使用rsync一直同步阿里云的文件

    要使用 rsync 实时同步阿里云服务器上的文件,你可以遵循以下步骤: 确保本地计算机和阿里云服务器都安装了 rsync 。如果没有安装,请在 Linux 系统上使用以下命令安装: 对于基于 RPM 的 Linux 发行版(例如 CentOS ),使用以下命令安装: 生成 SSH 密钥对,以便在本地计算机和

    2024年02月11日
    浏览(33)
  • 如何使用 SeaTunnel 同步 MySQL 数据到 Hive

    第一步:环境准备 Java 8 或 11 并配置JAVA_HOME Git  Maven 第二步:下载SeaTunnel并安装连接器 下载地址:https://seatunnel.apache.org/download/ 下载SeaTunnel并安装2.3.0版本 https://www.apache.org/dyn/closer.lua/incubator/seatunnel/2.3.0/apache-seatunnel-incubating-2.3.0-bin.tar.gz 详细的安装过程可以参考:https://s

    2023年04月08日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包