数据交换(client)

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 数据交换(client)

一.项目简介

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官网)

二.编译部署

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/)

五.架构

客户端

image.png

支持数据源

image.png

六.开发规范

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。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
《深度剖析架构蒸馏与逻辑蒸馏:探寻知识迁移的差异化路径》
架构蒸馏与逻辑蒸馏是知识蒸馏的两大核心技术,分别聚焦于模型结构和决策逻辑的优化。架构蒸馏通过模仿大型模型的拓扑结构,提升小型模型的性能与效率;逻辑蒸馏则提炼大型模型的推理路径,增强小型模型的智能决策能力。二者在实现方式、作用机理和应用场景上各有侧重,可互补应用于资源受限环境下的高效模型部署与复杂任务处理,共同推动人工智能的发展。
228 23
|
8月前
|
人工智能 云计算
云工开物合作动态丨湖南大学与阿里云签署云工开物校企合作协议
2024年7月5日,湖南大学与阿里云签署合作协议,副校长李肯立与阿里云副总裁刘湘雯出席。双方将在课程共建、科研攻关、学生实践等方面展开合作。阿里云将为每位学生提供算力资源,并为教师每年提供40万元优惠权益。当天下午,阿里云-湖南大学人工智能学生实训营开营,200余名学生参与实操课程。此次合作旨在培养云计算与人工智能领域的高素质创新人才。
|
安全 调度
操作系统的心脏:深入理解内核态与用户态####
【10月更文挑战第14天】 本文旨在通过深入浅出的方式,探讨操作系统中两个核心概念——内核态(Kernel Mode)与用户态(User Mode),它们的区别、联系以及对计算机系统性能和安全的影响。不同于传统摘要的概括性介绍,本文将以一次虚拟的“旅行”为主线,带领读者穿越复杂抽象的技术迷雾,揭示这两种运行模式背后的秘密及其在现代计算中的重要性。
400 0
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
JSON 关系型数据库 MySQL
Mysql中JSON操作函数JSON_EXTRACT()
Mysql中JSON操作函数JSON_EXTRACT()
|
人工智能 云栖大会
2024云栖大会,我们来了!
2024云栖大会亮点介绍
717 1
|
算法 应用服务中间件 图形学
贝叶斯推理导论:如何在‘任何试验之前绝对一无所知’的情况下计算概率
这篇文章探讨了贝叶斯推理的发展历史,从帕斯卡尔和费马的早期工作到托马斯·贝叶斯、皮埃尔-西蒙·拉普拉斯和哈罗德·杰弗里斯的贡献。文章指出,贝叶斯分析经历了从使用均匀先验到发展更为客观的方法,如杰弗里斯先验的过程。它讨论了费雪对逆概率的批评,以及贝叶斯方法在处理不确定性问题上的优势。文章还介绍了如何通过匹配覆盖率来评估先验分布的合理性,并通过几个例子展示了不同先验在二项分布和正态分布问题中的应用。最后,文章提出了贝叶斯分析在统计学中的地位,强调了在缺乏先验知识时建立良好先验的重要性,并讨论了主观性和客观性在统计推理中的角色。
294 1
|
算法 JavaScript 决策智能
基于禁忌搜索算法的TSP路径规划matlab仿真
**摘要:** 使用禁忌搜索算法解决旅行商问题(TSP),在MATLAB2022a中实现路径规划,显示优化曲线与路线图。TSP寻找最短城市访问路径,算法通过避免局部最优,利用禁忌列表不断调整顺序。关键步骤包括初始路径选择、邻域搜索、解评估、选择及禁忌列表更新。过程示意图展示搜索效果。
|
存储 安全 网络协议
2024阿里云上云采购季活动,云服务器计算型c8a、通用型g8i/g8a/g8y实例区别及价格参考
在阿里云2024年的上云采购季活动中,除了以往活动中有的轻量应用服务器和经济型e、通用算力型u1、计算型c7、通用型g7实例之外,阿里云还新增了计算型c8a、通用型g8i/g8a和g8y实例规格,这些都是具有超高性能的AMD&Intel&倚天第八代云服务器,那么这几个云服务器实例规格的性能及适用场景是怎样的呢?本文为大家介绍阿里云计算型c8a、通用型g8i/g8a和g8y实例规格性能及适用场景。
730 0
2024阿里云上云采购季活动,云服务器计算型c8a、通用型g8i/g8a/g8y实例区别及价格参考
|
弹性计算 前端开发 Java
使用阿里云 mqtt serverless 版本超低成本快速实现 webscoket 长链接服务器
使用阿里云 MQTT Serverless 可轻松实现弹性伸缩的 WebSocket 服务,每日成本低至几元。适用于小程序消息推送的 MQTT P2P 模式。前端需注意安全,避免 AK 泄露,采用一机一密方案。后端通过调用 `RegisterDeviceCredential` API 发送消息。示例代码包括 JavaScript 前端连接和 Java 后端发送。
746 0