1. 首页 > GoldenGate教程 > 正文

GoldenGate教程FG071-OGG与大数据工具(Hive)集成同步实战

内容简介:
本文详细介绍OGG与大数据工具Hive的集成同步方法,包括OGG for Big Data配置、Hive表同步、数据格式转换等内容。风哥教程参考GoldenGate官方文档GoldenGate for Big Data指南、GoldenGate Hive集成手册等内容,帮助读者掌握OGG与Hive集成的实战技巧。

目录大纲

Part01-基础概念与理论知识
    1.1 OGG for Big Data概述
    1.2 Hive数据仓库架构
    1.3 OGG与Hive集成原理
Part02-生产环境规划与建议
    2.1 OGG与Hive集成架构规划
    2.2 Hive表结构设计规划
    2.3 数据格式转换规划
Part03-生产环境项目实施方案
    3.1 OGG for Big Data安装配置
    3.2 OGG to Hive同步配置
    3.3 数据格式转换配置
Part04-生产案例与实战讲解
    4.1 Oracle到Hive数据同步实战
    4.2 实时数据流到Hive实战
    4.3 增量数据同步到Hive实战
Part05-风哥经验总结与分享
    5.1 OGG与Hive集成最佳实践
    5.2 大数据同步性能优化经验总结
    5.3 常见问题与解决方案

Part01-基础概念与理论知识

1.1 OGG for Big Data概述

OGG for Big Data是Oracle GoldenGate专门为大数据平台设计的组件,支持将关系型数据库数据实时同步到Hadoop、Hive、Kafka等大数据平台,学习交流加群风哥微信: itpux-com。

核心特性:
1. 实时同步:CDC实时数据捕获
2. 多目标支持:支持Hadoop、Hive、Kafka等
3. 格式转换:自动进行数据格式转换
4. 高性能:优化的数据传输性能
5. 易于集成:与大数据平台无缝集成

# 查看OGG for Big Data版本
cd /GoldenGate/app
./ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 23.0.0.0.0
Build 001

GGSCI (fgedu.net.cn) 1> INFO ALL

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING
EXTRACT RUNNING E_HIVE 00:00:05 00:00:00
REPLICAT RUNNING R_HIVE 00:00:07 00:00:02

1.2 Hive数据仓库架构

Hive是基于Hadoop的数据仓库工具,用于存储和处理大规模结构化数据。

Hive架构:
1. 元数据存储:Metastore存储表结构
2. 数据存储:HDFS存储实际数据
3. 查询引擎:HiveQL查询语言
4. 执行引擎:MapReduce、Tez、Spark
5. 数据格式:支持多种数据格式

# 连接Hive
hive

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Hive Session ID = fgedu_20240115100000
Logging initialized using configuration in jar:file:/opt/hive/lib/hive-common-3.1.2.jar!/hive-log4j2.properties Async: true
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.

hive> SHOW DATABASES;
OK
default
fgedu_dw
Time taken: 2.1 seconds, Fetched: 2 row(s)

1.3 OGG与Hive集成原理

OGG与Hive集成通过OGG for Big Data组件实现,将Oracle数据实时同步到Hive表。

集成原理:
1. 数据捕获:Extract捕获Oracle变更
2. 数据传输:Trail文件传输数据
3. 格式转换:Replicat转换数据格式
4. 数据写入:写入Hive表
5. 元数据更新:更新Hive元数据

风哥提示:OGG与Hive集成需要配置Hive连接参数和数据格式。

Part02-生产环境规划与建议

2.1 OGG与Hive集成架构规划

根据业务需求,设计合理的OGG与Hive集成架构。

架构规划:
1. 源端架构:Oracle数据库
2. 中间层:OGG for Big Data
3. 目标端:Hive数据仓库
4. 网络架构:高速网络连接
5. 存储架构:HDFS分布式存储

# 查看Hive表结构
hive> USE fgedu_dw;

OK
Time taken: 0.5 seconds

hive> SHOW TABLES;

OK
fgedu_orders
fgedu_products
fgedu_customers
Time taken: 0.8 seconds, Fetched: 3 row(s)

2.2 Hive表结构设计规划

设计适合OGG同步的Hive表结构。

表结构设计:
1. 分区表:使用分区提高查询性能
2. 分桶表:使用分桶提高数据分布
3. 数据格式:选择合适的数据格式
4. 存储格式:选择高效的存储格式
5. 压缩格式:使用压缩减少存储

2.3 数据格式转换规划

规划Oracle到Hive的数据格式转换策略。

