728x90
hadoop distcp <src> <dist>
위와 같은 명령을 쓰면 일반적으로 복사가 된다. 하지만 잘 복사하다가 가끔 문제가 생긴다.
Error: java.io.IOException: File copy failed: hdfs://devnodem:8020/apps/hive/warehouse/logdata.db/onenavi_logtext_kt/dt=2017-07-21/000035_0 --> hdfs://10.10.82.223:8020/apps/hive/warehouse/logdata.db/onenavi_logtext_kt/dt=2017-07-21/000035_0 at org.apache.hadoop.tools.mapred.CopyMapper.copyFileWithRetry(CopyMapper.java:287) at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:255) at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:52) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341) at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:170) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1866) at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:164)
위 문제는 checksum 체크 시 발생한다.
아무리 환경이 똑같다고 해도 checksum은 해당 서버의 환경에 따라 생성되기 때문에 당연히 일치 하지 않는 문제가 발생한다.
그럴 경우에는
hadoop distcp -skipcrccheck -update src dest
이런 식으로 checksum을 skip 해주면 된다.
copy 이후 partition 테이블의 경우 partition을 인식하지 못하여(단순 copy이기 때문)에 데이터를 읽을 수 없다.
그럴땐 hive cli에 접속하여
msck repair table <dst table>
해주면 된다.
'프로그래밍 > hadoop' 카테고리의 다른 글
zeppelin-0.8.1 설치 삽질(with elasticsearch) (0) | 2019.07.15 |
---|---|
HA 구성 클러스터에서 발생한 Journal Node 오류 (0) | 2018.11.15 |
Fix Under-replicated blocks in HDFS manually (0) | 2018.11.15 |
Old Version HDP 삭제 (0) | 2018.11.15 |
Ambari를 통한 업데이트 시 발생한 문제 (0) | 2018.11.15 |