hadoop计数器与spark累加器(或者从hadoop mr和spark应用程序收集统计数据的最佳方法是什么)

f1tvaqid  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(242)

我想了解在标准hadoop map reduce和spark中收集作业执行统计信息的最佳实践是什么。

给予

1hdfs中的许多文件(每个控制器,即dataset1、dataset2等,是第3点的数据集的名称)

/user/tester/dataset1/part-0000*.avro
/user/tester/dataset2/part-0000*.avro
/user/tester/dataset3/part-0000*.avro
/user/tester/dataset4/part-0000*.avro

2每个文件都包含一个具有~1000个属性的avro记录

| id | attr_1  | attr_2  | attr_3  | ... | attr_N  |
----------------------------------------------------
| 1  | val_1_1 | val_1_2 | val_1_3 | ... | val_1_N |
| 2  | val_2_1 | val_2_2 | val_2_3 | ... | val_2_N |
| 3  | val_M_1 | val_M_2 | val_M_3 | ....| val_M_N |

三。有一个配置文件,其中包含需要从哪个数据集中获取哪些属性/列,以及给定的数据集应该如何像那样过滤掉的信息

<datasets>
    <dataset>
        <id>dataset1</id>
        <attributes>
            <attribute>attr_1</attribute>
            <attribute>attr_3</attribute>
        </attributes>
        <filter>attr_1 gt 50 and attr_3 eq 100</filter>
    </dataset>
    <dataset>
        <id>dataset2</id>
        <attributes>
            <attribute>attr_2</attribute>
            <attribute>attr_5</attribute>
            <attribute>attr_8</attribute>
        </attributes>
        <filter>attr_2 gteq 71</filter>
    </dataset>
    ...
</datasets>

问题

过滤所有数据集,根据第2点的配置仅获取必要的属性,然后根据属性id对数据集进行分组,并将结果数据集保存到文件中(这里的实现非常清楚)。
作业结束时,确定从每个数据集读取的记录总数
作业结束时,确定每个数据集中已过滤的记录数
作业结束时,根据点2的配置确定每个数据集中每个非空属性出现的次数。
作业结束时,确定每个非空属性在最终数据集中出现的次数。

所以呢

什么是最好的方法来计算这样的统计数字,如果
hadoop保证在作业完成时,计数器的更新将执行一次,即使
相应的任务将重新启动
已启用推测执行
hadoop计数器不用于统计。
关于spark,
仅在操作内部执行累加器更新,spark保证每个任务对累加器的更新只应用一次,即重新启动的任务不会更新值。
在转换中,用户应该知道,如果任务或作业阶段被重新执行,每个任务的更新可能会被应用多次?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题