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. 易于集成:与大数据平台无缝集成
cd /GoldenGate/app
./ggsci
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
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元数据
Part02-生产环境规划与建议
2.1 OGG与Hive集成架构规划
根据业务需求,设计合理的OGG与Hive集成架构。
架构规划:
1. 源端架构:Oracle数据库
2. 中间层:OGG for Big Data
3. 目标端:Hive数据仓库
4. 网络架构:高速网络连接
5. 存储架构:HDFS分布式存储
hive> USE fgedu_dw;
Time taken: 0.5 seconds
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> 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’);
Time taken: 5.2 seconds
GGSCI (fgedu.net.cn)> ADD EXTRACT E_HIVE, INTEGRATED TRANLOG, BEGIN NOW
GGSCI (fgedu.net.cn)> ADD EXTTRAIL /GoldenGate/app/dirdat/hv, EXTRACT E_HIVE, MEGABYTES 500
GGSCI (fgedu.net.cn)> EDIT PARAMS E_HIVE
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的数据同步。
GGSCI (fgedu.net.cn)> ADD REPLICAT R_HIVE, EXTTRAIL /GoldenGate/app/dirdat/hv
GGSCI (fgedu.net.cn)> EDIT PARAMS R_HIVE
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;
vi /GoldenGate/app/dirprm/hive.props
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的数据同步。
GGSCI (fgedu.net.cn)> START EXTRACT E_HIVE
EXTRACT E_HIVE starting
Extract started successfully.
GGSCI (fgedu.net.cn)> START REPLICAT R_HIVE
REPLICAT R_HIVE starting
Replicat started successfully.
sqlplus fgedu/fgedu123@fgedudb01
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
);
SQL> COMMIT;
hive> SELECT * FROM fgedu_dw.fgedu_orders WHERE order_id = 20240001;
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
REPLICAT R_HIVE
Lag 00:00:05
At 2024-01-15 10:35:00
GGSCI (fgedu.net.cn)> STATS REPLICAT R_HIVE, TOTAL
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;
SQL> COMMIT;
sleep 30
hive> SELECT COUNT(*) FROM fgedu_dw.fgedu_orders;
10001
Time taken: 15.2 seconds, Fetched: 1 row(s)
Part05-风哥经验总结与分享
5.1 OGG与Hive集成最佳实践
基于实际项目经验,总结OGG与Hive集成的最佳实践。
最佳实践:
1. 表结构设计:设计合理的Hive表结构
2. 分区策略:使用分区提高性能
3. 数据格式:选择合适的数据格式
4. 批量处理:批量处理提高效率
5. 监控告警:建立完善的监控
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
