org.apache.hadoop.ipc.RemoteException: No lease on /google/public_plus/20181127/23_merged (inode 2683729964): File does not exist. [Lease.  Holder: DFSClient_NONMAPREDUCE_-39928930_1, pending creates: 8]

하둡 소스를 보면, 파일이 없거나 디렉토리이면 위의 에러가 발생한다. lease 이슈는 아니다..

private void checkLease(String src, String holder, INode file) 

                                                     throws IOException {

    if (file == null || file.isDirectory()) {

      Lease lease = leaseManager.getLease(holder);

      throw new LeaseExpiredException("No lease on " + src +

                                      " File does not exist. " +

                                      (lease != null ? lease.toString() :

                                       "Holder " + holder + 

                                       " does not have any open files"));


참고로 lease는 write lock과 비슷한 개념이다.


In HDFS these locks are called Leases. Leases are granted to a client which request to open a file for a write operation (e.g. create / append / truncate a file.)

사실 생각해보면. 실제로 있어야 하는데 존재했다가 삭제된 것이다. 

이는 병렬 이슈인 것이다.

spark이라면. 다음과 같이 설정을 해서 speculative optimization 알고리즘(병렬)을 끄도록 한다.

sparkConf.set("spark.speculation", "false");

sparkConf.set("", "false");

sparkConf.set("spark.hadoop.mapreduce.reduce.speculative", "false")

hive라면 다음과 같은 설정을 진행한다. 


set mapreduce.reduce.speculative=false;

set hive.mapred.reduce.tasks.speculative.execution=false;

Posted by 김용환 '김용환'

댓글을 달아 주세요