關於tez-ui的"All DAGs"和"Hive Queries"頁面信息為空的問題解決過程


近段時間發現公司的HDP大數據平台的tez-ui頁面不能用了,頁面顯示為空,導致通過hive提交的sql不能方便地查找到Yarn上對應的applicationId,只能通過beeline的屏幕輸出信息、hiveserver2的日志、yarn的日志等一步步去查找,非常麻煩(查找方法見上一篇博客“如何找到Hive提交的SQL相對應的Yarn程序的applicationId”)。因此下決心解決這個問題。

於是找時間去了解了一下tez-ui的原理,它其實是Tez項目下的一個子項目(web項目),可以單獨部署在諸如tomcat之類的應用服務器下。tez-ui上顯示的tez程序信息實際是來自yarn的timeline service服務,前者通過后者提供的REST接口獲取程序的metrics信息。Yarn Timeline Service的架構如下圖所示:

我們的集群tez-ui和timeline service是在不同的機器上面,比如tez-ui部署在A機器,timeline service部署在B機器。

首先檢查了A、B機器,發現它們的時間不一致,其實是timeline service所在的B機器的時間不正確。進一步檢查發現B機器的NTP服務關閉了,因此開啟B機器的NTP服務,自動同步時間。

其次,修改tez所在機器的tez-site.xml配置文件,修改下列配置項為對應的值。這一步可以解決"All DAGs”頁面不顯示信息的問題。

tez.am.tez-ui.history-url.template __HISTORY_URL_BASE__?viewPath=/#/tez-app/__APPLICATION_ID__
tez.history.logging.service.class org.apache.tez.dag.history.logging.ats.ATSV15HistoryLoggingService

再次,修改hiveserver2服務所在機器的hive-site.xml配置文件,修改下列配置項為對應的值,然后逐個重啟hiveserver2服務。這一步可以解決“Hive Queries”頁面不顯示信息的問題。

hive.exec.failure.hooks: org.apache.hadoop.hive.ql.hooks.ATSHook
hive.exec.post.hooks: org.apache.hadoop.hive.ql.hooks.ATSHook
hive.exec.pre.hooks: org.apache.hadoop.hive.ql.hooks.ATSHook

最后,重啟A機器上的tez-ui程序和B機器上的timeline server服務。前者部署在tomcat下,只需要重啟下tomcat即可。后者通過如下命令重啟。

./yarn-daemon.sh stop timelineserver
./yarn-daemon.sh start timelineserver

最終,我們打開tez-ui頁面,地址是http://A:18088/tez-ui,可以看到現在頁面可以正確展示"All DAGs"和"Hive Queries"信息了。

"All DAGs"頁面:

 "Hive Queries"頁面:

 


免責聲明!

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



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