Apache Ozone 은 볼륨(volume) → 버킷(bucket) → 키(key) 계층으로 데이터를 담는다. 운영 중 자주 쓰는 조회·생성·삭제 명령과, 버전에 따라 동작이 달라 실패하기 쉬운 지점을 정리한다. 명령 체계 자체는 CLI 에 내장된 도움말로 확인할 수 있다.
ozone --help # 최상위 명령 목록
ozone sh --help # volume / bucket / key 셸
ozone sh key --help # key 하위 명령과 옵션
ozone admin scm --help # SCM 관리 명령
ozone sh 는 오브젝트 스토어 셸, ozone fs 는 hdfs dfs 와 같은 파일시스템 인터페이스, ozone admin 은 SCM·데이터노드·컨테이너 운영 명령, ozone insight 는 로그·메트릭 디버깅 도구다.
ozone sh volume list /
ozone sh volume info /vol1
ozone sh bucket list /vol1
ozone sh bucket info /vol1/bucket1 # bucketLayout(OBS/FSO), 쿼터, 암호화
ozone sh key list /vol1/bucket1
ozone sh key info /vol1/bucket1/path/to/key
키가 많은 버킷은 key list 가 느려지므로 범위를 좁히거나 규모를 먼저 파악한다.
ozone sh key list --length=1000 /vol1/bucket1
ozone sh key list --prefix=logs/2026 /vol1/bucket1
ozone sh key list --start=logs/2026/03/last-key /vol1/bucket1
ozone admin namespace summary /vol1/bucket1
용량이 큰 키부터 확인할 때는 JSON 출력을 가공한다.
ozone sh key list --length=10000 /vol1/bucket1 \
| jq -r '.[] | "\(.dataSize)\t\(.name)"' | sort -rn | head -20
ozone sh volume create /vol1
ozone sh volume create --quota=100GB --user=myuser /vol1
ozone sh bucket create /vol1/bucket1
ozone sh key put /vol1/bucket1/README.md ./README.md
ozone sh key get /vol1/bucket1/README.md ./downloaded.md
파일시스템 방식이 편하면 ofs:// 스킴을 쓴다.
ozone fs -mkdir ofs://<om-service-id>/vol1/bucket1/dir1
ozone fs -put ./data.csv ofs://<om-service-id>/vol1/bucket1/dir1/
ozone fs -ls -R ofs://<om-service-id>/vol1/bucket1/
ozone fs -du -h ofs://<om-service-id>/vol1/bucket1/
볼륨은 비어 있어야 지워지며, 비어 있지 않으면 VOLUME_NOT_EMPTY 로 실패한다.
ozone sh volume delete /vol1 # 빈 볼륨
ozone sh volume delete -r /vol1 # 하위 버킷·키까지 재귀 삭제
ozone sh volume delete -r -y /vol1 # 확인 프롬프트 생략
버킷은 유지하고 내용만 비우려면 재귀 삭제 후 같은 이름으로 다시 만드는 방법이 가장 확실하다. Ozone 에는 "버킷 비우기" 전용 명령이 없다.
ozone sh bucket delete -r /s3v/<bucket>
ozone sh bucket create /s3v/<bucket>
ozone sh key list /s3v/<bucket> # 비었는지 확인
키를 개별로 지울 때는 볼륨·버킷까지만 적으면 Key name is missing 이 난다. 전체 키 경로를 줘야 한다.
ozone sh key delete /vol1/bucket1/dir/file.txt
ozone sh key list /vol1/bucket1 | jq -r '.[].name' \
| while read k; do ozone sh key delete "/vol1/bucket1/$k"; done
ozone sh key delete --recursive 는 상위 버전에서 추가된 옵션이라 CDP 빌드에 따라 없다. ozone sh key delete --help 로 지원 여부를 먼저 확인하고, 없으면 bucket delete -r 또는 개별 삭제로 처리한다.volume info · bucket list · key list 로 대상을 확인한다.bucket info 로 기록해 둔다.ofs 인터페이스로는 볼륨 재귀 삭제가 지원되지 않는다. ozone fs -rm -r 대신 ozone sh volume delete -r 를 쓴다.s3v 볼륨 아래에 놓이므로 셸에서는 /s3v/<bucket> 경로로 접근한다. FSO 레이아웃 버킷은 aws s3 rm --recursive 가 키를 개별 요청으로 지우는 특성 때문에 일부가 남아 실패할 수 있어 ozone sh 쪽이 안전하다.df 로 용량이 줄지 않는 것은 정상이다. Ozone 은 삭제된 키를 백그라운드에서 비동기로 정리하므로 실제 공간 회수까지 시간이 걸린다. 삭제 여부는 key list · bucket info 로 판단한다.kinit 만으로 부족하고 클라이언트가 core-site.xml 의 hadoop.security.authentication=kerberos 를 읽어야 한다. 자세한 내용은 아래 참고 문서를 본다.boto3 는 파이썬용 AWS SDK 다. Ozone 이 S3 호환 API 를 제공하므로 엔드포인트만 바꾸면 기존 코드를 그대로 쓸 수 있다는 뜻으로 쓰인다.
import boto3, os
s3 = boto3.client(
"s3",
endpoint_url="https://<s3g-host>:9879",
aws_access_key_id=os.environ["OZONE_ACCESS_KEY"],
aws_secret_access_key=os.environ["OZONE_SECRET_KEY"],
)
s3.upload_file("data.parquet", "my-bucket", "raw/data.parquet")
Erasure Coding 은 데이터를 조각내고 패리티 조각을 함께 저장해 3중 복제보다 적은 용량으로 비슷한 내구성을 얻는 방식이다. RS(6,3) 기준 1TB 저장에 약 1.5TB 를 쓰고 노드 3대 장애를 견디지만, 복구 시 CPU 연산과 네트워크 트래픽이 늘어 자주 읽지 않는 대용량 데이터에 적합하다.
Tiering 은 접근 빈도나 나이에 따라 성능·비용이 다른 계층으로 데이터를 자동 이동시키는 정책이다. Hot(SSD·복제) → Warm(HDD·EC) → Cold 순으로 내리며 수명주기 정책과 한 세트로 쓰인다.