对于定时或将某一时刻的数据同步到大数据平台,如hdfs或者hive的需求,建议将生产数据实时同步到DORIS,再使用软件的快照推动到HDFS或者hive中。
1.配置快照
订阅客户端目标库为DORIS的数据表里有快照功能:
备注:
月周期:快照推送的日期。空值表示每天执行。可以多选。
天周期:快照推送的时间。为1表示01:00:00推送。可以多选。
点击添加子任务配置具体的推送内容及目标信息,如HDFS配置,HDFS路径等
备注:
任务目标库:点击可以看到此客户端下已经配置的HDFS,也可以点击添加新增,新增页面如下图及说明。当此项配置不为空时,快照触发时软件通过tableexp,tableimp按照"执行SQL"项的配置导出成固定大小的txt文件,再通过hdfs客户端或者zcbusService.jar服务将生成的txt文件推送到HDFS,目前只支持HDFS推送。当此项配置为空时,快照触发时软件在DORIS数据里执行"执行SQL"的内容,不进行tableexp和tableimp以及推送HDFS的步骤,此时可利用DORIS自带的功能往HDFS和hive推送数据。
目标库名:在目标库里的数据库名,后边配置的SQL中可以通过#table_schema#进行变量传递。
目标表名:在目标库里的表名,后边配置的SQL中可以通过#table_name#进行变量传递。
依赖键:
前置条件:初始值或者上次快照任务执行的"后置条件值SQL"的结果,可通过#zcbus_min#进行变量传递。
后置条件值SQL:通过SQL获取一个值,通通过#zcbus_max#进行变量传递。
执行SQL前执行:执行快照推送逻辑之前在DORIS数据库里执行的SQL,比如在DORIS数据库生成一个快照表(create table XXXX as select * from XXXXX).
执行SQL:具体的推送逻辑。
执行SQL后执行:执行快照推送逻辑完成之后在DORIS数据库里执行的SQL,比如在DORIS数据库删除快照表(drop table XXXX)
目标端装载之前执行:执行快照推送逻辑之前在目标库里执行的命令或SQL。
目标端装载之后执行:执行快照推送逻辑完成之后在目标库里执行的命令或SQL。
备注:
host:HDFS的IP地址或者域名,使用域名时需要在/etc/hosts下做IP地址和域名的配置。
port:HDFS的端口号
hdfs_path:推送的路径,推送时#table_name#会替换成上步中配置的目标表名,#YYYYMMDD#会替换成上次任务时间的年月日,即管理库中bus_client_product_object_task中的start_time时间。
service_host:zcbusService.jar服务所在的ip地址,一般在当前容器下创建,填写容器名即可。
service_port:zcbusService.jar服务的号。
创建zcbusService.jar服务
任务目标库不为空的快照配置实例:
任务目标库为空的快照配置实例:
2.订阅到doris时ZCBUS参数配置
需确认以下几个参数:
table_properties: ENGINE=OLAP UNIQUE KEY(#zcbus_key#) COMMENT #zcbus_comment# DISTRIBUTED BY HASH(#zcbus_distribute_key#) BUCKETS 10 PROPERTIES ("replication_num" = "1","enable_unique_key_merge_on_write" = "true","store_row_column" = "false")
ZCBUS_SOURCE_OPTIME:1
ZCBUS_TARGET_OPTIME:1
zcbus_source_optype: 1
audit_mode:开启
3.通过zcbusSever.jar(API)方式推送hdfs时kerbors的配置
1.
将客户提供<username>.keytab文件放到容器的/usr/local/zcbus/config/<订阅节点号>.keytab,如下订阅客户端为10040的配置:
[root@594504f06cfe config]# pwd
/usr/local/zcbus/config
[root@594504f06cfe config]# ls
10040.ini 10040.keytab 10040_krb5.conf auxconf
2.krb5.conf配置
将客户提供的krb5.conf文件放到容器的/usr/local/zcbus/config/<订阅节点号>_krb5.conf,如下订阅客户端为10040的配置:
[root@594504f06cfe config]# pwd
/usr/local/zcbus/config
[root@594504f06cfe config]# ls
10040.ini 10040.keytab 10040_krb5.conf auxconf
3.配置连接认证方式
在/usr/local/zcbus/config目录下编辑<订阅节点号>.ini,如下订阅客户端为10040的配置:
[root@594504f06cfe config]# pwd
/usr/local/zcbus/config
[root@594504f06cfe config]# ls
10040.ini 10040.keytab 10040_krb5.conf auxconf
[root@594504f06cfe config]# cat 10040.ini
[kerberos]
hadoop.rpc.protection=authentication,privacy
4.hdfs需要域名登录的,容器内需配置/etc/hosts解析,具体根据客户提供的各节点的信息进行配置。
4.通过hdfs客户端命令推送时kerbors的配置
1.需在容器内安装hdfs客户端以及kinit
2.将客户提供的krb5.conf文件放到容器的/etc/krb5.conf
3.将客户提供的hdfs的配置文件hdfs-site.xml和core-site.xml放到容器内安装的hdfs客户端的指定位置
4.认证
source /usr/local/zcbus/bin/TDH-client/init.sh
/usr/bin/kinit -kt /usr/local/zcbus/config/10009.keytab kafka@CETDH
5.通过在doris中执行SQL推送时kerbors的配置
1.根据客户给的ip和节点对应关系编辑be和fe各服务器的/etc/hosts文件。
2.客户开通doris所有be,fe节点到HDFS集群的网络策略,提供krb5.conf,
3.将krb5.conf文件放到所有的be和fe服务器的/etc/目录下。或者采用如下方式自定义krb5.conf位置:
- FE:在 fe.conf 配置 JVM 参数 -Djava.security.krb5.conf。
- BE:在 be.conf 使用 kerberos_krb5_conf_path 配置项,默认值为/etc/krb5.conf。
4.将
5.推送SQL(集群高可用方式)
SELECT * FROM payment_11809
INTO OUTFILE "hdfs:///warehouse/tablespace/external/hive/stgb_acct.db/acct_item_end/eday_id=20241201/year=tmp/1.txt"
FORMAT AS PARQUET
PROPERTIES
(
"fs.defaultFS"="hdfs://hacluster/",
"hadoop.username" = "hadoop",
"dfs.nameservices"="hacluster",
"dfs.ha.namenodes.hacluster"="n1,n2",
"dfs.namenode.rpc-address.hacluster.n1"="pass-bigdata-hadoop-001.chinatelecom.cn:8020",
"dfs.namenode.rpc-address.hacluster.n2"="pass-bigdata-hadoop-002.chinatelecom.cn:8020",
"dfs.client.failover.proxy.provider.hacluster"="org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider",
"dfs.namenode.kerberos.principal"="zcbus@CHINATELECOM.CN",
"hadoop.security.authentication"="kerberos",
"hadoop.kerberos.principal"="zcbus@CHINATELECOM.CN",
"hadoop.kerberos.keytab"="/home/zcbus/10040.keytab",
"column_separator" = "\\x01",
"line_delimiter" = "\n"
);
解释:
SELECT * FROM payment_11809 :生成快照的SQL。
INTO OUTFILE:后边配置HDFS路径,可指定ip或者通过后边参数指定,如下写法:"hdfs://192.168.2.37:8020/path/to/result_"或者"hdfs:///warehouse/tablespace/external/hive/stgb_acct.db/"
FORMAT AS PARQUET: 推动到hdfs的文件格式,支持PARQUET,CSV,ORC三种模式。
PROPERTIES:hdfs相关认证信息,子项解释如下:
"fs.defaultFS":对应core-site.xml中的<name>fs.defaultFS</name>选项;
"hadoop.username":默认使用hadoop;
"dfs.nameservices":对应hdfs-site.xml中的<name>dfs.internal.nameservices</name>选项;
"dfs.ha.namenodes.hacluster":不用更改,如果更改了,后边两名字中对应的n1和n2也需要进行变动。
"dfs.namenode.rpc-address.hacluster.n1"和"dfs.namenode.rpc-address.hacluster.n2":对应hdfs-site.xml中的<name>dfs.namenode.http-address.hacluster.XXX</name>选项;
"dfs.namenode.kerberos.principal":客户提供的<username>.keytab对应的用户名;
"hadoop.security.authentication"="kerberos":保持不变;
"hadoop.kerberos.principal":客户提供的<username>.keytab对应的用户名;
"hadoop.kerberos.keytab":客户提供的<username>.keytab在be和fe各服务器对应的文件名。
"column_separator": 列的分割符。hive默认的0x01采用的写法就是"column_separator" = "\\x01"。
"line_delimiter": 行的分隔符。
文档更新时间: 2025-03-30 22:55 作者:wangyanjie