1. 程式人生 > >關於tez-ui的"All DAGs"和"Hive Queries"頁面資訊為空的問題解決過程

關於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"頁面:

&n