DiskChecker.DiskErrorException: Could not find any valid local directory for s3ablock가 발생하며 입력 조건·데이터량에 따라 성공 여부가 달라진다.
원본 최종 답변은 별도 변경 없이 재현이 사라졌다는 내용이다. 특정 설정 적용으로 해결됐다고 표시하지 않고 공식 S3A 동작에 따른 복구 절차를 제시한다.
S3A disk buffer의 실제 경로·가용 공간·inode·실행 사용자 권한을 복구한다. bytebuffer 전환은 off-heap 메모리 여유를 확인한 조건부 대안이다.
확인 수준: 추가 조사 해법 · 해당 케이스 적용 결과 미확인
적용 조건: <...>와 예시 DB·테이블·경로·수치는 실제 확인값으로 바꾼다. 명령과 메뉴는 참고 문서를 바탕으로 보강한 예시이며 대상 시스템에서 실행하지 않았다. 버전·원인에 따른 분기와 남은 확인 사항은 아래에 명시한다.
fs.s3a.fast.upload.buffer, fs.s3a.buffer.dir, hadoop.tmp.dir을 확인한다. 기본 S3A 경로는 ${hadoop.tmp.dir}/s3a이므로 /tmp 자체 권한만 확인해서 끝내지 않는다.buffer_dir='<actual-s3a-buffer-directory>'
df -h "$buffer_dir"
df -i "$buffer_dir"
namei -l "$buffer_dir"
findmnt -T "$buffer_dir"
sudo -u '<impalad-os-user>' test -w "$buffer_dir"
<property><name>fs.s3a.buffer.dir</name><value>/data/s3a-buffer</value></property>
<property><name>fs.s3a.fast.upload.buffer</name><value>disk</value></property>
bytebuffer를 검토할 때는 동시 stream 수 × multipart 크기 × active blocks의 메모리 사용을 산정한다. 이는 off-heap 메모리를 소비하므로 디스크 문제를 OOM으로 바꿀 수 있다. 작은 데이터량으로 검증하고 단계적으로 부하를 늘린다.기존 실패 조건의 INSERT가 성공하고 executor별 buffer 사용량·권한 오류·메모리 사용이 정상인지 확인한다.