1.sqoop export导入任务失败但部分数据入库成功能问题
2.sqoop ä» hive 导åºå° mysql ä¸ç´å¡å¨map 100% reduce 0% ä¸å¨
sqoop export导入任务失败但部分数据入库成功能问题
借助Azkaban进行大数据任务调度时,遭遇sqoop export导入任务失败,但部分数据成功入库的困境。任务失败告警显示“Job failed as tasks failed. failedMaps:1 failedReduces:0”,但Azkaban页面信息不详,仅提示错误,点击排名源码无具体原因。开发反馈指出,与之前相比,业务数据量减少了一半。
深入分析后,发现sqoop export任务从Hive导出数据至MySQL。查看MySQL表,足浴公众号源码记录量少于预期,Hive表则显示正确数据量。排除数据源问题后,通过执行分页查询发现,第条数据的字段合并,导致数据不一致。诱导付费app 源码怀疑是字段合并导致字段数量不匹配。进一步排查,排除数据源问题,但在不同环境下查询,问题依然存在,最终意识到是宾友娱乐源码sqoop的使用不当。
了解到,sqoop export将任务转化为Hadoop的MapReduce作业执行。Azkaban的日志中已显示失败原因,只是未引起注意。通过Yarn管理页面,可定位到具体执行节点,java 相等运算 源码进而获取详细执行日志。在NodeManager上执行命令获取日志,发现数据库字段长度不足,应修改为mediumtext类型,清理异常数据后重新执行任务,成功恢复数据量至预期。
总结而言,azkaban任务执行失败时,应首先关注azkaban提供的错误日志,其中可能隐藏关键信息。大数据任务最终由Yarn调度与执行,可通过Hadoop Job管理页面追踪任务执行情况。在Yarn节点上获取执行日志,有助于排查问题。
扩展:Yarn架构由ResourceManager、APPlicationMaster、NodeManager和Container四大组件组成。ResourceManager负责处理客户端请求、启动监控ApplicationMaster、监控NodeManager以及资源分配与调度。APPlicationMaster负责程序切分、申请资源分配任务,以及任务监控与容错。NodeManager管理单个节点资源,处理来自ResourceManager的命令与来自ApplicationMaster的命令。Container对任务运行环境进行抽象,封装资源与任务运行相关信息。
部分失败任务日志详情参见相关博客链接。
sqoop ä» hive 导åºå° mysql ä¸ç´å¡å¨map % reduce 0% ä¸å¨
æçä¹æ¯è¿æ · æç导åºä»£ç æ¯
/bigdata/sqoop/bin/sqoop export \
--connect "jdbc:mysql://..0.:/bigdata?useUnicode=true&characterEncoding=utf-8" \
--username $mysql_db_name \
--password $mysql_db_pwd \
--table $table_name \
--input-fields-terminated-by '\' \
--export-dir $hadoop_dir