datax 写入OushuDB HDFS 60s超时问题处理
报错如下
报错详解
● 60000 millis timeout while waiting for channel to be ready for read. ch : java.nio.channels.SocketChannel (HDFS)
○ errors
■ java.io.EOFException: Premature EOF: no length prefix available
■ DataXceiver error processing WRITE_BLOCK operation src: /IP:port dst: /IP:port java.net.SocketTimeoutException
■ java.io.InterruptedIOException: Interrupted while waiting for IO on channel java.nio.channels.SocketChannel[connected local=/IP:port remote=/IP:port]. 60000 millis timeout left
原因分析
当前数据流向为 datax->oushudb->hdfs。向 hdfs 写入数据时,如果一段时间内数据无法到达
hdfs,hdfs 服务会根据超时机制断掉连接管道,具体表现为日志中出现上述 error 信息。本次事故是因为 datax 运行内存空间不足,处理大数据量时易发生 fullGC 问题,无法向 db 预期的传输数据,进而演化成本次问题。
问题解决办法
将 datax 配置由 1C4G 调整为 2C8G