datax能支持两个带KB认证的hive吗
采集一个带KB认证的hive数据到另一个带KB认证的hive中。求大佬指导。 { "job": { "setting": { "speed": { "channel": 3 }, "errorLimit": { "record": 0, "percentage": 0.02 } }, "content": [ { "reader": { "name": "hdfsreader", "parameter": { "defaultFS": "hdfs://xxx.xxx.xx.4:8020", "fileType": "orc", "path": "/user/hive/warehouse/test.db/test67", "fileName": "000000_0", "fieldDelimiter": "\u0001", "haveKerberos": true, "kerberosKeytabFilePath": "/etc/keytab/hive.keytab", "kerberosPrincipal": "hive/[email protected]", "nullFormat": "\N", "skipHeader": false, "column": [ { "index": "0", "type": "Long" } ] } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://xxx.xxx.xxx.5:8020", "fileType": "orc", "path": "/user/hive/warehouse/test.db/book", "fileName": "cw", "writeMode": "append", "haveKerberos": true, "kerberosKeytabFilePath": "/etc/keytab/hive.keytab", "kerberosPrincipal": "hive/[email protected]", "fieldDelimiter": "\u0001", "nullFormat": "\N", "column": [{ "name": "id", "type": "int" }] } } } ] } }
因为一台机器只能认证一个hive,无法同时连两个KB认证的hive
两个key放不同路径不行吗?
两个key放不同路径不行吗?
krb5.conf 文件不一样 属于两套hdfs
同问
问题的本质原因是需要通过JVM级别的变量:java.security.krb5.conf指定当前使用的krb5.conf文件,这就需要满足条件:
- Reader和Writer分别是两个JVM进程。
- Reader和Writer是顺序执行的。
之一,其中,"Reader和Writer是顺序执行的。"可以通过代码:
System.setProperty("java.security.krb5.conf", "/path/to/krb5.conf");
在从源Hive读取数据后动态切换当前使用的krb5.conf配置文件并在目标Hive的KDC认证后写入数据。
以上,看起来通用插件都不能很好解决问题。
从开发层面不好解决,可以考虑从运维层面解决,通过kerberos提供的Cross-realm Authentication,实现在一个KDC上认证两个KDC域,这样在应用程序侧仅需认为两套Hive属于一个认证集群做认证即可。