GoldenGate实时投递数据到大数据平台(6)– HDFS

    GoldenGate可以实时将RDBMS的数据投递到HDFS中,在前面的文章中,已经配置过投递到kafka, mongodb等数据平台,本文通过OGG for bigdata的介质中自带的示例演示实时将数据写入到HDFS文件系统。

安装hadoop

安装hadoop3.0.0,设置相应的环境变量
export HADOOP_HOME=/u01/hadoop
export PATH=$PATH:$HADOOP_HOME/bin

启动hadoop

bin/hadoop namenode -format
sbin/start-all.sh

确保hadoop能正常启动,如有问题,可自行搜索文档解决。
[oracle@ol66 sbin]$ jps
11685 NodeManager
11157 SecondaryNameNode
10844 NameNode
11405 ResourceManager
12126 Jps
10959 DataNode


OGG环境准备

创建ogg投递数据到HDFS时,数据保存的目录
[oracle@ol66 sbin]$ hdfs dfs -mkdir /ogg
[oracle@ol66 sbin]$ hdfs dfs -ls /     
Found 1 items
drwxr-xr-x   - oracle supergroup          0 2018-02-27 22:58 /ogg

数据写入到/ogg/hdfs目录

hdfs dfs -mkdir /ogg/hdfs

配置OGG for bigdata需要的环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JAVA_HOME/jre/lib/amd64/server


OGG安装配置

安装ogg for bigdata软件, 进入ggsci,创建子目录
ggsci>create subdirs

退回到操作系统命令行,拷贝安装目录下 AdapterExamples/big-data/hdfs 所有文件到 dirprm/ 目录下,然后编辑hdfs.props文件。主要修改内容有如下两项

  • 根据安装的hadoop路径,修改gg.classpath中hadoop lib的路径;
  • 修改rootFilePath的属性为/ogg/hdfs,即前面建立的目录
    保存退出。hdfs.props完整的内容如下:

gg.handlerlist=hdfs

gg.handler.hdfs.type=hdfs
gg.handler.hdfs.includeTokens=false
gg.handler.hdfs.maxFileSize=1g
gg.handler.hdfs.rootFilePath=/ogg/hdfs
gg.handler.hdfs.fileRollInterval=0
gg.handler.hdfs.inactivityRollInterval=0
gg.handler.hdfs.fileNameMappingTemplate=${fullyQualifiedTableName}_${groupName}_${currentTimestamp}.txt
gg.handler.hdfs.partitionByTable=true
gg.handler.hdfs.rollOnMetadataChange=true
gg.handler.hdfs.authType=none
gg.handler.hdfs.format=delimitedtext
gg.handler.hdfs.format.includeColumnNames=true

gg.handler.hdfs.mode=tx

goldengate.userexit.timestamp=utc
goldengate.userexit.writers=javawriter
javawriter.stats.display=TRUE
javawriter.stats.full=TRUE

gg.log=log4j
gg.log.level=INFO

gg.report.time=30sec

gg.classpath=/u01/hadoop/share/hadoop/common/*:/u01/hadoop/share/hadoop/common/lib/*:/u01/hadoop/share/hadoop/hdfs/*:/u01/hadoop/share/hadoop/hdfs/lib/*:/u01/hadoop/etc/hadoop/:

javawriter.bootoptions=-Xmx512m -Xms32m -Djava.class.path=ggjava/ggjava.jar

 

详细的参数配置可参考官方文档。

重新进入GGSCI,使用示例参数和示例队列创建投递进程。
GGSCI>add replicat rhdfs, exttrail AdapterExamples/trail/tr

rhdfs.prm的内容如下:

REPLICAT rhdfs
-- Trail file for this example is located in "AdapterExamples/trail" directory
-- Command to add REPLICAT
-- add replicat rhdfs, exttrail AdapterExamples/trail/tr
TARGETDB LIBFILE libggjava.so SET property=dirprm/hdfs.props
REPORTCOUNT EVERY 1 MINUTES, RATE
GROUPTRANSOPS 10000
MAP QASOURCE.*, TARGET QASOURCE.*;


启动进程
GGSCI>start rhdfs

GGSCI (ol66) 13> info rh*

REPLICAT   RHDFS     Initialized   2018-02-27 23:37   Status STARTING
Checkpoint Lag       00:00:00 (updated 00:00:03 ago)
Process ID           12217
Log Read Checkpoint  File AdapterExamples/trail/tr000000000
                      First Record  RBA 0


GGSCI (ol66) 14> info rh*

REPLICAT   RHDFS     Last Started 2018-02-27 23:38   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:05 ago)
Process ID           12217
Log Read Checkpoint  File /u01/ogg4bd/AdapterExamples/trail/tr000000000
                      First Record  RBA 0


GGSCI (ol66) 15> info rh*

REPLICAT   RHDFS     Last Started 2018-02-27 23:38   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
Process ID           12217
Log Read Checkpoint  File /u01/ogg4bd/AdapterExamples/trail/tr000000000
                      2015-11-06 02:45:39.000000  RBA 5660

可以看到,示例数据已经全部投递完成,在HDFS上查看结果:                    

[oracle@ol66 sbin]$ hdfs dfs -ls /ogg/hdfs
Found 2 items
drwxr-xr-x   - oracle supergroup          0 2018-02-27 23:27 /ogg/hdfs/qasource.tcustmer
drwxr-xr-x   - oracle supergroup          0 2018-02-27 23:27 /ogg/hdfs/qasource.tcustord

查看目录下的文件

[oracle@ol66 sbin]$ hdfs dfs -ls /ogg/hdfs/qasource.tcustmer
Found 1 items
-rw-r--r--   1 oracle supergroup        905 2018-02-27 23:28 /ogg/hdfs/qasource.tcustmer/QASOURCE.TCUSTMER_RHDFS_2018-02-27_23-27-54.255.txt

查看具体的文件内容

[oracle@ol66 sbin]$ hdfs dfs -cat /ogg/hdfs/qasource.tcustmer/QASOURCE.TCUSTMER_RHDFS_2018-02-27_23-27-54.255.txt

image

生成的数据文件默认是CSV格式,可以指定分隔符,文件名在hdfs.props中可以配置。

官方支持的版本如下:

image

image

image

posted @ 2018-02-27 17:21  margiex  阅读(1378)  评论(1编辑  收藏  举报