当前位置: 首页 > news >正文

华为鲲鹏 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.sh 和 hive-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”平台或原生组件的版本而有所不同。

http://www.dtcms.com/a/495289.html

相关文章:

  • Chromedriver放项目里就行!Selenium 3 和 4 指定路径方法对比 + 兼容写法
  • Spring Boot 项目, idea 控制台日志设置彩色
  • wap网站建设好不好百度小程序官方收费标准
  • Go语言数据竞争Data Race 问题怎么检测?怎么解决?
  • 作为项目经理,如何做好项目复盘?
  • 网站建设百度不通过杭州建站模板系统
  • A函数里调用B函数 ,且往B函数里传了个二级指针,并在B返回后,释放该指针
  • 茶社网站开发与设计的开题报告自适应网站好建们
  • 做拍福利爱福利视频网站网站建设与维护实训
  • LangGraph学习笔记(一):langgraph安装
  • DFS算法原理及其模板
  • 【小程序】微信小程序点击效果(view、button、navigator)
  • 快速上手 Scrapy:5 分钟创建一个可扩展的爬虫项目
  • 青岛网站设计公司在哪找网店代运营什么意思
  • 数字图像处理-图像增强(2)
  • JPA 用 List 入参在 @Query中报错 unexpected AST node: {vector}
  • 国外网站顶部菜单设计电子商务 网站设计
  • 南城县建设局网站北京vi设计公司哪
  • spark性能优化1:通过依赖关系重组优化Spark性能:宽窄依赖集中处理实践
  • 工程师的烹饪 - 空气炸锅菜谱
  • 如何在腾讯云上建设网站手机必备网站
  • Linux:12.线程同步与互斥
  • 泰安网站建设哪家强wordpress m1
  • el-table中控制单列内容多行超出省略及tooltip
  • 构建企业级跨境电商(Temu)财务数据自动化采集系统
  • B-tree索引像字典查词一样工作?那哪些数据库查询它能加速,哪些不能?
  • C++实现二叉树搜索树
  • 网站开发和美工的区别手机域名注册被骗
  • 做模特的网站python语言编程入门
  • GeeLark 9月功能更新回顾