如何使用Hive公开Hadoop作业和工作流元数据

时间:2017-02-17 16:24:38

标签: hadoop cloudera oozie

我想要做的是使工作流和作业元数据(如开始日期,结束日期和状态在蜂巢表中)可供BI工具用于可视化目的。我希望能够监控某个工作流程在某些时间内是否失败,成功率,......

为此,我需要访问Hue能够在作业浏览器和Oozie仪表板中显示的相同数据。我正在寻找的工作流程,例如名称,提交者,状态,开始和结束时间。我想要这个的原因是在我看来这个工具缺乏一般的概述和良好的搜索。 我的想法是,一旦我找到这些数据,我将直接 - 或通过一些处理步骤 - 将其加载到Hive中。

我希望看到的问题得到解答:

  1. 这些数据是存储在HDFS中还是分散在本地数据节点中?
  2. 如果它存储在HDFS中。我在哪里可以找到它?如果它存储在本地数据节点中,Hue如何找到并显示它?
  3. 假设我可以访问数据。我会以什么格式期待这些数据。这是存储在一般日志文件中还是我可以期待一些结构化数据?
  4. 我正在使用CDH 5.8

2 个答案:

答案 0 :(得分:1)

如果您想跟踪oozie中安排的工作状态,您应该使用oozie RESTful APIJavaAPI。我没有使用Hue版本操作Oozie,但我猜它仍然在场景后面使用rest api。它为您提供了所有必要的信息,您可以创建一些服务来消耗这些数据并将其推送到Hive表中。

另一种选择是访问Oozie数据库。您可能知道Oozie会保留一些RDBMS中有关预定作业的所有数据,如MqSql或Postgres。您可以通过某些JDBC连接器使用此信息。实际上,一种有趣的方法是尝试将这些信息作为一组外部表直接链接到Hive JDBCStorageHandler。不确定它是否有效,但值得尝试。

答案 1 :(得分:1)

如果通过Oozie之外的其他方式提交工作,我的方法将无济于事。

我们已经通过Oozie Java API从oozie服务器收集了所有日志,并通过协调器信息进行迭代以获取所需信息。

您需要思考,需要检索哪种信息。

  1. 如果您通过Bundle提交了所有工作,那么请从捆绑到协调员,然后到工作流程查找信息。
  2. 如果您想获得所有协调员信息,那么只需使用协调员号码调用api即可携带并获取所需信息。
  3. 然后我们将获取的结果加载到hive表中,然后可以过滤失败或超时协调器的结果。各种其他参数。

    您可以开始查看Oozie网站提供的示例: - https://oozie.apache.org/docs/3.2.0-incubating/DG_Examples.html#Java_API_Example]