开源数据交换

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 开源数据交换

一.项目简介

exchange是要打造一个轻量级,高扩展性的数据交换平台,支持对结构化及无结构化的异构数据源之间的数据传输,在应用层上具有数据权限管控、节点服务高可用和多租户资源隔离等业务特性,而在数据层上又具有传输架构多样化、模块插件化和组件低耦合等架构特点。

exchange的传输能力依赖于Apache Beam链路计算的能力,再由事件模型扩展并发能力,最后处理成DAG应用,可以分发到不同的引擎上。

URL

https://github.com/dlimeng/exchange-parent

客户端

类似与Sqoop操作,核心功能导入/导出,把每个操作基于事件模型并发处理,根据Beam计算模型生成DAG应用。

服务端

可视化操作,传输交换能力依赖于其底层聚合的传输引擎,其顶层对各类数据源定义统一的参数模型,每种传输引擎对参数模型进行映射配置,转化为引擎的输入模型,可视化操作。(尚未开源)

核心特点

  • I/O 高效扩展性(根据Beam规范,扩展)。
  • 数据源管理,目前支持Mysql,Oracle,Hive,Neo4j,Elasticsearch,Gbase,File。
  • 多传输引擎支持(扩展引擎),目前支持Java,Spark,Flink引擎。
  • 近实时任务管控
  • 支持无结构化传输
  • 任务状态自检
  • 各个源根据事件互通传输
    教程

Beam官网)

Apache Beam 大数据处理一站式分析)

二.编译部署

2.1 客户端

环境准备

JDK (1.8.0_141) 必选

Spark (2.x) 可选

Flink (1.6.x) 可选

Hadoop 2.7以上

Hive 1.2.1以上

若需要 oralce 把pom注释打开

若需要 gbase 把pom注释打开

如不满足,可以修改pom文件,重新编译

编译

当前项目环境下编译

示例:D:\exchange-parent> mvn clean package

执行文件

kd-process-0.1.0-shaded.jar

三.快速使用

3.1 客户端

具体参数含义,请看开发规范

spark2-submit  --driver-memory 2G --executor-memory 5G --executor-cores 3 --num-executors 3  --conf spark.default.para
llelism=200 --conf spark.sql.shuffle.partitions=200  --class com.knowlegene.parent.process.SwapSparkApplication  --mas
ter yarn   /mnt/jars/kd-process-0.1.0-shaded.jar  --fromName=mysql --toName=hive --hiveClass=org.apache.hive.jdbc.Hive
Driver --hiveUrl=jdbc:hive2://192.168.200.117:10000/linkis_db  --hiveUsername=hdfs --hivePassword=hdfs --hiveTableName
=per_test1 --hiveTableEmpty=true  --url=jdbc:mysql://192.168.100.101:3306/dt?useSSL=false --tableName=companykeyrate -
-driverClass=com.mysql.jdbc.Driver --username=dt --password=Dt@654321  --runner=SparkRunner  --sparkMaster=yarn

四.底层已支持计算存储引擎

4.1 客户端

Spark

com.knowlegene.parent.process.SwapSparkApplication 这个时入口程序,

--runner=SparkRunner --sparkMaster=yarn 这两个Beam参数必传,具体用Spark的yarn,local,standalone 看需求。具体操作规范请看Beam(https://beam.apache.org/documentation/)。

spark2-submit  --driver-memory 2G --executor-memory 5G --executor-cores 3 --num-executors 3  --conf spark.default.para
llelism=200 --conf spark.sql.shuffle.partitions=200  --class com.knowlegene.parent.process.SwapSparkApplication  --mas
ter yarn   /mnt/jars/kd-process-0.1.0-shaded.jar  --fromName=mysql --toName=hive --hiveClass=org.apache.hive.jdbc.Hive
Driver --hiveUrl=jdbc:hive2://192.168.200.117:10000/linkis_db  --hiveUsername=hdfs --hivePassword=hdfs --hiveTableName
=per_test1 --hiveTableEmpty=true  --url=jdbc:mysql://192.168.100.101:3306/dt?useSSL=false --tableName=companykeyrate -
-driverClass=com.mysql.jdbc.Driver --username=dt --password=Dt@654321  --runner=SparkRunner  --sparkMaster=yarn

Java

com.knowlegene.parent.process.SwapDirectApplication 这个时入口程序,

根据java -cp 传参运行,具体操作规范请看Beam(https://beam.apache.org/documentation/)

Flink

com.knowlegene.parent.process.SwapFlinkApplication 这个时入口程序,

mvn exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \
    -Pflink-runner \
    -Dexec.args="--runner=FlinkRunner \
      --inputFile=/path/to/pom.xml \
      --output=/path/to/counts \
      --flinkMaster=<flink master url> \
      --filesToStage=target/word-count-beam-bundled-0.1.jar"

具体操作规范请看Beam(https://beam.apache.org/documentation/)

六.开发规范

6.1 客户端传参规范

入口

参数 含义
fromName 起始数据源(hive,oracle,mysql,es,file,gbase,neo4j)
toName 目标数据源(hive,oracle,mysql,es,file,gbase,neo4j)
runner 引擎名称(SparkRunner,FlinkRunner)

更多引擎参数

FlinkPipelineOptions

SparkPipelineOptions

Hive

参数 含义
hiveClass org.apache.hive.jdbc.HiveDriver
hiveUrl hive jdbc url
hiveUsername 用户名
hivePassword 密码
hiveTableName 表名称
hiveDatabase 库名称
hiveTableEmpty 是否清空目标表数据,默认不清空(false)
hiveSQL hive sql
hiveColumn 起始,目标,元数据的列字段
hMetastoreHost Hcatalog host
hMetastorePort Hcatalog port
hiveFilter Hcatalog 过滤条件
hivePartition 分区,json ,示例({“time”:"2019"})
hiveUrls 起始源和目标源都是Hive,url数组
hiveUsernames 起始源和目标源都是Hive,用户数组
hivePasswords 起始源和目标源都是Hive,密码数组
hiveTableNames 起始源和目标源都是Hive,表名称数组
hiveDatabases 起始源和目标源都是Hive,库名称数组
hMetastoreHosts 起始源和目标源都是Hive,Hcatalog host数组
hMetastorePorts 起始源和目标源都是Hive,Hcatalog port数组

Mysql

参数 含义
url jdbc url
tableName 表名称
username 用户名称
password 密码
driverClass driver class
dbSQL sql
dbColumn 起始,目标,元数据的列字段
driverClasss 起始源和目标源都是db
urls 起始源和目标源都是db
tableNames 起始源和目标源都是db
usernames 起始源和目标源都是db
passwords 起始源和目标源都是db

Elasticsearch

参数 含义
esAddrs es 地址
esIndex 索引
esType 类型,7版本必须_doc
esQuery 查询
esIdFn 根据字段赋值_id
esAddrsFrom 起始源和目标源都是es
esAddrsTo 起始源和目标源都是es
esIndexs 起始源和目标源都是es
esTypes 起始源和目标源都是es
nestingKeysName 嵌套名称
nestingKeys 根据key嵌套
nestingValues 嵌套数组中value

Neo4j

参数 含义
cypher cypher
neoUrl url
neoUsername 用户名称
neoPassword 密码
neoFormat 导出模板,具体看测试用例
neoType 类型,起始数据源为Neo4j,节点(node)/关系(relate)
cyphers 起始源和目标源都是neo4j
neoUrls 起始源和目标源都是neo4j
neoUsernames 起始源和目标源都是neo4j
neoPasswords 起始源和目标源都是neo4j

Oracle

参数 含义
url jdbc url
tableName 表名称
username 用户名称
password 密码
driverClass driver class
dbSQL sql
dbColumn 起始,目标,元数据的列字段
driverClasss 起始源和目标源都是db
urls 起始源和目标源都是db
tableNames 起始源和目标源都是db
usernames 起始源和目标源都是db
passwords 起始源和目标源都是db

Gbase

参数 含义
url jdbc url
tableName 表名称
username 用户名称
password 密码
driverClass driver class
dbSQL sql
dbColumn 起始,目标,元数据的列字段
driverClasss 起始源和目标源都是db
urls 起始源和目标源都是db
tableNames 起始源和目标源都是db
usernames 起始源和目标源都是db
passwords 起始源和目标源都是db

File

参数 含义
filePath 文件路径
fieldDelim 文件分隔符
fieldTitle 文件字段名称
filePaths 起始源和目标源都是file
fieldDelims 起始源和目标源都是file

6.2 测试用例

参考

com.knowlegene.parent.process 里面包括所有源测试用例

七.问题

1.Hive版本1.2以上,不然只能使用jdbc,无法使用HCatalog

2.Neo4j 多Type用模板方式导出,否则建议用cypher,具体情况,看测试用例

3.Gbase,Oracle jar 自行引入,pom中注释了

4.Neo4j 模板方式导出,id:ID(Node) 固定,node表示节点名称。

5.es的嵌套当前版本只支持一个。

6.有的引擎若用不到自行删除。

7.推荐HCatalog。

8.Hive jdbc 性能不好,不建议用java引擎,用Spark/Flink。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
缓存 监控 安全
中间件数据交换的功能介绍
中间件数据交换在数据传输、采集、应用管理、调度缓存、监控报警、映射规则及异步解耦等方面发挥关键作用。它确保数据安全、高效、可靠交换,支持系统稳定和灵活适应业务需求。
65 2
|
4月前
|
存储 移动开发
数据交换技术
数据交换技术
30 0
|
4月前
|
网络协议 Go 开发者
Go语言网络编程基础:构建高效、可靠的网络应用
【2月更文挑战第12天】本文将深入探讨Go语言在网络编程领域的基础知识,包括其强大的并发模型、网络库的使用、TCP/IP和HTTP协议的理解等。通过本文,读者将能够理解Go语言在网络编程中的优势,并掌握构建高效、可靠网络应用的核心技能。
|
2月前
|
存储 JSON API
使用 Protobuf 实现高效数据交换
**Protocol Buffers(Protobuf)** 是Google的序列化框架,语言和平台中立,用于高效、结构化数据的传输和存储。它支持多种数据类型,包括基本类型和复杂结构如枚举、数组和嵌套消息。Protobuf文件采用类似编程接口的定义,用`.proto`文件描述服务和消息。与RESTful API相比,gRPC基于HTTP/2和Protobuf,提供更小、更快的二进制格式。 Protobuf还包括`oneof`、`enum`和`map`等特性,用于处理复杂数据结构。通过代码生成,它简化了跨语言的数据交换。
46 2
|
25天前
|
监控 小程序 安全
小程序全栈开发中的WebSocket实时通信实践是一种高效的开发模式。
随着移动互联网的发展,小程序成为企业拓展业务的新渠道。WebSocket作为一种实时通信协议,可在小程序中实现如实时聊天、推送、游戏等功能。它支持客户端与服务器间的全双工长连接通信,优于传统HTTP。开发者需注意安全、性能及兼容性等问题,以优化体验并保障稳定运行。掌握WebSocket有助于提升小程序功能性与用户体验。
32 1
|
4月前
|
存储 缓存 网络架构
计算机网络:数据交换方式
计算机网络:数据交换方式
66 3
|
4月前
|
负载均衡 监控 安全
中间件功能之数据交换
中间件在数据交换中起关键作用,负责数据的可靠、高效和安全传输。其主要功能包括:数据格式转换、数据路由、数据同步、数据过滤与验证、负载均衡、安全控制及日志记录与监控。通过这些功能,中间件确保了不同系统间数据的无缝对接、一致性、质量和安全性,提升了数据交换的效率。
66 4
|
4月前
|
网络协议 安全 算法
谷歌出品!读懂 QUIC 协议:更快、更高效的通信协议
谷歌出品!读懂 QUIC 协议:更快、更高效的通信协议
608 0
|
4月前
|
API 开发工具 C语言
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
【嵌入式开源库】EasyLogger的使用, 一款轻量级且高性能的日志库
618 0
|
10月前
|
存储 XML JSON
高效的网络传输协议设计protobuf
高效的网络传输协议设计protobuf
109 1