| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 大数据作业异常排查经验分享 -> 正文阅读 |
|
[大数据]大数据作业异常排查经验分享 |
大数据作业异常的排查,往往是个比较棘手的问题。这一方便是因为分布式作业的执行往往需要跨多个网络节点进行通信比较复杂,另一方面也是因为涉及底层框架多(spark, hive, flink, hdfs, hbase, kafka, yarn,zookeeper 等等),排查人员对这些组件各自的运行机制以及组件之间如何交互配合完成最终作业的机制不甚明了,再加上整个作业的执行涉及到各种日志且这些日志散落于集群多个节点多个目录,如何根据时间线跟踪排查各处日志,还原作业执行发生异常时底层究竟发生了什么原因是什么,相比传统的作业异常的排查确实更加困难些。 ? 但正所谓会者不难难者不会,只要大家日积月累勤修内功掌握各个组件的底层原理和运行机制,再加上勤学苦练多多实操查看异常时的各处日志并定期归纳整理,相信大家排查相关问题会越来越得心顺手,成为一名合格的“排坑”专家!在此分享一次真实项目中hive sql作业的异常排查经验,供大家学习参考。 ? ????问题现象:某大数据业务系统在每日日终清算环节,会采集上游业务系统rdbms中的业务数据到Hive中,进行hive sql离线计算,然后推送结果数据到下游系统的rdbms中。这些数据采集和推送作业,偶尔会执行失败,此时业务端会收到如下SocketTimeoutException异常: java.sql.SQLException:org.apache.thrift.transport.TTransportException:java.net.SocketTimeoutException: Read timed out? atorg.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:262) 有的作业还会有个被抑制的异常:Suppressed:java.sql.SQLException: Error while cleaning up the server resources atorg.apache.hive.jdbc.HiveConnection.close(HiveConnection.java:595) Caused by:org.apache.thrift.TApplicationException: CloseSession failed: out of sequenceresponse ? ????问题背景:该大数据业务系统中的数据采集和数据推送,都是通过我司研发中心的datago组件来进行的(datago底层是开源的datax,datago在易用性上做了封装,会根据datago配置文件生成datax作业的配置文件)。针对数据采集作业, datago首先会通过jdbc连接到hiveserver执行sql拿到目标hive表的元数据信息(hdfs文件路径,表字段,表格式等信息),然后执文件清理和分区创建等工作,然后会通过rdbmsreader插件读取上游oracle数据,并通过Hdfswriter插件直接写数据到目标表目标分区在hdfs上对应的目录下;针对数据推送作业中使用rdbmsreader插件的推送作业,其机制是datax先建立到hive server的jdbc连接,然后提交sql给hiveserver,hive serverza在执行完毕sql后会返回结果数据给客户端datax,datax再通过rdbmswriter推送结果数据到下游Oracle。观察发现以上SocketTimeoutExceptions是偶发现象,在并发提交的作业较多时(四五十个左右)出现的可能性更大,且跟表的数据量关系不大,部分小表甚至空表也会出现以上异常。 ? ????问题分析:首先查看各处的日志,包括业务系统日志,数据同步中间件datago的日志,datago底层实际的执行引擎datax的日志,以及大数据hive server的日志,hive metastore的日志,hdfs namenode的日志,按照时间线梳理各处日志还原底层究竟发生了什么,结合查阅datago,datax和Hive的源码,分析得到如下结论:
? ????问题解决方法:知道了问题原因,问题的解决方法就相对清晰了。可以从以下四个方面进行调整以彻底解决上述问题:
? ????相关技术背景知识:
? 附录: hive timeout相关jira 可以参考: https://issues.apache.org/jira/browse/HIVE-22196 https://issues.apache.org/jira/browse/HIVE-6679 https://issues.apache.org/jira/browse/HIVE-12371 ? hive各种参数说明可以参考: https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties ? hive优化可以参考: https://docs.cloudera.com/documentation/enterprise/latest/topics/admin_hive_tuning.html ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 7:00:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |