seatunnel 2.3.1全流程部署使用教程
作者:zzuli_cyf 发布时间:2022-02-01 02:38:51
SeaTunnel是什么?
SeaTunnel下一代高性能、分布式、海量数据集成框架。SeaTunnel是一个非常易于使用的超高性能分布式数据集成平台,支持海量数据的实时同步。每天可以稳定高效地同步数百亿数据,已被近百家公司用于生产。
SeaTunnel的核心特性有哪些?
1.组件丰富(内置丰富插件,支持各种数据产品方便快捷的传输和集成数据)。
2.高扩展性(基于模块化和插件化设计,支持热插拔, 带来更好的扩展性)。
3.简单易用(特有的架构设计下,使得开发配置更简单,几乎零代码,无使用成本)。
4.成熟稳定(经历多家企业,大规模生产环境使用和海量数据的洗礼,稳定健壮)。
Seatunnel 2.3.1 部署使用
1 部署
1.1 下载解压
https://dlcdn.apache.org/incubator/seatunnel/2.3.1/apache-seatunnel-incubating-2.3.1-bin.tar.gz
下载完毕之后上传到服务器上面并解压
# 解压到了/opt/module目录下
tar -zxvf apache-seatunnel-incubating-2.3.1-bin.tar.gz -C /opt/module
1.2 下载对应的connector
在apache的仓库下载相应的connector,下载时每个jar包在不同的路径下面,放到/seatunnel-2.3.1/connectors/seatunnel目录下
https://repo.maven.apache.org/maven2/org/apache/seatunnel/
connector-assert-2.3.1.jar
connector-cdc-mysql-2.3.1.jar
connector-console-2.3.1.jar # 自带的
connector-doris-2.3.1.jar
connector-elasticsearch-2.3.1.jar
connector-fake-2.3.1.jar # 自带的
connector-file-hadoop-2.3.1.jar
connector-file-local-2.3.1.jar
connector-hive-2.3.1.jar
connector-iceberg-2.3.1.jar
connector-jdbc-2.3.1.jar
connector-kafka-2.3.1.jar
connector-redis-2.3.1.jar
配置安装seatunnel的插件
vim seatunnel-2.3.1/config/plugin_config
调用安装脚本的时候会在maven的中央仓库下载对应的jar包,尽量少放,下载太慢了,我放了这些
--connectors-v2--
connector-assert
connector-cdc-mysql
connector-jdbc
connector-fake
connector-console
--end--
1.3 安装seatunnel
sh bin/install-plugin.sh 2.3.1
整个过程非常慢…应该是从maven中央仓库下载东西
1.4 补充一些jar包
使用hive的话需要将这两个jar放入到seatunnel-2.3.1/lib目录下:
hive-exec-2.3.9.jar
# 下载链接
# https://repo.maven.apache.org/maven2/org/apache/hive/hive-exec/2.3.9/hive-exec-2.3.9.jar
# 注意这里是hive-exec-2.3.9.jar,不要从你的hive的lib目录下拷贝最新的jar包,就用这个
seatunnel-hadoop3-3.1.4-uber-2.3.1.jar
# 下载链接
# https://repo.maven.apache.org/maven2/org/apache/seatunnel/seatunnel-hadoop3-3.1.4-uber/2.3.1/seatunnel-hadoop3-3.1.4-uber-2.3.1.jar
seatunnel-hadoop3-3.1.4-uber-2.3.1-optional.jar
# 下载链接
# hhttps://repo.maven.apache.org/maven2/org/apache/seatunnel/seatunnel-hadoop3-3.1.4-uber/2.3.1/seatunnel-hadoop3-3.1.4-uber-2.3.1-optional.jar
中间由于其他缘故我拷贝了一个hive
框架/lib
目录下的libfb303-0.9.3.jar
放到seatunnel
的lib
目录下了。
使用
mysql
的话需要将mysql的驱动拷贝过来,应该是需要8
系列的mysql驱动,我这里使用的是mysql-connector-java-8.0.21.jar
2 测试样例
2.1 官方demo fake to console
seatunnel-2.3.1/config/v2.batch.config.template
env {
execution.parallelism = 2
job.mode = "BATCH"
checkpoint.interval = 10000
}
source {
FakeSource {
parallelism = 2
result_table_name = "fake"
row.num = 16
schema = {
fields {
name = "string"
age = "int"
}
}
}
}
sink {
Console {
}
}
运行命令
cd /opt/module/seatunnel-2.3.1
./bin/seatunnel.sh --config ./config/v2.batch.config.template -e lcoal
运行成功的话会可以在console看到打印的测试数据
2.2 mysql to console
我新建了一个用来放运行配置的目录/opt/module/seatunnel-2.3.1/job
vim mysql_2console.conf
mysql_2console.conf
env {
execution.parallelism = 2
job.mode = "BATCH"
checkpoint.interval = 10000
}
source{
Jdbc {
url = "jdbc:mysql://hadoop102/dim_db?useUnicode=true&characterEncoding=utf8&useSSL=false"
driver = "com.mysql.cj.jdbc.Driver"
connection_check_timeout_sec = 100
user = "root"
password = "xxxxxx"
query = "select * from dim_basicdata_date_a_d where date < '2010-12-31'"
}
}
sink {
Console {
}
}
查询的是一张日期维表的数据
建表语句:
CREATE DATABASE dim_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
drop table if exists dim_db.dim_basicdata_date_a_d;
create table if not exists dim_db.dim_basicdata_date_a_d
(
`date` varchar(40) comment '日期',
`year` varchar(40) comment '年',
`quarter` varchar(40) comment '季度(1/2/3/4)',
`season` varchar(40) comment '季节(春季/夏季/秋季/冬季)',
`month` varchar(40) comment '月',
`day` varchar(40) comment '日',
`week` varchar(40) comment '年内第几周',
`weekday` varchar(40) comment '周几(1-周一/2-周二/3-周三/4-周四/5-周五/6-周六/7-周日)',
`is_workday` varchar(40) comment '是否是工作日(1-是,0-否)',
`date_type` varchar(40) comment '节假日类型(工作日/法定上班[调休]/周末/节假日)',
`update_date` varchar(40) comment '更新日期'
);
可以自己插入几条数据试试
运行命令
cd /opt/module/seatunnel-2.3.1
./bin/seatunnel.sh --config ./job/mysql_2console.conf -e local
2.3 hive to console
创建一张hive表
CREATE database db_hive;
drop table if exists db_hive.dim_basicdata_date_a_d;
create table if not exists db_hive.dim_basicdata_date_a_d
(
`date` string comment '日期',
`year` string comment '年',
`quarter` string comment '季度(1/2/3/4)',
`season` string comment '季节(春季/夏季/秋季/冬季)',
`month` string comment '月',
`day` string comment '日',
`week` string comment '年内第几周',
`weekday` string comment '周几(1-周一/2-周二/3-周三/4-周四/5-周五/6-周六/7-周日)',
`is_workday` string comment '是否是工作日(1-是,0-否)',
`date_type` string comment '节假日类型(工作日/法定上班[调休]/周末/节假日)',
`update_date` string comment '更新日期'
);
自行插入几条数据
创建配置文件hive_2console.conf
env {
execution.parallelism = 2
job.mode = "BATCH"
checkpoint.interval = 10000
}
source{
Hive {
table_name = "db_hive.dim_basicdata_date_a_d"
metastore_uri = "thrift://hadoop102:9083"
}
}
sink {
Console {
}
}
这里我使用的hive连接方式是jdbc访问元数据,所以metastore_uri = "jdbc:hive2://hadoop102:10000"
也可以正常使用。
hive-site.xml
修改配置文件,有可能你已经配置好了
<!-- 为了方便连接,采用直连的方式连接到hive数据库,注释掉下面三条配置信息 -->
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://hadoop102:9083</value>
</property>
<!-- 指定 hiveserver2 连接的 host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop102</value>
</property>
<!-- 指定 hiveserver2 连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
运行命令
cd /opt/module/seatunnel-2.3.1
./bin/seatunnel.sh --config ./job/hive_2console.conf -e local
2.4 mysql to hive
创建配置文件
dim_basicdate_mysql_2hive.conf
env {
execution.parallelism = 2
job.mode = "BATCH"
checkpoint.interval = 10000
}
source{
Jdbc {
url = "jdbc:mysql://hadoop102/dim_db?useUnicode=true&characterEncoding=utf8&useSSL=false"
driver = "com.mysql.cj.jdbc.Driver"
connection_check_timeout_sec = 100
user = "root"
password = "111111"
query = "select * from dim_basicdata_date_a_d"
}
}
sink {
Hive {
table_name = "db_hive.dim_basicdata_date_a_d"
metastore_uri = "thrift://hadoop102:9083"
}
}
运行命令
cd /opt/module/seatunnel-2.3.1
./bin/seatunnel.sh --config ./job/dim_basicdate_mysql_2hive.conf-e local
来源:https://blog.csdn.net/QJQJLOVE/article/details/130794122
猜你喜欢
- 人们常说人生就是一个不断做选择题的过程:有的人没得选,只有一条路能走;有的人好一点,可以二选一;有些能力好或者家境好的人,可以有更多的选择;
- 一、什么是数组数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。二、声明数据在PHP中声
- 使用re, urllib, threading多线程抓取天涯帖子内容,设置url为需抓取的天涯帖子的第一页,设置file_name为下载后的
- python2中的unicode()函数在python3中会报错:NameError: name 'unicode' is
- 废话少说,直接上代码:<?php/** * Note:for octet-stream upload * 这个是流式上传PHP文件 *
- 目前流行的强化学习算法包括 Q-learning、SARSA、DDPG、A2C、PPO、DQN 和 TRPO。 这些算法已被用于在游戏、机器
- label与one-hot之间的互相转换有时候需要label,比如强化学习的离散动作空间,输出动作索引;有时候需要one-hot,比如训练数
- JSP 注释的详解及简单实例一 三种格式二 举例 <body> <h1>大家好</h1
- 题目:求一个3*3矩阵对角线元素之和。程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。 def two_dime
- Access允许您在数据库表中包含附件。通过利用微软的对象链接和嵌入(OLE)技术,您可以将照片、图表、文档及其他文件存储在您的Access
- 前言提示:以下是本篇文章正文内容🍒PIL库概述PIL库支持图像存储、 显示和处理, 它能够处理几乎所有图片格式, 可以完成对图像的缩放、 剪
- 经过实验,新建一个excel表格,该表格拥有7个sheet,每个sheet有800条数据,其中最后一个sheet为空。首先使用openpyx
- 1、标识符与关键字在了解数据类型之前,先了解一下go的标识符和关键字1.1 标识符在编程语言中标识符就是定义的具有某种意义的词,比如变量名、
- 本文实例讲述了Django框架设置cookies与获取cookies操作。分享给大家供大家参考,具体如下:在Django里面,使用Cooki
- 本文实例讲述了Python实现的KMeans聚类算法。分享给大家供大家参考,具体如下:菜鸟一枚,编程初学者,最近想使用Python3实现几个
- 第一种方法:在php.ini文件里改变display_errors和error_reporting的值,没有的直接加上; 第一处修改; di
- 1. wheel介绍:.whl文件(WHL file)也称为轮子(wheel),这是用于python分发(distribution)的标准内
- 单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来#c
- 在实际的机器学习项目中,我们通常需要将训练好的模型保存到磁盘,以便在以后的时间点进行推理或重新训练。同样地,我们也需要从磁盘加载模型以供使用
- 在用户登录windows操作系统的时候,如果触发到了登录表单的密码录入框上,并且此时按下了“大写锁定键(Caps Lock)”,那么界面上会