2017-06-12 93 views
0

我在scala中創建了一個spark應用程序。我從shell腳本中調用了spark提交命令由於目錄級別上的權限問題導致Spark作業失敗

我的spark應用程序正在從HDFS輸入目錄讀取文件。

我用用戶作爲構建運行spark工作。我的火花的工作是試圖讀取並處理所有文件/數據/出版/源/烏龜/ tracking_id_log/TRACKING_ID_LOG_FULL

/數據/出版/源/歐米茄/ omega_tracking_log/OMEGA_LOG_FULL是由用戶的地鐵創建的目錄

地鐵和建造是在同一組名爲hadoop

我可以清楚地看到,建立用戶有讀取訪問該HDFS目錄,那麼爲什麼我會得到下面的錯誤?

Exception in thread "main" org.apache.hadoop.security.AccessControlException: Permission denied: user=build, access=READ_EXECUTE,\ 
    inode="/data/published/source/omega/omega_tracking_log/OMEGA_LOG_FULL":metro:hadoop:drwxr----- 
      at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkFsPermission(DefaultAuthorizationProvider.java:257) 
      at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.check(DefaultAuthorizationProvider.java:238) 
      at org.apache.hadoop.hdfs.server.namenode.DefaultAuthorizationProvider.checkPermission(DefaultAuthorizationProvider.java:151) 
      at org.apache.sentry.hdfs.SentryAuthorizationProvider.checkPermission(SentryAuthorizationProvider.java:174) 
      at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:138) 

以下是一個HDFS目錄

bash-4.1$ hdfs dfs -ls /data/published/source/omega/omega_tracking_log 
Found 3 items 

drwxr----- - metro hadoop   0 2017-06-12 13:12 /data/published/source/omega/omega_tracking_log/OMEGA_LOG_FULL 

如果火花想從一個HDFS目錄讀取所有文件,並進行處理,然後它我們需要有EXECUTE對HDFS目錄的訪問的訪問引發用戶以及?

+0

HDFS作品完全像一個Linux文件系統:目錄上的READ權限只是讓你讀取它的*名稱*。要*瀏覽內容*您需要EXECUTE特權。 –

+0

@Samson:這是否意味着如果一個Spark應用程序正在讀取HDFS目錄中的所有文件,那麼我們應該對該HDFS目錄執行EXECUTE訪問,並且可以讀取該HDFS目錄中的所有文件? –

+0

是的,目錄中的'r'和'x'以及內部文件中的'r'。只是運行測試! –

回答

1

此問題是由於HDFS的許可。你可以嘗試從根用戶這個

  1. 登錄 改變

    Hadoop的FS -chmod -R 777/

  2. HDFS的許可,並嘗試運行火花工作
+0

因此,您對特定和本地授權問題的解決方案是** **全局授權**!告訴管理那些必須設置細粒度授權(使用ACL)和數據訪問審覈日誌的公司... –

相關問題