华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)

CMP(类 Cloudera CDP 7.3)在华为鲲鹏 Aarch64(ARM)信创环境下,汇聚多个 Oracle 数据库 的操作指南

以下是一份针对 CMP (类 Cloudera CDP 7.3 )在华为鲲鹏 Aarch64 (ARM )信创环境下,汇聚多个 Oracle 数据库 的操作指南。

注意:此指南基于当前(2025年10月)的技术背景和对您需求的理解,其中"CMP(类ClouderaCDP7.3(404次编译))"可能指代一个基于 CDP 7.x 技术栈的定制化平台或概念性产品,因为 CDP 7.3 官方并未发布 ARM64 版本。本指南将重点放在如何在鲲鹏 AArch64 环境下,利用类似 CDP 的大数据技术栈(如 Hadoop、Spark、Hive、Kafka 等)来连接和汇聚多个 Oracle 数据库。


🔧 华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南

📋 目标

在华为鲲鹏 AArch64 服务器上部署大数据平台(类 CDP),实现对多个 Oracle 数据源的统一接入、汇聚、存储与初步处理。

🧰 环境准备

  • 硬件: 华为鲲鹏 920 服务器(ARM64 架构)
  • 操作系统: EulerOS 2.0 或 openEuler (AArch64)
  • 大数据平台: 假设为 "CMP" (Cloudera-like Platform),或使用原生 Hadoop 生态组件(HDFS, YARN, Spark, Hive, Sqoop, Kafka)进行部署。
  • 数据源: 多个 Oracle 11g/12c/19c 数据库实例
  • JDK: OpenJDK 8 或 11 (AArch64 版本)
  • Oracle JDBC Driver: ojdbc8.jar (需与 Oracle 版本兼容)

🚀 操作步骤

第一步:鲲鹏 AArch64 环境准备

  • 操作系统安装与配置 :
    • 在鲲鹏服务器上安装 EulerOS 2.0 或 openEuler AArch64 版本。
    • 配置网络、防火墙(开放必要端口,如 HDFS 8020, YARN 8088, Hive 10000, Spark History Server 18080 等)。
    • 关闭 SELinux (setenforce 0 并修改 /etc/selinux/config)。
  • JDK 安装 :
    • 下载适用于 AArch64 的 OpenJDK 8/11。
    • 解压并设置 JAVA_HOME 环境变量。

Bash:

tar -xzf openjdk-8u422-linux-aarch64.tar.gz

export JAVA_HOME=/path/to/openjdk-8u422-linux-aarch64

export PATH=JAVA_HOME/bin:PATH

第二步:部署大数据平台 (CMP/ 原生 Hadoop)

关键: 需要确保所有组件都支持 AArch64。原生 Hadoop、Spark、Hive 对 AArch64 支持较好,但 CDP 7.3 官方不支持。可能需要:

  • 使用社区或第三方提供的 AArch64 兼容版本。
  • 自行编译源码(如标题中的"404次编译"暗示可能需要)。
  • 考虑替代方案,如原生 Hadoop + Ambari/Cloudera Manager(需 ARM 支持)或其他国产大数据平台。
  • 下载与解压 :
    • 下载对应 AArch64 的 Hadoop、Spark、Hive 等二进制包。
    • 解压到 /opt 或 /usr/local 目录。
  • 配置 Hadoop :
    • 编辑 core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml。
    • 设置 fs.defaultFS 指向你的 HDFS NameNode。
    • 设置 yarn.resourcemanager.hostname 指向你的 ResourceManager。
    • 配置 yarn.nodemanager.resource.memory-mb 和 yarn.nodemanager.resource.cpu-vcores 以适应鲲鹏硬件。
    • 重要: 在 hadoop-env.sh, yarn-env.sh, spark-env.sh 中设置 JAVA_HOME。
  • 启动 Hadoop:

Bash:

格式化 NameNode (仅首次)

hdfs namenode -format

启动 HDFS 和 YARN

start-dfs.sh

start-yarn.sh

启动 JobHistory Server (MapReduce)

mr-jobhistory-daemon.sh start historyserver

  • 配置 Spark & Hive :
    • 设置 SPARK_HOME 和 HIVE_HOME。
    • 配置 spark-defaults.conf 和 hive-site.xml 连接到 HDFS 和 YARN。
    • 确保 spark-env.shhive-env.sh 中 JAVA_HOME 正确。

第三步:配置 Oracle 连接

  • 下载 Oracle JDBC Driver :
    • 从 Oracle 官网下载 ojdbc8.jar (或对应版本)。
  • 放置 JDBC Driver :
    • 将 ojdbc8.jar 放置到 Hadoop、Spark、Hive 的 lib 目录下。

Bash:

cp ojdbc8.jar $HADOOP_HOME/share/hadoop/common/lib/

cp ojdbc8.jar $SPARK_HOME/jars/

cp ojdbc8.jar $HIVE_HOME/lib/

第四步:数据汇聚策略

有多种方式可以从 Oracle 汇聚数据到 HDFS,以下介绍两种常用方法:

方法一:使用 Sqoop 进行批量导入

  • 安装 Sqoop :
    • 下载并解压 Sqoop AArch64 版本,或自行编译。
  • 执行 Sqoop 导入 :
    • 全量导入示例:

