개요
HAR(Hadoop Archive)는 HDFS에서 비효율적인 작은 파일이 많은 경우 묶는 기능입니다.
아카이브 생성하기
HAR을 생성하기 위해서 다음과 같이 커맨드를 입력합니다.
코드 블럭 |
---|
language | text |
---|
linenumbers | true |
---|
|
# hadoop archive -archiveName NAME -p <parent path> <src>* <dest>
# hadoop archive -archiveName test.har -p / test archive → /test의 모든 파일을 /archive/test.har로 아카이브를 생성 |
다음은 실제 적용사례입니다.
코드 블럭 |
---|
language | text |
---|
linenumbers | true |
---|
|
# hadoop archive -archiveName -Dmapred.job.queue.name=queue_name sample.har -p /user/data/ /user/ → HAR 생성
19/01/14 01:57:52 INFO mapreduce.Job: Job job_1520227878653_38308 running in uber mode : false
19/01/14 01:57:52 INFO mapreduce.Job: map 0% reduce 0%
19/01/14 01:57:56 INFO mapreduce.Job: map 100% reduce 0%
19/01/14 01:58:01 INFO mapreduce.Job: map 100% reduce 100%
19/01/14 01:58:01 INFO mapreduce.Job: Job job_1520227878653_38308 completed successfully
19/01/14 01:58:01 INFO mapreduce.Job: Counters: 49
File System Counters
FILE: Number of bytes read=126
# hadoop fs -ls /user/sample.har/ → HAR의 구조를 확인
Found 4 items
-rw-r--r-- 2 hadoop hadoop 0 2019-01-14 01:57 /user/sample.har/_SUCCESS
-rw-r--r-- 5 hadoop hadoop 117 2019-01-14 01:57 /user/sample.har/_index
-rw-r--r-- 5 hadoop hadoop 23 2019-01-14 01:57 /user/sample.har/_masterindex
-rw-r--r-- 2 hadoop hadoop 746 2019-01-14 01:57 /user/sample.har/part-0
# hadoop fs -ls har:///user/sample.har/ → HAR의 내용을 확인 (har://)
Found 1 items
-rw-r--r-- 2 hadoop hadoop 746 2018-05-23 04:15 har:///user/sample.har/test.txt |
아카이브 구조
- _index : 인덱스 파일
- _masterindex : 인덱스 파일
- part-* : 데이터
아카이브 풀기
HAR 아카이브를 다시 원상태로 처리하기 위해서는 다음과 같이 distcp를 이용해서 처리합니다.
코드 블럭 |
---|
language | text |
---|
linenumbers | true |
---|
|
# hadoop distcp -Dmapred.job.queue.name=queue_name har:///user/sample.har/ /user/decompress/
# hadoop fs -ls /user/decompress/
Found 1 items
-rw-r--r-- 2 hadoop hadoop 746 2019-01-14 04:04 /user/decompress/test.txt |
API를 이용하여 HAR 제어
제한
- 한번 생성하면 내용을 변경할 수 없음
- 원본 파일을 삭제하지 않기 때문에 용량이 더 필요함
- MapReduce에서 읽을 수 있으나 별도의 Input Format이 없으므로 작은 파일을 HAR로 묶는 경우 작은 파일을 처리할때와 동일하게 처리함
참고