一、概述
使用DataX進行數據同步時,如果沒有開啟kerberos,需要配置hdfsUser,不然會報權限錯誤;錯誤信息如下
二、錯誤分析
查看DataX的HdfsWriter插件,發現它底層的實現邏輯是:如果沒有開啟kerberos,那么會使用hdfsUser用戶將數據寫入到HDFS中;如果hdfsUser用戶名為null,那么會使用同步機器的當前用戶將文件寫入到HDFS系統中;如果當前用戶沒有權限寫入,那么就會報錯。如果集群開啟了kerberos,那么使用kerberos協議和keytab用戶進行文件讀取。
DataX實現邏輯如下:
三、解決方案
1、當hadoop集群開啟kerberos時,需要將KerberosConfFilePath、KerberosPrincipal和KerberosKeytabFilePath都配置完整;hdfsUser可以不配置,即便是配置了底層也不會使用
2、當hadoop集群沒有開啟kerberos,需要配置hdfsUser,因為當進行文件讀取時會將該用戶加入到用戶組,使用該用戶進行文件讀寫操作;FileSystem原理如下