我们有一个spark流程序,它使用createdirectstream从kafka读取输入,并使用mapwithstate基于公共键创建一个复合对象。
JavaMapWithStateDStream<String, InputData, Trip, Tuple2<String, CompositeData>> mappedDStream = inputMessages.mapWithState(StateSpec.function(mappingFunc).timeout(Durations.minutes(timeOutMinutes)));
我们在3台机器的hadoopYarn集群上运行此代码,并指定了hdfs检查点目录。hadoop版本是2.7.0和spark 2.0
指定的流间隔为3秒。程序连续运行48至72小时,出现以下异常时失败。
org.apache.hadoop.ipc.remoteexception(java.io.ioexception):文件/.streamingcheckpoint/app1/2b86771a-0771-4f5a-a8cf-878f79a29d03/rdd-167/.part-00024-attempt-3只能复制到0节点,而不是minreplication(=1)。有3个datanode正在运行,此操作中没有排除任何节点。在org.apache.hadoop.hdfs.server.blockmanagement.blockmanager.choosetarget4newblock(blockmanager。java:1550)
我们已经参考了下面的答案,但是在我们的例子中,集群上有足够的可用空间(群集磁盘利用率低于30%),即使发生此故障,名称节点仍处于活动状态,我们可以使用hdfs命令向hdfs添加文件。我们甚至增加了namenode可用的线程数。
ref:只能复制到0个节点,而不是minreplication(=1)。有4个datanode正在运行,此操作中没有排除任何节点
hadoop:…将被复制到0个节点,而不是minreplication(=1)。有1个datanode正在运行,此操作中没有排除任何节点
我们还看到下面的消息从一开始就一直写在我们的日志中。
[rdd_11_28](org.apache.spark.executor.executor)[2017-03-16 11:35:00690]警告1块锁未由tid=202释放:
这次工作失败的原因是什么?
暂无答案!
目前还没有任何答案,快来回答吧!