hadoop map reduce 中的错误处理

2024-04-13

根据文档,有几种方法可以在 MapReduce 中执行错误处理。以下是一些:

A。使用枚举的自定义计数器 - 每个失败记录的增量。

b.记录错误并稍后分析。

计数器给出失败记录的数量。然而,为了获取失败记录的标识符(可能是其唯一键),以及发生异常的详细信息,发生错误的节点 - 我们需要执行集中式日志分析,并且有很多节点正在运行。 Logstash 是可用的。

除此之外,是否还有其他方法可以处理错误场景,而无需人工干预。欢迎任何工具、参考、最佳实践。

我认为同样的技术适用于任何分布式应用程序,只需进行一些细微的更改。


在处理错误时,有几个问题需要问:

  1. 如果数据验证中发生错误,是否应该停止作业。大多数大数据用例可能不会留下一些不良记录。但是,如果您的用例希望所有记录都足够好,您应该做出决定并继续执行以下步骤。

    有时,最好通过跳过不良记录来让作业运行,或者 同时,使用以下技术找出问题(错误),并在前进过程中进行纠正和修改。

  2. 您希望错误发生,但只发生有限的次数。那么在整个作业停止之前可以抛出异常多少次,如下所示

    对于地图任务:mapreduce.map.maxattempts财产

    对于减速器任务:mapreduce.reduce.maxattempts

    默认值为 4

  3. 处理格式错误的数据。

    因此我们决定处理格式错误的数据。然后定义条件或 记录很糟糕。您可以使用计数器,快速为您提供 不良记录数量。

    在映射器类中,

    enum Temperature { OVER_10 }
    

    内部地图方法,

    //解析记录

    if(value > 10) {
        System.err.println("Temperature over 100 degrees for input: " + value);
        context.setStatus("Detected possibly corrupt record: see logs.");
        context.getCounter(Temperature.OVER_10).increment(1);      
    }
    

    通过上述方法,所有记录都会得到处理,并根据不良记录添加计数器。您可以在作业结束时、作业统计后或通过 Web UI 或 shell 命令查看计数器值。

    $mapred job -counter <job_id> '${fully_qualified_class_name}' ${enum_name}
    $mapred job -counter job_1444655904448_17959 'com.YourMapper$Temperature' OVER_10
    

    一旦知道问题的影响,即不良记录的数量,我们就需要知道“为什么是坏的”。为此,我们需要查看日志 并搜索错误消息。

    Yarn 提供日志聚合功能,将某个作业 id 的所有日志合并起来并存储在 hdfs 中。可以使用

    yarn logs -applicationId <application ID>
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hadoop map reduce 中的错误处理 的相关文章

  • mongodb 聚合随机化(shuffle)结果

    我正在浏览一堆 mongo 文档 但找不到洗牌或随机化结果内容的可能性 有没有 特别是对于聚合框架本身来说 实际上并没有任何本地方法 因为还没有可用的运算符来执行诸如生成随机数之类的操作 因此 无论您可能投射一个字段进行排序的任何匹配 都不
  • Swift:NSError 现在应该被视为遗留问题吗?

    文档和流行博客建议使用 do catch 进行 Swift 错误处理 并处理 ErrorType 枚举或 NSError 实例 ErrorType 枚举和 NSError 实例在 try catch 块中是否互斥 如果没有 如何实现一个同时
  • HDP 3.1.0.0-78 升级后无法使用 ResourceManager UI 终止 YARN 应用程序

    我最近将 HDP 从 2 6 5 升级到 3 1 0 它运行 YARN 3 1 0 并且我无法再使用旧的 8088 cluster apps 或新的 8088 从 YARN ResourceManager UI 终止应用程序 ui2 ind
  • 将多个前缀行过滤器设置为扫描仪 hbase java

    我想创建一台扫描仪 它可以为我提供带有 2 个前缀过滤器的结果例如 我想要其键以字符串 x 开头或以字符串 y 开头的所有行 目前我知道只能使用一个前缀 方法如下 scan setRowPrefixFilter prefixFiltet 在
  • 离开页面时 JQuery Ajax 错误

    我使用以下代码将数据从服务器异步提取到客户端 错误块中的警报报告服务器上发生的错误 但是 如果用户在调用过程中离开页面 该块也会被触发并抛出一个空的警报容器 有什么方法可以更优雅地处理用户离开页面的情况 即在离开之前不抛出空警报 也许可以通
  • 在 Hive 中分解一行 XML 数据

    我们将 XML 数据作为名为 XML 的单个字符串列加载到 Hadoop 中 我们正在尝试检索数据级别 并将其标准化或分解为单行进行处理 你知道 就像表格一样 已经尝试过分解功能 但没有得到我们想要的 示例 XML
  • Hive查询快速查找表大小(行数)

    是否有 Hive 查询可以快速查找表大小 即行数 而无需启动耗时的 MapReduce 作业 这就是为什么我想避免COUNT I tried DESCRIBE EXTENDED 但这产生了numRows 0这显然是不正确的 对新手问题表示歉
  • 使用 Hadoop 映射两个数据集

    假设我有两个键值数据集 数据集A和B 我们称它们为数据集A和B 我想用 B 组的数据更新 A 组中的所有数据 其中两者在键上匹配 因为我要处理如此大量的数据 所以我使用 Hadoop 进行 MapReduce 我担心的是 为了在 A 和 B
  • Sqoop mysql错误-通信链路故障

    尝试运行以下命令 sqoop import connect jdbc mysql 3306 home credit risk table bureau target dir home sqoop username root password
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • web请求超时处理?

    HttpWebRequest request HttpWebRequest WebRequest Create url request Timeout 20000 using WebResponse response request Get
  • PHP 构造函数返回 NULL

    我有这个代码 是否有可能User对象构造函数以某种方式失败 以便 this gt LoggedUser被分配了一个NULL构造函数返回后值和对象被释放吗 this gt LoggedUser NULL if SESSION verbiste
  • 将 PHP 错误处理程序限制为特定命名空间

    PHP 有没有办法只为特定的命名空间设置错误处理程序 我正在构建一个小型框架 我希望能够通过设置自定义错误处理程序并抛出异常来尝试捕获其名称空间内的所有错误 警告 通知消息 在此特定名称空间之外触发的错误应该以常规方式表现 用PHP可以完成
  • 如何抑制 C# 中方法调用的错误?

    我正在寻找一种 优雅 的方法来在调用方法时抑制异常 我认为下面的代码太冗长了 try CallToMethodThatMayFail 3 catch 是否有一些语法糖我可以用来说 我真的不在乎这个方法是否失败 我想调用该方法并继续执行 无论
  • 获取 emr-ddb-hadoop.jar 将 DynamoDB 与 EMR Spark 连接

    我有一个 DynamoDB 表 需要将其连接到 EMR Spark SQL 才能对该表运行查询 我获得了带有发行标签 emr 4 6 0 和 Spark 1 6 1 的 EMR Spark Cluster 我指的是文档 使用 Spark 分
  • 如何在 Hadoop 中将 String 对象转换为 IntWritable 对象

    我想转换String反对IntWritableHadoop 中的对象 任何过程都可以进行转换 IntWritable value new IntWritable Integer parseInt someString 并处理以下可能性par
  • 如何通过sparkSession向worker提交多个jar?

    我使用的是火花2 2 0 下面是我在 Spark 上使用的 java 代码片段 SparkSession spark SparkSession builder appName MySQL Connection master spark ip
  • 如何通过Python访问Hive?

    https cwiki apache org confluence display Hive HiveClient HiveClient Python https cwiki apache org confluence display Hi
  • 调试断言失败。表达式(流!=NULL)

    我收到以下错误 调试断言失败 表达式 流 NULL 文件 f dd vctools crty bld self x86 crt src fwrite c 创建 4 个线程时 CPU 使用率 100 该代码最初运行良好一段时间 然后给出此错误
  • Hive - 线程安全的自动递增序列号生成

    我遇到一种情况 需要将记录插入到特定的 Hive 表中 其中一列需要是自动递增的序列号 即在任何时间点都必须严格遵循 max value 1 规则 记录从许多并行的 Hive 作业插入到这个特定的表中 这些作业每天 每周 每月批量运行 现在

