一次解決spark history server日志不見


通過cloudera的舊版VM(centos6版本)跑spark,之后,想看一下日志研究一下job,stage以及task,壓力很大的發現完全沒有日志,180088頁面打開后:

Event log directory: hdfs://quickstart.cloudera:8020/user/spark/applicationHistory
No completed applications found!

  回過頭來還是真心感到spark做得人性化,因為在頁面提示中給了兩個很重要的信息:一個是spark的日志路徑,一個是提示可能是因為權限導致日志無法顯示(這個提示沒有在貼上面),否則解決這個問題可能要花費更多的時間

  后來網調發現是因為我使用的是root用戶執行的;生成到日志文件到此目錄下hdfs://quickstart.cloudera:8020/user/spark/applicationHistory,到此目錄下一看用戶是root:supergroup;改成spark;再刷http://quickstart.cloudera:18088/即可看到歷史任務了;原來是沒有權限讀入。該權限即可;
  之前為什么沒有這種情況,之前的集群都沒有root用戶(只要在/user下面添加一個root即可添加hadoop用戶),所以運行的時候都報錯,於是切換為hdfs用戶;hdfs用戶生成的文件是hdfs的;
  但是為什么會有問題?調查得知supergroup一般都是和系統的hadoop組綁定;通過下面的指令查看一下hadoop里面的組員

1     grep 'hadoop:' /etc/group
2     lid -g hadoop

 

  你會發現做為hadoop組即superuser組只包含hdfs,hive等並沒有spark;但是對於applicationHistory文件夾下權限是-rwxrwx---   1 root supergroup,也就是只有root用戶,以及supergroup具有全部權限,其他沒有;所以即使是hdfs創建的文件仍然無法被spark讀取,因為spark既不是hdfs,也沒有包含在supergroup組中;
  除非把spark放入到supergroup組中。調查說是和hadoop組綁定,那我就在hadoop組中添加了spark(需要首先啟用spark用戶);但是沒有毛用。
  怎么放?Hadoop的HDFS自身是沒有用戶組控制,用的是操作系統的用戶組,這樣就意味着:supergroup和本地操作系統用戶是有映射關系的,就是在hdfs的配置項中,dfs.permissions.supergroup, dfs.permissions.superusergroup(這兩個其實是一個配置內容),默認是supergroup,是的,默認是supergroup,你需要做的是修改為本地一個組,比如hadoop。然后重啟HDFS組件,spark服務也一並重啟吧。
  之后你再向hadoop組中添加spark,再刷頁面,就發現日志可以看到了。

  這個問題的關鍵在於要明白supergroup是和Linux一個組映射;向映射組中添加即可,但是要進行配置映射。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM