当前位置: 首页 > 知识库问答 >
问题:

如何从Oozie触发的流图减少作业输出Hadoop EL计数器?

漆雕恺
2023-03-14

我正在使用Oozie触发一个流式MapReduce作业,我想为此收集以下Hadoop EL常量:

map_in:Hadoop映射器输入记录计数器名称。

map_out:Hadoop映射器输出记录计数器名称。

reduce_in:Hadoop reducer输入记录计数器名称。

reduce_out:Hadoop reducer输入记录计数器名称。

我看到这些可以使用

${hadoop:counters('mr-action')[RECORDS][REDUCE_OUT]}

但是,我不知道如何将这些值通过STDOUT输出回屏幕,或者输出回服务器上HDFS中的文件,我正在从那里启动Oozie工作流。
我尝试将这些值传递给shell操作,然后echo/append到一个文件,但我相信这是在数据节点上处理的,所以我无法看到输出。我还尝试按照一个线程的建议将oozie.action.external.stats.write设置为true,然后html" target="_blank">调用

oozie job-Info-Verbose

但我仍然没有看到这些计数器显示在外部统计字段下。任何关于如何获得这些计数器输出的建议都将非常有帮助。

共有1个答案

谭建章
2023-03-14

在我做oozie job-infojob-id-verbose之前,它不显示外部统计信息。关键是进行以下更改。

在workflow.xml文件中,在我要为其收集计数器的操作下,将以下内容添加到配置中:

<action name="mr-action">
    <configuration>
        <property>
            <name>oozie.action.external.stats.write</name>
            <value>true</value>
        </property>
    </configuration>
</action>

然后,运行作业后,在命令行中执行以下操作:

oozie job-info job-id@mr-action-verbose

这就给了我要找的柜台。

 类似资料:
  • 我目前正在研究一个POC,主要关注ETL处理的数据流。我使用Dataflow 2.1JavaBeam API创建了管道,初始化大约需要3-4分钟,每次运行终止也需要1-2分钟。然而,实际的转换(ParDo)需要不到一分钟。此外,我试图通过不同的方法来运行这些工作, 在本地计算机上运行作业 在GCP上远程运行作业 通过数据流模板运行作业 但看起来,上述所有方法在初始化和终止时都或多或少地消耗相同的时

  • 问题内容: 假设我有一个布尔值流,而我正在编写的reduce操作是||(OR)。我是否可以这样编写它:如果true遇到值,则放弃对至少某些元素的求值? 我正在寻找某种程度的优化(也许是并行流),不一定要完全优化,尽管后者会很棒。 问题答案: 我怀疑您想要这种构造。 你可以看一下 Stream.of(1, 2, 3, 4).peek(System.out::println).anyMatch(i -

  • MapReduce传递和发出键值对的基本信息。我需要弄清楚我们通过什么和发出什么。以下是我的关注点:MapReduce输入和输出: 1.Map() 方法 - 它是否采用单个或列表的键值对并发出什么?2.对于每个输入键值对,发出什么映射器?相同类型还是不同类型 ?3.对于每个中间键,减速器会发出什么?类型是否有任何限制?4.减速机接收所有具有相同键的值。值将如何排序,如排序或轨道排序?该顺序是否因运

  • 我有一个flink流媒体作业,它从Kafka读取数据并写入文件系统中适当的分区。例如,作业被配置为使用一个bucketing接收器,该接收器写入/数据/日期=${date}/小时=${hour}。 如何检测分区是否已准备好使用,以便相应的气流管道可以在这一小时内进行批处理?

  • 在我当前的架构中,多个数据流作业在不同阶段被触发,作为ABC框架的一部分,我需要捕获这些作业的作业id作为数据流管道中的审计指标,并在BigQuery中更新它。 如何使用JAVA从管道中获取数据流作业的运行id?有没有我可以使用的现有方法,或者我是否需要在管道中使用google cloud的客户端库?

  • 我们使用quartz调度器创建一个带有触发器名称和触发器组的触发器,它将在15分钟的间隔被触发。 我们希望在任何时间点手动触发时间表。因此,我们所做的就是获取与我们创建的计划相关联的作业的触发键细节,并尝试使用以下API触发作业。 用上面提到的API激发作业时(即尝试手动激发作业)的Quartz日志: 能不能有人请让我知道我们如何才能使时间表是触发与原来的工作相关联的触发器。