본문 바로가기
빅데이터/hadoop

[hadoop] distcp 사용하기

by hs_seo 2016. 10. 26.

하둡은 대규모 데이터의 이동을 위해서 맵리듀스를 이용한 DistCp를 제공한다. 


* 여러군데의 파일을 각각의 폴더 위치로 이동시키는 것은 불가

* 목적지(destination) 폴더에 파일이 존재하면 파일이 전달되지 않을 수도 있다. 

  파일 이동시 확인하도록 하자.



# distcp 명령

hadoop distcp hdfs://source hdfs://destination


# update or overwrite

# 파일 이름이 동일할 경우 update는 파일사이즈를 비교해서 옮기고, overwrite는 그냥 덮어쓴다. 

hadoop distcp -update hdfs://source hdfs://destination

hadoop distcp -overwrite hdfs://source hdfs://destination


# 여러위치의 파일을 하나의 위치로 이동, *를 이용하여 복사하는것도 가능 

hadoop distcp hdfs://source1 hdfs://soucrce2 hdfs://destination

hadoop distcp hdfs://source/*/* hdfs://destination

hadoop distcp hdfs://source/*.csv hdfs://destination


# 여러 위치를 파일에 저장하고 -f 옵션으로 하나의 위치로 이동

hadoop distco -f hdfs://source_file hdfs://destination


# -D 옵션을 이용하여 하둡 처리 옵션을 지정하는 것도 가능

hadoop distcp -Dmapred.job.queue.name=dist hdfs://source hdfs://destination


# AWS S3를 이용할 경우 키가 다를때

hadoop distcp -Dfs.s3n.awsAccessKeyId=[source_액세스키1] -Dfs.s3n.awsSecretAccessKey=[source_시크릿키1] \
                   -Dfs.s3.awsAccessKeyId=[target_액세스키2] -Dfs.s3.awsSecretAccessKey=[target_시크릿키2] \
                   -Dmapred.job.queue.name=q2 \
                   s3n://[source_url] s3://[target_url]


반응형