hadoo2의 distcp를 사용하여 hdfs끼리 복사하는 예시이다.
(문서를 보면, distcp2를 설명하지만, 사실 지금은 distcp를 쓰면 자동으로 distcp2이다..)
/usr/lib/hadoop-mapreduce/hadoop-distcp-2.6.0-cdh5.5.1.jar)
$ hadoop distcp -m 12 hdfs://internal-hadoop1.google.com/user/www/score /user/www/score
m은 동시에 copy할 수 있는 map 개수인데, 12라고 적어도 12개의 mapper가 동작하지 않을 수 있다. 실제 보니까, 내부 hadoop에서 13개의 mapper가 동작했다.
만약 특정 사용자를 owner로 하고 싶다면, HADOOP_USER_NAME를 사용한다.
$ HADOOP_USER_NAME=google hadoop distcp -m 12 hdfs://internal-hadoop1.google.com/user/www/score /user/www/score
$ hadoop fs -ls /user/www/score
drwxr-xr-x - google supergroup 0 2016-02-05 11:21 /user/www/score
만약 이미 존재하는 파일이 있으면, overwite가 되지 않는다. chown을 잘 쓰거나 -overwrite와 -delete 하려 super user 권한(hdfs)이 필요하다.
$ HADOOP_USER_NAME=hdfs hadoop fs -chown deploy /user/www/score
$ HADOOP_USER_NAME=hdfs hadoop distcp -m 12 -overwrite -delete hdfs://internal-hadoop1.google.com/user/www/score /user/www/score
권한이 없으면, 아래와 같이 에러가 발생한다.
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=deploy, access=WRITE, inode="/user/www/score":hdfs:supergroup:drwxr-xr-x
또한, 다중 복사가 가능하다.
hadoop fs -cp A디렉토리 B디렉토리 C디렉토리 하면, C 디렉토리에 A디렉토리와 B디렉토리가 복사된다.
출처 :
'hadoop' 카테고리의 다른 글
[hadoop] top n 소팅 (0) | 2016.02.16 |
---|---|
[hadoop] scoop 쓸 때 유의사항 (0) | 2016.02.05 |
[hadoop] 왜 hadoop2은 hadoop 요청시 mapreduce.Job: map 99% reduce 33%에서 잠깐 블럭되는 걸까? (0) | 2016.02.03 |
[hadoop] hive 결과를 hadoop 파일 시스템에 저장하기 (0) | 2016.01.28 |
security.UserGroupInformation: PriviledgedActionException as:deploy 에러 (0) | 2016.01.28 |