华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
华为鲲鹏 Aarch64 环境下多 Oracle 、mysql数据库汇聚到Cloudera CDP7.3操作指南
在华为鲲鹏(Kunpeng)AArch64 架构环境下,将 Oracle 和 MySQL 数据库的数据汇聚到 Cloudera CDP 7.3 是一个典型的 异构数据集成 + 大数据平台对接 的复杂任务。
然而,这里存在一个关键的技术限制:
👉 Cloudera CDP 7.3 官方仅支持 x86_64 架构,CMP(Cloud Data AI Management Platform(Aarch64版))支持 AArch64(ARM64)架构。
正确的架构是:
鲲鹏服务器作为数据抽取端(Source) → 将数据汇聚到远程的CDP 7.3 集群(Target)
✅ 正确的操作指南:鲲鹏作为数据源端,CDP 7.3 作为目标平台
🎯 场景说明
- 数据源:Oracle、MySQL(可部署在任意位置)
- 抽取端:华为鲲鹏 AArch64 服务器(运行 ETL 工具)
- 目标平台:Cloudera CDP 7.3 集群
- 网络要求:鲲鹏服务器能访问 Oracle、MySQL 和 CDP 集群的网络(如 Hive、HDFS、Kafka 端口)
一、整体架构设计
Text:
[Oracle DB] \
\
[MySQL DB] → (JDBC) → [鲲鹏 AArch64 服务器] → (HDFS/Kafka/Hive) → [CDP 7.3 集群 ]
/
[Sqoop/SeaTunnel/Kettle]
角色分工:
- 鲲鹏服务器:运行 ETL 工具,负责从 Oracle/MySQL 抽取数据,转换后发送到 CDP。
- CDP 7.3 集群:接收数据,存储于 HDFS、Hive、Kafka 等组件中。
二、推荐方案(鲲鹏兼容 + CDP 集成)
✅ 方案 1:Apache SeaTunnel(推荐)
优势:
- 支持 ARM64 编译运行
- 原生支持 Oracle/MySQL → Hive/HDFS/Kafka
- 可对接 Spark/Flink on CDP
- 高性能,适合批处理和流式同步
部署步骤(在鲲鹏 AArch64 服务器)
- 安装 Java 8/11(OpenJDK)
Bash:
sudo dnf install java-1.8.0-openjdk-devel -y
- 下载并编译 SeaTunnel(ARM64 兼容)
Bash
编辑
git clone https://github.com/apache/seatunnel.git
cd seatunnel
mvn clean package -DskipTests -Pconnector-v2
- 配置 JDBC 驱动
- 下载 ojdbc8.jar(Oracle)和 mysql-connector-java-8.0.33.jar
- 放入 seatunnel-dist/target/seatunnel-2.3.4-SNAPSHOT/lib/
- 编写配置文件 oracle-to-hive.conf
Hocon:
env {
execution.parallelism = 2
job.mode = "BATCH"
}
source {
Jdbc {
url = "jdbc:oracle:thin:@//192.168.1.100:1521/ORCL"
driver = "oracle.jdbc.driver.OracleDriver"
user = "scott"
password = "tiger"
query = "SELECT id, name, salary, hire_date FROM emp WHERE hire_date > '${START_TIME}'"
result_table_name = "src_emp"
}
}
transform {
# 可选:字段映射、类型转换
}
sink {
HdfsFile {
path = "hdfs://cdp-nn:8020/data/emp/"
file_name = "emp"
file_format_type = "Parquet"
hive_meta_store_uri = "thrift://cdp-hms:9083"
hive_database = "default"
hive_table = "emp"
hive_partition_fields = ["dt"]
hive_partition_value = "${TODAY}"
}
}
- 提交任务
Bash:
./bin/seatunnel.sh --config config/oracle-to-hive.conf
✅ 数据将写入 CDP 集群的 HDFS 和 Hive 表中。
✅ 方案 2:自研 Java + MyBatis + Hive JDBC
适用于定制化需求强的场景。
步骤:
- 使用 Spring Boot 开发应用,连接 Oracle/MySQL。
- 使用 HiveServer2 JDBC 或 HDFS Java API 将数据写入 CDP。
- 打包为 Fat Jar,在鲲鹏服务器运行。
Java:
// 示例:写入 Hive
String hiveUrl = "jdbc:hive2://cdp-hiveserver:10000/default";
Connection conn = DriverManager.getConnection(hiveUrl, "hive", "password");
PreparedStatement ps = conn.prepareStatement("INSERT INTO emp VALUES (?, ?, ?)");
ps.setInt(1, id);
ps.setString(2, name);
ps.setDouble(3, salary);
ps.addBatch();
ps.executeBatch();
⚠️ 需在鲲鹏服务器安装 Hadoop 客户端配置(core-site.xml, hdfs-site.xml),或使用 Hive JDBC 直接连接。
✅ 方案 3:Kettle(Pentaho Data Integration)
- 在鲲鹏服务器安装 Kettle(需 OpenJDK for AArch64)。
- 创建 Transformation:
- Table Input:连接 Oracle/MySQL
- Hadoop Hive Output:配置 HiveServer2 连接信息
- 执行并调度。
三、CDP 7.3 端准备(x86_64 集群)
确保 CDP 集群已启用以下服务:
- HDFS:数据存储
- Hive Metastore:元数据管理
- HiveServer2:JDBC 写入支持
- Kafka(可选):实时流接入
开放网络与权限
- 开放 HiveServer2 端口(默认 10000)
- 配置 HDFS 目录权限,允许鲲鹏服务器写入
- 如启用 Kerberos,需配置 keytab 认证(较复杂,建议测试环境先关闭)
四、关键注意事项(鲲鹏 + CDP 组合)
问题 | 解决方案 |
CDP 不支持 AArch64 | 鲲鹏仅作为客户端/抽取端,CMP替代CDP |
JDBC 驱动兼容性 | 使用纯 Java JDBC 驱动(ojdbc8.jar, mysql-connector-java),兼容 ARM64 |
网络延迟 | 确保鲲鹏与 CDP 集群间网络稳定,建议千兆以上 |
数据量大时性能 | 使用 Parquet/ORC 格式,批量写入,避免小文件 |
安全认证 | 若 CDP 启用 Kerberos,需在鲲鹏端配置 JAAS 和 keytab,复杂度高 |
五、替代建议:使用 CDP 原生工具(反向操作)
如果您的 CDP 集群资源充足,更推荐的做法是:
在 CDP 集群内部使用 Sqoop 或 Spark 从远程 Oracle/MySQL 抽取数据。
示例:在 CDP 节点运行 Sqoop
Bash:
sqoop import \
--connect jdbc:oracle:thin:@//oracle-host:1521/ORCL \
--username scott \
--password-file /user/hive/pswd \
--table EMP \
--target-dir /data/emp \
--hive-import \
--hive-table emp
优点:
- 利用 CDP 内部网络,速度快
- 无需依赖外部鲲鹏服务器
- 管理集中
前提:CDP 节点能访问 Oracle/MySQL 数据库。
六、总结
项目 | 说明 |
正确架构 | 鲲鹏作为 ETL 客户端 → CDP 7.3 作为目标集群 |
推荐工具 | Apache SeaTunnel(ARM64 兼容,高性能) |
数据写入方式 | HDFS、Hive、Kafka |
安全建议 | 测试环境先关闭 Kerberos,生产环境再启用 |
📌 最终建议流程:
- 确认 CDP 7.3 集群网络可被鲲鹏访问
- 在鲲鹏服务器部署 SeaTunnel 或 自研 Java 应用
- 配置 Oracle/MySQL 到 Hive/HDFS 的同步任务
- 测试数据写入,验证 Hive 表可查
- 使用 DolphinScheduler 或 Crontab 调度任务