随机推荐

  • 服务绑定到活动

    这是我的代码 public class MainActivity extends Activity private ComponentName mService private Servicio serviceBinder private
  • Checkstyle,无法创建根模块

    我正在尝试在项目中配置 Checkstyle 我已经添加 apply plugin checkstyle checkstyle assign the latest checkstyle version explicitly default
  • 如何通过 selenium-webdriver 和 Java 使用 java 实现鼠标悬停

    在尝试实现门户自动化时http demo nopcommerce com http demo nopcommerce com 我无法将鼠标悬停在 电子 菜单上并选择 相机和照片 子菜单 使用以下脚本进行相同的操作 WebElement el
  • 为什么 Matplotlib 颜色图的结构不同?

    我能够绘制 RGB 分量some使用这个简单的 Python 脚本绘制 Matplotlib 颜色图 import numpy as np import matplotlib pyplot as plt from matplotlib im
  • R Shiny:渲染summary.ivreg输出

    我正在尝试在 R Shiny 中呈现工具变量回归摘要 这是代码 iv ivreg lwage educ exper nearc4 exper summary iv 当我使用 renderTable 时 出现以下错误 没有适用于 xtable
  • angular2动态表格计算金额总计

    尝试计算总 payOffs amount payOffs 是一个 FormArray 不知道如何正确执行 以便总数会观察到当前金额和新金额的变化 这是我作为基本代码的 plnkr http plnkr co edit nHSIsciSZNT
  • 使用 C++ 基类构造函数?

    在使用模板时 我遇到需要使基类构造函数可从继承类访问以创建对象 以减少复制 粘贴操作 我想通过这样做using关键字与函数 case 的方式相同 但不起作用 class A public A int val class B public A
  • 无法获取 Cabal 更新以在公司网络内工作

    我正在尝试在工作中使用 haskell 我已经安装了 HP 但无法让 cabal 进行更新 我认为这是一些防火墙或 DNS 问题 cabal update Downloading the latest package list from h
  • 如何在 JNI 中读取字节数组?

    是否可以在 JNI 中引用整个字节数组而不调用任何副本 在本机 C 代码中 我有一个从 Java 传递的字节数组 我只想将一些数据与该字节数组进行比较 因此我不想进行任何内存复制 是否可以 我知道我可以通过使用类似的 GetPrimitiv
  • Tango 的未来与 D1 的停产

    知道D1 will be discontinued effective December 31 2012 鉴于官方发行版位于 D1 之下 是否还值得继续使用 Tango 如果您谈论的是一旦 D1 的官方支持消失 是否值得继续使用 Tango
  • VirtualEnv 和 python-embed

    我有一台使用 Python 2 运行许多应用程序的 Windows 机器 我想添加一个使用 Python 3 编写的新程序 为了确保我不会搞砸任何事情 我想使用嵌入了 Python 3 的 Virtualenv Python 3 嵌入 am
  • 将两个变量加在一起?

    然而 尝试将两个整数变量添加在一起 我似乎无法弄清楚 因为它只是将它们作为字符串连接起来 var age child 10 var age gap 10 alert age child age gap 结果 1010 想要的结果 20 va
  • 使用
    制作大引号

    几年前 我使用该标签在我的网站上创建了一个引用 带有大引号 现在我想做同样的事情 但它不再起作用了 我唯一得到的是小 而不是大的 如何找回旧的 大的 Thanks 我相信您正在寻找这样的东西 blockquote font family G
  • 如何创建一个圆形按钮?

    我想创建一个圆形按钮 这个按钮应该看起来像一个圆圈 此代码给出了圆形矩形按钮 UIButton button UIButton buttonWithType UIButtonTypeRoundedRect button frame CGRe
  • 如何在 Python Selenium 中实现类似 TestNG 的功能或在一个测试套件中添加多个单元测试?

    假设我有这两个鼻子测试ExampleTest1 py和ExampleTest2 py ExampleTest1 py class ExampleTest1 TestBase def testExampleTest1 self if name
  • Tensorflow 中的深度复制

    张量流中有深度复制吗 考虑以下操作 tt tf get variable t shape 2 2 tt1 tf identity tt 0 assign 1 1 tt2 tf identity tt 1 assign 2 2 我希望 tt1
  • 哪些变量类型/大小在 STM32 微控制器上是原子的?

    以下是 STM32 微控制器上的数据类型 http www keil com support man docs armcc armcc chr1359125009502 htm http www keil com support man d
  • 使用ScheduledExecutorService时Java webapp内存泄漏

    我的 Tomcat 7 报告我的 web 应用程序中可能存在内存泄漏 SEVERE The web application mywebapp appears to have started a thread named pool 1 thr
  • 通过 JS 读取 HTML 中 SVG 元素的属性

    我有以下标记 带有本机 SVG 的 HTML
  • hadoop map reduce 中的错误处理

    根据文档 有几种方法可以在 MapReduce 中执行错误处理 以下是一些 A 使用枚举的自定义计数器 每个失败记录的增量 b 记录错误并稍后分析 计数器给出失败记录的数量 然而 为了获取失败记录的标识符 可能是其唯一键 以及发生异常的详细