Hive动态分区导致的Jobtracker Hang
昨天下午有20多分钟Hadoop平台无法跑Hive,Jobtracker的页面也打不开,hadoop job –list也hang住没有响应,过了10分钟后恢复了,查看gc日志发现Jobtracker没有进行full gc,查看这段时间的Job日志发现一个可疑的Hive SQL: Insert into table t(dt) as select xxx,dt from txx,是一个用了动态分区的查询.这个查询和Jobtracker Hang住有什么关系呢? 熟悉Jobtracker的都知道,在进行Job初始化时EagerTaskInitializationListener会锁住JobInProgress然后进行InitTask,细节请各位查看代码,这里有一步就是需要向hdfs写入初始数据并flush,而Fairscheduler的Update Thread在更新资源池的资源时是在持有JobTracker和Fairscheduler的独占锁然后再去计算每个资源池的资源情况,而计算running_map/running_reduce的时候要去获取相应的JobInProgress锁,各位...