格式转换:
1. 数据类型映射:Oracle到Hive类型映射
2. 日期格式:日期时间格式转换
3. 字符编码:字符编码转换
4. NULL处理:NULL值处理策略
5. 特殊字符:特殊字符处理

Part03-生产环境项目实施方案

3.1 OGG for Big Data安装配置

安装和配置OGG for Big Data组件。

# 创建Hive表
hive> CREATE TABLE IF NOT EXISTS fgedu_dw.fgedu_orders (
order_id BIGINT,
customer_id BIGINT,
order_date STRING,
order_status STRING,
total_amount DECIMAL(10,2),
create_time STRING,
update_time STRING
)
PARTITIONED BY (dt STRING)
STORED AS ORC
TBLPROPERTIES (‘orc.compress’=’SNAPPY’);

OK
Time taken: 5.2 seconds

# 创建Extract进程
GGSCI (fgedu.net.cn)> ADD EXTRACT E_HIVE, INTEGRATED TRANLOG, BEGIN NOW

EXTRACT added.

# 添加Trail文件
GGSCI (fgedu.net.cn)> ADD EXTTRAIL /GoldenGate/app/dirdat/hv, EXTRACT E_HIVE, MEGABYTES 500

EXTTRAIL added.

# 编辑Extract参数
GGSCI (fgedu.net.cn)> EDIT PARAMS E_HIVE

— Hive Extract配置
EXTRACT E_HIVE
USERID fgedu, PASSWORD fgedu123
EXTTRAIL /GoldenGate/app/dirdat/hv

— 表映射配置
TABLE fgedu01.fgedu_orders;
TABLE fgedu01.fgedu_products;
TABLE fgedu01.fgedu_customers;

3.2 OGG to Hive同步配置

配置OGG到Hive的数据同步。

# 创建Replicat进程
GGSCI (fgedu.net.cn)> ADD REPLICAT R_HIVE, EXTTRAIL /GoldenGate/app/dirdat/hv

REPLICAT added.

# 编辑Replicat参数
GGSCI (fgedu.net.cn)> EDIT PARAMS R_HIVE

— Hive Replicat配置
REPLICAT R_HIVE
TARGETDB LIBFILE libggjava.so SET property=dirprm/hive.props

— Hive连接配置
REPORTCOUNT EVERY 100 RECORDS, RATE
GROUPTRANSOPS 10000

— 表映射配置
MAP fgedu01.fgedu_orders, TARGET fgedu_dw.fgedu_orders;
MAP fgedu01.fgedu_products, TARGET fgedu_dw.fgedu_products;
MAP fgedu01.fgedu_customers, TARGET fgedu_dw.fgedu_customers;

# 创建Hive属性文件
vi /GoldenGate/app/dirprm/hive.props

gg.handlerlist=hivehandler
gg.handler.hivehandler.type=hive
gg.handler.hivehandler.HiveKerberosPrincipal=fgedu@FGEdu.NET.CN
gg.handler.hivehandler.HiveKerberosKeytab=/etc/security/keytabs/fgedu.keytab
gg.handler.hivehandler.HiveMetastoreURI=thrift://hiveserver:9083
gg.handler.hivehandler.HiveServer2JDBCURL=jdbc:hive2://hiveserver:10000/fgedu_dw
gg.handler.hivehandler.HiveAuthType=KERBEROS
gg.handler.hivehandler.HiveJDBCDriver=org.apache.hive.jdbc.HiveDriver
gg.handler.hivehandler.HivePartitionByDt=true
gg.handler.hivehandler.HivePartitionByDtFormat=yyyy-MM-dd
gg.handler.hivehandler.HivePartitionByDtColumn=dt
gg.handler.hivehandler.HiveWriteMode=insert

3.3 数据格式转换配置

配置Oracle到Hive的数据格式转换。

# 创建数据格式转换配置
vi /GoldenGate/app/dirprm/hive_format.props

# 数据格式转换配置
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn

# 日期格式转换
gg.handler.hivehandler.DateFormat=yyyy-MM-dd HH:mm:ss

# 时间戳格式转换
gg.handler.hivehandler.TimestampFormat=yyyy-MM-dd HH:mm:ss.SSS

# NULL值处理
gg.handler.hivehandler.NullValueHandling=replace
gg.handler.hivehandler.NullReplacementString=

# 字符编码
gg.handler.hivehandler.Charset=UTF-8

# 批量提交
gg.handler.hivehandler.BatchSize=1000
gg.handler.hivehandler.CommitInterval=10000

