目标端:
GGSCI (10.0.0.2) 13> info mgr Manager is running (IP port 10.0.0.2.7809, Process ID 8242). GGSCI (10.0.0.2) 14> info r2hdfs REPLICAT R2HDFS Last Started 2016-11-09 16:45 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:02 ago) Process ID 4733 Log Read Checkpoint File /data/gg/dirdat/tc000000 First Record RBA 0所有的状态均是RUNNING即可。(当然也可以使用info all来查看所有进程状态)
测试同步更新效果测试方法比较简单,直接在源端的数据表中insert,update,delete操作即可。由于Oracle到Hadoop集群的同步是异构形式,目前尚不支持truncate操作。
源��进行insert操作
查看源端trail文件状态
[oracle@VM_0_25_centos dirdat]$ ls -l /u01/gg/dirdat/tc* -rw-rw-rw- 1 oracle oinstall 1180 Nov 9 17:05 /u01/gg/dirdat/tc000000查看目标端trail文件状态
[root@10 dirdat]# ls -l /data/gg/dirdat/tc* -rw-r----- 1 root root 1217 Nov 9 17:05 /data/gg/dirdat/tc000000查看HDFS中是否有写入
hadoop fs -ls /gg/replication/hive/tcloud.t_ogg -rw-rw-r-- 3 root hdfs 110 2016-11-09 17:05 /gg/replication/hive/tcloud.t_ogg/tcloud.t_ogg_2016-11-09_17-05-30.514.txt注意:从写入到HDFS的文件内容看,文件的格式如下:
ITCLOUD.T_OGG2016-11-09 09:05:25.0670822016-11-09T17:05:30.51200000000000000000001080ID1TEXT_NAMEtest很明显Oracle的数据已准实时导入到HDFS了。导入的内容实际是一条条的类似流水日志(具体日志格式不同的传输格式,内容略有差异,本例使用的delimitedtext。格式为操作符 数据库.表名 操作时间戳(GMT+0) 当前时间戳(GMT+8) 偏移量 字段1名称 字段1内容 字段2名称 字段2内容),如果要和Oracle的表内容完全一致,需要客户手动实现解析日志并写入到Hive的功能,这里官方并没有提供适配器。目前腾讯侧已实现该功能的开发。
当然你可以直接把这个HDFS的路径通过LOCATION的方式在Hive上建外表(external table)达到实时导入Hive的目的。
OGG for Big Data实现了Oracle实时同步到Hadoop体系的接口,但得到的日志目前仍需应用层来解析(关系型数据库如MySQL时OGG对应版本已实现应用层的解析,无需人工解析)。
OGG的几个主要进程mgr,extract,pump,replicate配置方便,可快速配置OGG与异构关系存储结构的实时同步。后续如果有新增表,修改对应的extract,pump和replicate进程即可,当然如果是一整个库,在配置上述2个进程时,使用通配的方式即可。
OGG到Hadoop体系的实时同步时,可在源端extract和pump进程配置不变的情况下,直接在目标端增加replicate进程的方式,增加同步目标,以下简单介绍本示例中增加同步到Kafka的配置方法。
本示例中extract,pump进程都是现成的,无需再添加。只需要在目标端增加同步到Kafka的replicate进程即可。