상황
- Distcp시에 IOException이 발생하며 다음과 같은 에러메시지가 나온다.
Error: java.io.IOException: File copy failed: ...
Caused by: java.io.IOException: Couldn't run retriable-command: ...
Caused by: java.io.IOException: Check-sum mismatch between ... Source and target differ in block-size. Use -pb to preserve block-sizes during copy. Alternatively, skip checksum-checks altogether, using -skipCrc. (NOTE: By skipping checksums, one runs the risk of masking data- corruption during file-transfer.)...
해결 과정
- 에러 메시지에서 알 수 있듯, source hdfs와 destination hdfs의 블록사이즈가 달라서 발생하는 에러이다.
- distcp 시에 다음의 옵션을 추가하여 문제를 해결할 수 있다.
hadoop distcp -pbc ${source_uri} ${dest_uri}
- -p 옵션은 파일의 특성을 보존한다는 의미이며, b는 block size, c는 checksum-type을 의미한다.
- 즉, source hdfs의 block size, checksum-type을 유지하여 distcp를 실행한다.
결론
- distcp 시 옵션으로 -pbc를 추가한다.
참고
반응형
'기타' 카테고리의 다른 글
[Ubuntu] 우분투 부팅디스크 만들기(Gpt, MBR확인 포함) (0) | 2020.08.19 |
---|---|
[Hadoop] 특수문자(wildcard)가 들어간 경로 삭제 (0) | 2020.06.09 |
[Spark] yarn cluster 모드 시 한글 깨짐 현상(UnicodeEncodeError) (0) | 2020.06.04 |
MySQL database character set 변경 (0) | 2020.06.03 |
Airflow Exception: Global variable explicit_defaults_for_timestamp needs to be on (1) for mysql (0) | 2020.06.03 |