Part04-生产案例与实战讲解

4.1 Oracle到Hive数据同步实战

本案例展示Oracle到Hive的数据同步。

# 启动Extract进程
GGSCI (fgedu.net.cn)> START EXTRACT E_HIVE

Sending START request to MANAGER …
EXTRACT E_HIVE starting

Extract started successfully.

# 启动Replicat进程
GGSCI (fgedu.net.cn)> START REPLICAT R_HIVE

Sending START request to MANAGER …
REPLICAT R_HIVE starting

Replicat started successfully.

# 插入测试数据
sqlplus fgedu/fgedu123@fgedudb01

SQL*Plus: Release 19.0.0.0.0

Connected.

SQL> INSERT INTO fgedu01.fgedu_orders (
order_id, customer_id, order_date,
order_status, total_amount, create_time, update_time
) VALUES (
20240001, 500123, SYSDATE,
‘PENDING’, 1500.00, SYSDATE, SYSDATE
);

1 row created.

# 提交事务
SQL> COMMIT;

Commit complete.

# 查看Hive数据
hive> SELECT * FROM fgedu_dw.fgedu_orders WHERE order_id = 20240001;

OK
20240001 500123 2024-01-15 10:00:00 PENDING 1500.00 2024-01-15 10:00:00 2024-01-15 10:00:00 2024-01-15
Time taken: 2.5 seconds, Fetched: 1 row(s)

4.2 实时数据流到Hive实战

展示实时数据流到Hive的实现。

# 查看同步延迟
GGSCI (fgedu.net.cn)> LAG REPLICAT R_HIVE

Sending LAG request to REPLICAT R_HIVE …

REPLICAT R_HIVE
Lag 00:00:05
At 2024-01-15 10:35:00

# 查看统计信息
GGSCI (fgedu.net.cn)> STATS REPLICAT R_HIVE, TOTAL

Replicat R_HIVE statistics:

Total inserts 1,256,789
Total updates 456,234
Total deletes 89,567
Total operations 1,802,590

Avg operations/sec: 47.7
Peak operations/sec: 156

4.3 增量数据同步到Hive实战

展示增量数据同步到Hive的实现。

# 批量插入数据
SQL> INSERT INTO fgedu01.fgedu_orders (
order_id, customer_id, order_date,
order_status, total_amount, create_time, update_time
) SELECT
20240000 + ROWNUM,
500000 + MOD(ROWNUM, 1000),
SYSDATE – MOD(ROWNUM, 30),
CASE MOD(ROWNUM, 4)
WHEN 0 THEN ‘PENDING’
WHEN 1 THEN ‘PROCESSING’
WHEN 2 THEN ‘SHIPPED’
WHEN 3 THEN ‘COMPLETED’
END,
1000 + MOD(ROWNUM, 5000),
SYSDATE – MOD(ROWNUM, 30),
SYSDATE – MOD(ROWNUM, 30)
FROM dual
CONNECT BY LEVEL <= 10000;

10000 rows created.

# 提交事务
SQL> COMMIT;

Commit complete.

# 等待同步完成
sleep 30

# 等待30秒

# 查看Hive数据量
hive> SELECT COUNT(*) FROM fgedu_dw.fgedu_orders;

OK
10001
Time taken: 15.2 seconds, Fetched: 1 row(s)

Part05-风哥经验总结与分享

5.1 OGG与Hive集成最佳实践

基于实际项目经验,总结OGG与Hive集成的最佳实践。

最佳实践:
1. 表结构设计:设计合理的Hive表结构
2. 分区策略:使用分区提高性能
3. 数据格式:选择合适的数据格式
4. 批量处理:批量处理提高效率
5. 监控告警:建立完善的监控

风哥提示:Hive表建议使用ORC格式和SNAPPY压缩,提高存储和查询效率。

5.2 大数据同步性能优化经验总结

总结大数据同步性能优化的经验和技巧。

优化经验:
1. 批量处理:批量处理提高效率
2. 并行处理:并行处理提高吞吐
3. 数据压缩:压缩数据减少传输
4. 分区优化:优化分区策略
5. 网络优化:优化网络配置

5.3 常见问题与解决方案

汇总OGG与Hive集成的常见问题及解决方案。

常见问题与解决方案:
1. 连接失败:检查Hive连接配置
2. 数据延迟:优化网络和配置
3. 格式错误:检查数据格式转换
4. 权限问题:检查Hive权限
5. 性能问题:优化配置和硬件

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息