Amazon S3 처럼 클라우드 스토리지를 사용하면 속도가 느려지지만, 백업 복구/관리가 용이하고 영구적인 보관이 가능합니다.
데이터 노드는 주기적으로 블록 스캐너를 실행해서 블록의 체크섬을 체크하고, 오류를 수정합니다.
데이터 노드 중에 자주읽는 블록은 명시적으로 메모리에 캐싱하여 조인에 자주 사용되는 데이터를 모아서 파일 단위로 캐싱해두면 읽기 성능이 좋아집니다.
$ hdfs cacheadmin
Usage: bin/hdfs cacheadmin [COMMAND]
[-addDirective -path <path> -pool <pool-name> [-force] [-replication <replication>] [-ttl <time-to-live>]]
[-modifyDirective -id <id> [-path <path>] [-force] [-replication <replication>] [-pool <pool-name>] [-ttl <time-to-live>]]
[-listDirectives [-stats] [-path <path>] [-pool <pool>] [-id <id>]
[-removeDirective <id>]
[-removeDirectives -path <path>]
[-addPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]
[-modifyPool <name> [-owner <owner>] [-group <group>] [-mode <mode>] [-limit <limit>] [-maxTtl <maxTtl>]]
[-removePool <name>]
[-listPools [-stats] [<name>]]
[-help <command-name>]
# pool 등록
$ hdfs cacheadmin -addPool pool1
Successfully added cache pool pool1.
# path 등록
$ hdfs cacheadmin -addDirective -path /user/hadoop/shs -pool pool1
Added cache directive 1
# 캐쉬 확인
hdfs cacheadmin -listDirectives
Found 1 entry
ID POOL REPL EXPIRY PATH
1 pool1 1 never /user/hadoop/shs