Bash:

sqoop import \

--connect jdbc:oracle:thin:@//<oracle_host1>:<port>/<service_name> \

--username <oracle_user> \

--password <oracle_password> \

--table <oracle_table_name> \

--target-dir /user/hive/warehouse/oracle_db.db/table_name \

--delete-target-dir \

--as-parquetfile \

--num-mappers 4

    • 增量导入示例 (基于时间戳):

Bash:

sqoop import \

--connect jdbc:oracle:thin:@//<oracle_host1>:<port>/<service_name> \

--username <oracle_user> \

--password <oracle_password> \

--table <oracle_table_name> \

--target-dir /user/hive/warehouse/oracle_db.db/table_name_incremental \

--check-column <timestamp_column> \

--incremental lastmodified \

--last-value '2025-10-16 10:00:00' \

--merge-key <primary_key_column> \

--as-parquetfile \

--num-mappers 2

    • 对每个 Oracle 源重复执行,导入到不同的 HDFS 路径。

方法二:使用 Spark SQL 进行实时/ 准实时读取与处理

  • 编写 Spark 应用:

title="Spark Oracle Data Ingestion Example"

Scala:

import org.apache.spark.sql.SparkSession

import java.util.Properties

object OracleIngestion {

def main(args: Array[String]): Unit = {

val spark = SparkSession.builder()

.appName("Oracle Ingestion to HDFS")

.config("spark.sql.adaptive.enabled", "true") // 启用自适应查询执行

.getOrCreate()

val jdbcUrl1 = "jdbc:oracle:thin:@//<oracle_host1>:<port>/<service_name>"

val jdbcUrl2 = "jdbc:oracle:thin:@//<oracle_host2>:<port>/<service_name>"

val username = "<oracle_user>"

val password = "<oracle_password>"

val connectionProperties = new Properties()

connectionProperties.put("user", username)

connectionProperties.put("password", password)

connectionProperties.put("driver", "oracle.jdbc.OracleDriver")

// 读取第一个 Oracle 表

var df1 = spark.read

.jdbc(jdbcUrl1, "<oracle_table_name>", connectionProperties)

.withColumn("source", lit("oracle1")) // 添加来源标识

// 读取第二个 Oracle 表

var df2 = spark.read

.jdbc(jdbcUrl2, "<oracle_table_name>", connectionProperties)

.withColumn("source", lit("oracle2"))

// 合并数据 (Union)

var combinedDf = df1.union(df2)

// 数据清洗、转换 (示例)

combinedDf = combinedDf.filter(col("status") === "ACTIVE") // 示例过滤

combinedDf = combinedDf.withColumn("processed_at", current_timestamp()) // 添加处理时间

// 写入 HDFS (Parquet 格式推荐)

combinedDf.write

.mode("overwrite") // 或 "append" 用于增量

.parquet("/user/hive/warehouse/consolidated_oracle_data")

spark.stop()

}

}

注意:需要将 spark-core, spark-sql, spark-catalyst 以及 ojdbc8.jar 添加到 classpath

  • 提交 Spark 作业:

Bash:

spark-submit \

--class OracleIngestion \

--master yarn \

--deploy-mode client \

--jars /path/to/ojdbc8.jar \

/path/to/your/spark-app.jar

第五步:数据存储与管理(Hive

  • 创建 Hive 外部表 (指向 HDFS 上的 Parquet 文件):

Sql:

CREATE EXTERNAL TABLE IF NOT EXISTS consolidated_oracle_data (

id BIGINT,

name STRING,

value DOUBLE,

status STRING,

processed_at TIMESTAMP

)

STORED AS PARQUET

LOCATION '/user/hive/warehouse/consolidated_oracle_data';

  • 使用 HiveQL 进行查询和进一步处理

第六步:自动化与调度

  • 使用 Oozie、Airflow 或 Azkaban 等工作流调度工具,将 Sqoop 导入或 Spark 作业编排成定时任务,实现数据的定期汇聚。

⚠️ 注意事项

  • 兼容性: AArch64 上的大数据组件兼容性是关键挑战,可能需要大量测试和定制。
  • 性能: 鲲鹏平台的性能调优(JVM 参数、Hadoop/Spark 配置)至关重要。
  • 安全性: 在信创环境下,确保数据传输和存储的安全性(如 Kerberos 认证、Sentry/Atlas 授权)。
  • Oracle 连接: 确保网络可达,JDBC 驱动版本兼容,Oracle 用户权限足够。

这份指南提供了一个基本框架。具体实现细节(如配置文件的具体内容、编译步骤等)将根据您实际使用的"CMP"平台或原生组件的版本而有所不同。

相关推荐
Elasticsearch19 小时前
如何使用 Agent Builder 排查 Kubernetes Pod 重启和 OOMKilled 事件
elasticsearch
Elasticsearch2 天前
通用表达式语言 ( CEL ): CEL 输入如何改进 Elastic Agent 集成中的数据收集
elasticsearch
武子康2 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
初次攀爬者3 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
武子康3 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库3 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟4 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人4 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长4 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计