最近因为工作需要开始接触hive和mysql的数据加载,其中hive向mysql存储数据时,其中有些任务采用了nohup的方式后台执行。遇到了下面这个问题,因目前难以排查,现做一个记录。
情况描述
环境:脚本内容为循环执行
nohup &后台执行
发现,任务显示暂停[1]- 2856 Stopped (tty output) nohup ./diaodu.sh
同时查询mysql中,发现数据并没有写入。同时yarn列表为空
如果此时关闭任务,确认job列表为空。
但此时mysql中数据开始大量增加,并大量产生日志。
查询yarn后台发现产生任务,同时关闭一个任务,产生一个任务,直到循环结束。所有任务关闭后数据停止产生。
如果长时间运行,会在第二天产生看到任务成功执行,并产生相应日志和数据。
上面证明是错误的,后台挂掉之后程序会正常执行。
长时间后台程序在停止状态会挂掉。
直接运行
正常循环执行则为逐个产生日志,mysql数据渐渐增加。
推测
1,后台执行完毕后一次反馈,但无法解释yarn列表和mysql表长时间为空的现象。
2,sqoop需要大量时间进行数据缓存,但为什么正常运行时无此操作,而且sqoop应该是没有如此底层的操作。
3,尝试从nohup内核角度出发推测原因,待续。