1 目标库配置

创建HDFS目录并赋权
hdfs dfs -mkdir hdfs_path/zcbus
hdfs dfs -chmod 777 hdfs_path/zcbus

注:对于拥有kerboros认证的HDFS环境,在创建对应的目录权限后,请将krb5.conf和krb5.keytab配置文件复制到软件工作目录当中

2 配置说明

2.1 特殊属性通道参数说明

  • 发送全量数据时,在通道属性处修改MERGE_KAFKA_MESSAGE_MAX_LEN参数提升效率

    • 参数描述:
      • 此参数可以指定Merge后数据包的大小,单位M,最小为5M,最大上限根据数据库类型有所不同,建议为128M。
      • 此参数修改后,需要重启服务才能生效。
  • 开启数据延迟加载real_delay_load_max和real_delay_load_min,配置增量同时只加载1张表real_load_table_count_at_once

    • 参数描述:
        (1)增量延迟加载最大时间,单位为分钟,默认为0,不延迟。real_delay_load_min和real_delay_load_max必须同时设置,而且real_delay_load_max需要大于real_delay_load_min。 如果(当前时间-kafka里数据的时间) <= real_delay_load_min,则暂时不加载,等到(当前时间-kafka里数据的时间) > real_delay_load_max启动加载,直到(当前时间-kafka里数据的时间) <= real_delay_load_min暂停加载,进入下一轮等待。
        (2)增量延迟加载最小时间,单位为分钟,默认为0,不延迟。
        (3)增量时同时装载的表个数,默认为0,所有的表一起装载。

备注:

  当目标库HDFS时,建议先通过DORIS将全量及增量数据进行整合,再通过订阅-数据表页面的快照功能,将全量数据推送至HDFS,尽量减少文件碎片。详情请见维护文档-数据订阅-大数据-DORIS

2.2 KERBEROS认证

如客户环境为zookeeper管理的hive集群模式,在zookeeper认证中 采用KERBEROS三段式认证方式:principal=hadoop.hadoop.com@HADOOP.COM ;通过zookeeper后 zookeeper自动将principal改为dmo@HADOOP.COM,数据上传HDFS仍需要再次进行KERBEROS 认证。
注意:

  • (1) principal大小写敏感,且时差必须在五分钟之内;
  • (2) 数据库配置时 host填写如下信息:jdbc:hive2://10.29.43.39:21066/default;principal=hive/hadoop.hadoop.com@HADOOP.com;
    port,user,password置空即可—因为采用KERBEROS认证 不再需要输入用户密码等信息 ;
  • (3) 配置HDFS时注意dfs.data.transfer.protection参数 要求两端保持一致
  • (4)在对应容器当中的config目录下创建个{customerid}.ini,里面写上如下内容
    [kerberos]
    hadoop.rpc.protection=authentication,privacy

2.2.1 在后台程序中:可用如下内容检测hdfs连接是否正常

[root@a6647b3b0b79 jar]# java -cp zcbusService.jar com.zcbus.connector.HadoopAccess -h
ZCBUS_CACHE_PATH=/usr/local/zcbus/cache
ZCBUS_CLUSTERID=0
Usage: 
       -h                              help
       -hdfs ip:port                   hadoop ip port
       -user                           hadoop user
       -principal dmo@HADOOP.COM       for kerberos
       -customerid 10000               for kerberos make keytab file name
       -put /usr/1.txt /hadoop/1.txt   upload file to hdfs

例如:
上传本地文件:
java -Duser.timezone=Asia/Shanghai -Djava.security.krb5.conf=/usr/local/zcbus/config/10040_krb5.conf -cp zcbusService.jar com.zcbus.connector.HadoopAccess -hdfs 10.29.34.40:25000 -principal dmo@HADOOP.COM -customerid 10004 -put /usr/local/zcbus/cache/db_service10019/1.txt hdfs://hacluster/user/hive/warehouse/test.db/

查看HDFS文件是否上传成功:
java -Duser.timezone=Asia/Shanghai -Djava.security.krb5.conf=/usr/local/zcbus/config/10040_krb5.conf -cp zcbusService.jar com.zcbus.connector.HadoopAccess -hdfs pass-bigdata-hadoop-002.chinatelecom.cn:8020 -principal zcbus@CHINATELECOM.CN -customerid 10040 -ls  /warehouse/tablespace/external/hive/stgb_acct.db/bill_end/eday_id=20240430/year=2023/

2.3 配置目标数据库参数列表

参数名称 默认值 参数描述
host 127.0.0.1 hdfs地址
port 8020 hdfs端口
hdfs_path /tmp 上传文件的目标hdfs路径,路径内容支持使用用户名、表名或bsd里的时间进行替换,如:/data1/#schema_name#/#table_name#/eday_id=#YYYYMMDD#/year=#YYYY#
service_host 127.0.0.1 API服务地址
service_port 10000 API服务端口
authentication NULL 认证方式,目前支持kerberos,kerberos认证,需要将认证用到的文件krb5.conf和krb5.keytab拷贝到config目录下,为了防止冲突,加customerid前缀进行区分,比如customerid是10002的订阅服务使用的配置文件,修改为10002_krb5.conf和10002.keytab
principal NULL kerberos认证使用,注册过KDC的客户端名称
jdbc_mode 0 设置为开启(1)时,使用jdbc模式装载,自动忽略service_host和service_port的设置
db_type HDFS 数据库类型
文档更新时间: 2025-01-06 22:37   作者:操李红