2017-02-17 23 views
0

我想要做的就是將工作流和作業元數據(如開始日期,結束日期和狀態)提供給配置單元表,供BI工具用於可視化目的。我希望能夠監測例如某個工作流程在某些時間段內是否失敗,成功率...如何使用Hive公開Hadoop作業和工作流元數據

爲此,我需要訪問相同的數據Hue能夠在作業瀏覽器和Oozie中顯示儀表板。例如,我正在尋找專門針對工作流程的名稱,提交者,狀態,開始和結束時間。我想這樣做的原因是,在我看來,這個工具缺乏一般概述和良好的搜索。 這個想法是,一旦我找到這些數據,我將直接或通過一些處理步驟將其加載到Hive中。

的問題,我想看看回答:

  1. 是HDFS中存儲這些數據,或者是分散在本地數據節點?
  2. 如果它存儲在HDFS中。我在哪裏可以找到它?如果它存儲在本地數據節點中,Hue如何查找並顯示它?
  3. 假設我可以訪問數據。我會以什麼格式期待這些數據。這是存儲在一般的日誌文件中,還是我可以期望有點結構化的數據?

我使用CDH 5.8

回答

1

如果通過Oozie之外的其他方式提交作業,我的方法將不會有幫助。

我們通過Oozie Java API收集了來自oozie服務器的所有日誌,並重復了協調器信息以獲取所需的信息。

你需要思考,你需要檢索什麼樣的信息。

  1. 如果您將所有通過Bundle提交的作業都從bundle發送到協調器,然後再轉到工作流以查找信息。
  2. 如果你想得到所有的協調員信息,然後簡單地調用與協調員號碼的API來帶來和獲取所需的信息。

然後我們已經將提取的結果加載到配置單元表中,然後可以篩選失敗或超時協調器的結果&各種其他參數。

您可以開始尋找Oozie網站給出的示例: - https://oozie.apache.org/docs/3.2.0-incubating/DG_Examples.html#Java_API_Example]

1

如果你想跟蹤你的工作計劃在Oozie的地位,你應該使用Oozie的RESTful APIJavaAPI。我沒有使用Hue版本操作Oozie,但我想它仍然在場景後面使用rest api。它爲您提供了所有必要的信息,您可以創建一些服務來使用這些數據並將其推送到Hive表中。

另一種選擇是訪問Oozie數據庫。正如你可能知道的,Oozie保存了有關MqSql或Postgres等RDBMS中的預定作業的所有數據。您可以通過某個JDBC連接器來使用這些信息。實際上,嘗試將這些信息直接鏈接到Hive作爲一組外部表格,雖然有JDBCStorageHandler。不知道它是否有效,但值得嘗試。