복붙노트

[HADOOP] Elastic MapReduce HDFS에서 데이터 가져 오기 및 나가기

HADOOP

Elastic MapReduce HDFS에서 데이터 가져 오기 및 나가기

필자는 HDFS 내에서 특정 레이아웃을 필요로하는 Hadoop 프로그램을 작성했으며, 이후 HDFS에서 파일을 가져와야합니다. 그것은 단일 노드 Hadoop 설정에서 작동하며 Elastic MapReduce 내의 노드 중 10 개에서 작동하도록하고 싶습니다.

내가 한 일은 다음과 같다 :

./elastic-mapreduce --create --alive
JOBID="j-XXX" # output from creation
./elastic-mapreduce -j $JOBID --ssh "hadoop fs -cp s3://bucket-id/XXX /XXX"
./elastic-mapreduce -j $JOBID --jar s3://bucket-id/jars/hdeploy.jar --main-class com.ranjan.HadoopMain --arg /XXX

비동기식이지만 작업이 완료되면이 작업을 수행 할 수 있습니다.

./elastic-mapreduce -j $JOBID --ssh "hadoop fs -cp /XXX s3://bucket-id/XXX-output"
./elastic-mapreduce -j $JOBID --terminate

그래서 이런 종류의 작품이지만, 나는 clunky하고 내가 뭘 원하지 않습니다. 이것을하는 더 깨끗한 방법이 있습니까?

감사!

해결법

  1. ==============================

    1.파일을 맵 축소 작업으로 복사 할 distcp를 사용할 수 있습니다

    파일을 맵 축소 작업으로 복사 할 distcp를 사용할 수 있습니다

    # download from s3
    $ hadoop distcp s3://bucket/path/on/s3/ /target/path/on/hdfs/
    # upload to s3
    $ hadoop distcp /source/path/on/hdfs/ s3://bucket/path/on/s3/
    

    이렇게하면 전체 클러스터를 사용하여 s3에서 병렬로 복사 할 수 있습니다.

    (참고 : 각 경로의 후행 슬래시는 디렉토리에서 디렉토리로 복사하는 데 중요합니다)

  2. ==============================

    2.@ mat-kelcey, 명령 distcp는 S3의 파일이 최소 권한 수준을 가지기를 기대합니까? 어떤 이유로 부트 스트랩 또는 단계 스크립트에서 파일에 액세스 할 수 있도록 파일의 권한 수준을 "열기 / 다운로드"및 "모든 권한"에 대한 "사용 권한보기"로 설정해야합니다.

    @ mat-kelcey, 명령 distcp는 S3의 파일이 최소 권한 수준을 가지기를 기대합니까? 어떤 이유로 부트 스트랩 또는 단계 스크립트에서 파일에 액세스 할 수 있도록 파일의 권한 수준을 "열기 / 다운로드"및 "모든 권한"에 대한 "사용 권한보기"로 설정해야합니다.

  3. from https://stackoverflow.com/questions/7701678/getting-data-in-and-out-of-elastic-mapreduce-hdfs by cc-by-sa and MIT license