Hadoop

org.apache.hadoop.hdfs.BlockMissingException 에러

유나아빠 2015. 1. 8. 18:36

새벽시간에 데이터 사용률이 갑자기 100%가까워지면서 복수대의 데이터 노드가 죽는 상황이 발생

동시간대에 실행되는 잡에서 에러가 발생했는데, 실행하는데 필요한 데이터가 죽은 데이터 노드안에 있었나보다.

결국 실행에 필요한 데이터블록을 찾을 수 없다는 에러가 발생 ㅠ.ㅠ


Error: java.io.IOException: org.apache.hadoop.hdfs.BlockMissingException: Could not obtain block: BP-351553107-xx.xx.xx.xx-1383112458085:blk_2309318479602786903_15959149 file=/user/hive/warehouse/xxxxx.db/xxxxx/dt=2015-01-07/part-m-00005.deflate
        at org.apache.hadoop.hive.io.HiveIOExceptionHandlerChain.handleRecordReaderNextException(HiveIOExceptionHandlerChain.java:121)
        at org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil.handleRecordReaderNextException(HiveIOExceptionHandlerUtil.java:77)
        at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.doNext(HiveContextAwareRecordReader.java:276)
        at org.apache.hadoop.hive.ql.io.HiveRecordReader.doNext(HiveRecordReader.java:79)
        at org.apache.hadoop.hive.ql.io.HiveRecordReader.doNext(HiveRecordReader.java:33)
        at org.apache.hadoop.hive.ql.io.HiveContextAwareRecordReader.next(HiveContextAwareRecordReader.java:108)
        at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:196)
        at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:182)
        at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:52)
        at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:340)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:157)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:152)

죽었던 데이터 노드들을 재기동하니 사용률 100%에서 원래대로 돌아옴....원인을 잘 모르겠다.

아무튼 재기동을 하고 데이터블록을 복원하니 잡이 정상실행 되었다.


참고로 손실된 블록이 있을 경우 HDFS report를 보면 Missing blocks가 1이상으로 표시된다.

>hdfs dfsadmin -report


Configured Capacity: 140573725675520 (127.85 TB)

Present Capacity: 133571230564387 (121.48 TB)

DFS Remaining: 86169531035648 (78.37 TB)

DFS Used: 47401699528739 (43.11 TB)

DFS Used%: 35.49%

Under replicated blocks: 0

Blocks with corrupt replicas: 0

Missing blocks: 0