Hive动态分区导致的Jobtracker Hang问题

  熟悉Jobtracker的都知道,在进行Job初始化时Eager">TaskInitializationListener会锁住 JobInProgress然后进行InitTask,细节请各位查看代码,这里有一步就是需要向hdfs写入初始数据并flush,而 Fairscheduler的Update Thread在更新资源池的资源时是在持有JobTracker和Fairscheduler的独占锁然后再去计算每个资源池的资源情况,而计算 running_map/running_reduce的时候要去获取相应的JobInProgress锁,各位读者可能不明白,我为啥要讲这块呢,问题就出现在这里.

  Hive在处理动态分区的时候,主要经历这么几个步骤tablescan->filesink->movetask

  在进行filesink的时候是根据记录来处理的,会起N(part)个record writer然后开始处理动态分区字段,即这里的dt,如果dt是连续的那么打开一个block开始写,否则关闭当前block,打开新dir的 block继续写,这里如果dt是不连续的出现并且记录数量巨大的情况下会产生大量的文件,导致hdfs的负载标高,和当时的hdfs的监控是匹配的:

  当时的集群负载:

  当时产生的文件数:

  进而导致JobInProgress被锁住,从而JobTracker被锁住,导致JobTracker Hang住了!

  那怎么解决呢?利用distributeby dt把相同的dt排列到一起再进行filesink就不会造成大量的小文件产生了。

时间: 2024-09-20 01:08:59

Hive动态分区导致的Jobtracker Hang问题的相关文章

mysql主键的缺少导致备库hang

最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的稳定性,也希望通过这篇博客,来加深主键在innodb引擎中的重要性,希望用户在使用RDS,设计自己的表的时候,一定要为表加上主键,主键可以认为是innodb存储引擎的生命,下面我们就来分析一下这个案例(本案例的生产环境的binlog为row模式,对于myisam存储引擎也有同样的问题): (1).现

动态分区AOMEI Dynamic Disk Manager Pro Edition

问题描述 动态分区AOMEI Dynamic Disk Manager Pro Edition 如何使用AOMEI Dynamic Disk Manager Pro Edition动态分区.全英文的,不敢下手,怕把资料都丢了.最好说清楚每个步骤,有图最好 解决方案 动态分区为什么非要用这个,用Paragon Partition Manager,这个有中文的,都用了多少年了,没出过问题 http://www.jz5u.com/soft/system/disk/14559.html 解决方案二: p

mysql主键的缺少导致备库hang住_Mysql

最近线上频繁的出现slave延时的情况,经排查发现为用户在删除数据的时候,由于表主键的主键的缺少,同时删除条件没有索引,或或者删除的条件过滤性极差,导致slave出现hang住,严重的影响了生产环境的稳定性,也希望通过这篇博客,来加深主键在innodb引擎中的重要性,希望用户在使用RDS,设计自己的表的时候,一定要为表加上主键,主键可以认为是innodb存储引擎的生命,下面我们就来分析一下这个案例(本案例的生产环境的binlog为row模式,对于myisam存储引擎也有同样的问题):(1).现象

阿里云大数据利器之-RDS迁移到Maxcompute实现动态分区

当前,很多用户的业务数据存放在传统关系型数据库上,例如阿里云的RDS,做业务读写操作.当数据量非常大的时候,此时传统关系型数据库会显得有些吃力,那么会经常有将mysql数据库的数据迁移到[大数据处理平台-大数据计算服务(Maxcompute,原ODPS)(https://www.aliyun.com/product/odps?spm=5176.doc27800.765261.309.dcjpg2),利用其强大的存储和计算能力进行各种查询计算,结果再回流到RDS.          一般情况下,业

大数据-Hive 空间沾满导致的问题

问题描述 Hive 空间沾满导致的问题 在将mysql中的数据使用sqoop倒入到Hive中时,突然出现报了一个这样的错误 Exception in thread "main" java.lang.RuntimeException: Could not create temporary directory: /tmp/sqoop-hadoop/compile/db49351e236be8b1f51ee53f4a743551; check for a directory permissi

关于闪回区溢出导致的数据hang(r11笔记第12天)

对于Oracle数据库的闪回区的设置,之前和一个同事和讨论过,总体来说有一些不同的意见. 首先这个闪回区是一个逻辑的概念,闪回区的大小不会严格依赖于磁盘空间的情况,比如磁盘空间目前剩余100G,但是你设置闪回区为200G是没有问题的. 如此一来,和只使用归档参数想比,这个闪回区似乎有一点问题,总体来说闪回区的管理还是比较方便的,可以监控管理闪回区中的归档,闪回日志,备份等的大小. 使用的视图为v$flash_recovery_area_usage,在11g做了简化,为v$recovery_are

移动硬盘分区方法分享,分区导致数据丢失该如何恢复?

随着数据时代的爆发,我们需要存储的数据与日俱增,所以移动存储产品便成为我们生活中必不可少的部分.然而,现在我们买回来的移动硬盘基本就只有一个分区,对于我们存储分门别类的文件带来很大不便,所以我们需要对其进行分区操作,以方便我们更加有条理的管理硬盘中的文件.移动硬盘分区的时候如果硬盘中保存了重要的文件,需要将其备份,因为分区的时候会导致数据丢失.不过很多用户都会忘记对移动硬盘进行备份,或者闲麻烦不想备份,这就导致移动硬盘分区后发生数据丢失的情况,要怎么才可以解决数据丢失的问题呢? 下面我先向大家介

密码延迟验证导致的系统HANG住

又是一个11g新特性导致的问题. [@more@] 这个新特性很早之前就研究过,也在其他客户处碰到过类似的问题.从11g开始,如果一个用户使用不正确的密码尝试登录数据库,那么随着登录失败次数的增加,每次登录验证前延迟等待的时间也会增加: SQL> set time on 18:30:54 SQL> 18:30:58 SQL> conn test/test Connected. 18:31:25 SQL> 18:31:25 SQL> conn test/a conn test/

MySQL内核月报 2014.11-MySQL· 捉虫动态·SIGHUP 导致 binlog 写错

bug描述 这是5.6中和gtid相关的一个bug,当 mysqld 收到 sighup 信号 (比如 kill -1) 的时候,会 flush binlog,但是新生成binlog开头没写 Previous_gtids_log_event,这会导致下面 2 个问题: 这个时候 mysqld 重启的话,会发现再也起不来了,error log 里有这样的错 The binary log file 'mysql/mysql-bin.000020' is logically corrupted: Th