开源数据交换

简介: 开源数据交换

一.项目简介

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。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
8月前
|
数据库 数据安全/隐私保护 UED
如何开发CRM系统中的订单管理板块(附架构图+流程图+代码参考)
CRM系统中的订单管理板块是企业数字化转型的关键工具,能够高效管理客户订单、提升销售效率和客户满意度。本文详解订单管理的功能设计、业务流程、开发技巧及代码实现,助力企业优化订单流程、提高业绩。
|
机器学习/深度学习 人工智能 自然语言处理
JoyGen:用音频生成3D说话人脸视频,快速生成逼真的唇部同步视频
JoyGen 是京东和香港大学联合推出的音频驱动的3D说话人脸视频生成框架,支持多语言、高质量视觉效果和精确的唇部与音频同步。
845 14
JoyGen:用音频生成3D说话人脸视频,快速生成逼真的唇部同步视频
|
供应链 Python
供需匹配(Demand-Supply Matching)的详细解释与Python代码示例
供需匹配(Demand-Supply Matching)的详细解释与Python代码示例
|
存储 运维 安全
导论|数据可信流通 从运维信任到技术信任
《数据二十条》提出建立数据可信流通体系,强调全流程合规与监管,确保数据来源合法、隐私保护和交易规范。数据已成为数字经济的关键要素,但面临身份确认、利益依赖、能力预期和行为后果的信任挑战。安全事件暴露了所有权保障和越权使用风险,外循环模式下责任主体不清、利益不一致等问题突显。为解决信任问题,需从运维信任转向技术信任,利用密码学和可信计算实现身份确认、利益对齐、能力预期和行为审计。关键技术包括可信数字身份验证、使用权跨域管控、安全分级测评和全链路审计。数据密态时代借助密码学保障数据全生命周期的安全可控,降低流通风险,实现广域数据的可信流通。基础设施如密态天空计算将支持这一转型。
382 0
|
安全 数据库 数据安全/隐私保护
安全策略之授权强制访问控制(MAC)
【8月更文挑战第14天】
1418 2
|
数据采集 存储 SQL
【开源项目推荐】OpenMetadata——基于开放元数据的一体化数据治理平台
【开源项目推荐】OpenMetadata——基于开放元数据的一体化数据治理平台
2257 3
|
小程序 前端开发 JavaScript
微信小程序实现抽奖大转盘
微信小程序实现抽奖大转盘
1222 0
|
弹性计算
阿里云服务器公网带宽最高只能是100Mbps吗?
阿里云服务器公网带宽最高只能是100Mbps吗?阿里云服务器公网带宽最高只有100Mbps,不够用怎么办?阿里云的带宽居然只有100M,对于需要大带宽云服务器的用户怎么办?难道只能租物理机吗?并不是,可以将云服务器固定公网IP转成弹性公网EIP,弹性公网IP带宽最高可选1000Mbps,完全够用
阿里云服务器公网带宽最高只能是100Mbps吗?
|
Kubernetes 安全 API
一套用于 Kubernetes 的现代 Grafana 仪表板
一套用于 Kubernetes 的现代 Grafana 仪表板
BXA
|
消息中间件 存储 Cloud Native
Spring Boot与 Kafka实现高吞吐量消息处理大规模数据问题
现代数据量越来越庞大对数据处理的效率提出了更高的要求。Apache Kafka是目前流行的分布式消息队列之一。Spring Boot是现代Java应用程序快速开发的首选框架。综合使用Spring Boot和Apache Kafka可以实现高吞吐量消息处理。
BXA
965 0