하둡(Hadoop)에서 데이터 복사하는 방법
- HDFS에서 데이터를 복사하는 방법은 아주 다양하다.
- 효율적으로 데이터를 복사하는게 중요하다
데이터를 복사하는 다양한 방법
- 일단 데이터를 복사하는 방법은 다양하다
로컬 <-> 클러스터
- 아래 속성을 통해서 로컬에 있는 데이터를, 클러스터에 있는 데이터를 옮길 수 있다.
- copyToLocal
- put
- get
클러스터 <-> 클러스터
- 클러스터간에 데이터를 옮기기 위해서는 아래와 같이 하면 된다.
- 클러스터 -> 로컬 -> 클러스터
- 과연 이렇게 하는 사람이 있을까 싶지만, 이렇게 하는 사람을 내가 보았음
클러스터 -> 클러스터 로 데이터를 옮기는 방법은 한가지가 아니다.
- cp
- distcp
두 가지 방법의 차이를 알지 못한다면, 작업에 엄청난 문제가 생길 것이다.
만약 distcp를 이용하면 아래와 같은 에러가 발생할 수 있다.
아래 에러는 distcp는 MR을 사용하기 때문에 block-size가 맞지 않아서 생기는 문제,
checksum-checks를 skip을 할 수 있으나, 문제가 생길 수 있기 때문에
-bp 옵션을 사용해 block-sizes를 보존(preserver)하는게 좋다.
Caused by: java.io.IOException: Check-sum mismatch between
Source and target differ in block-size. Use -pb to preserve block-sizes during copy. Alternatively, skip checksum-checks altogether, using -skipCrc. (NOTE: By skipping checksums, one runs the risk of masking data-corruption during file-transfer.)
cp는 하나의 pipeline으로 복사하기 때문에 상당히 속도가 느리다.
반면, distcp는 mapreduce를 이용하기 때문에 속도가 빠르다.
위에서 block-size를 고려해야 하는 이유도 mr을 이용하기 때문이다.
bash
hadoop distcp hdfs://A/user/jslee/data hdfs://B/user/jslee/data
shell
hadoop fs -cp hdfs://A/user/jslee/data hdfs://B/user/jslee/data
'빅데이터 > Hadoop' 카테고리의 다른 글
[Hadoop] HDFS 디렐토리별 용량 체크하는 방법 (1) | 2019.03.24 |
---|---|
하둡(Hadoop) 데이터 복사, 로컬 및 클러스터간 (0) | 2017.11.29 |
[Hadoop] Hadoop Cluster? - HDFS, MapReduce, Yarn (0) | 2016.07.20 |
[Hadoop] 빅데이터를 처리하기 위한 하둡 (0) | 2016.07.20 |
클러스터 매니저(Cluster Manager) Yarn의 아키텍쳐 및 역할 (0) | 2016.06.16 |