분산 캐시를 사용하여 파일 가져오기 - 아마존 EMR

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

분산 캐시를 사용하여 파일 가져오기

DistributedCache 맵 또는 축소 작업에서 공통 데이터에 액세스해야 할 때 효율성을 높일 수 있는 하둡 기능입니다. 클러스터를 만들 때 설치되지 않은 기존 애플리케이션이나 바이너리를 사용하는 클러스터의 경우 다음을 사용할 수 있습니다.DistributedCache 이러한 파일을 가져오려면 이 기능을 사용하면 클러스터 노드가 다른 클러스터 노드에서 파일을 가져오는 대신 로컬 파일 시스템에서 가져온 파일을 읽을 수 있습니다.

자세한 내용은 http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/filecache/ DistributedCache .html을 참조하십시오.

다음과 같이 호출합니다.DistributedCache 클러스터를 생성할 때. 파일은 하둡 작업을 시작하기 직전에 캐시되며 파일은 작업이 지속되는 동안 캐시된 상태로 유지됩니다. 하둡 호환 파일 시스템 (예: HDFS Amazon S3) 에 저장된 파일을 캐시할 수 있습니다. 파일 캐시의 기본 크기는 10GB입니다. 캐시 크기를 변경하려면 부트스트랩 작업을 사용하여 하둡 파라미터 local.cache.size를 다시 구성합니다. 자세한 내용은 부트스트랩 작업을 생성하여 추가 소프트웨어 설치 단원을 참조하십시오.

지원되는 파일 형식

DistributedCache 단일 파일과 아카이브를 모두 허용합니다. 개별 파일은 읽기 전용으로 캐시됩니다. 실행 파일과 바이너리 파일에는 실행 권한이 설정되어 있습니다.

아카이브는 gzip과 같은 유틸리티를 사용하여 패키지된 하나 이상의 파일입니다.DistributedCache 압축된 파일을 각 코어 노드에 전달하고 캐싱의 일부로 아카이브 압축을 풉니다.DistributedCache 다음과 같은 압축 형식을 지원합니다.

  • zip

  • tgz

  • tar.gz

  • tar

  • jar

캐시된 파일의 위치

DistributedCache 파일을 코어 노드에만 복사합니다. 클러스터에 코어 노드가 없는 경우 DistributedCache 파일을 기본 노드에 복사합니다.

DistributedCache 심볼릭 링크를 사용하여 캐시 파일을 매퍼 및 리듀서의 현재 작업 디렉토리에 연결합니다. symlink는 실제 파일 위치가 아니라 파일 위치의 별칭입니다. 파라미터 값(yarn-site.xmlyarn.nodemanager.local-dirs)은 임시 파일의 위치를 지정합니다. Amazon은 이 파라미터를 로 /mnt/mapred 설정하거나 인스턴스 유형 및 EMR 버전에 따라 일부 변형으로 EMR 설정합니다. 예를 들어, 인스턴스 유형에는 두 개의 휘발성 볼륨이 있으므로 설정에 /mnt/mapred/mnt1/mapred가 있을 수 있습니다. 캐시 파일은 /mnt/mapred/taskTracker/archive에 있는 임시 파일 위치인 하위 디렉터리에 있습니다.

단일 파일을 캐싱하는 경우 DistributedCache 파일을 archive 디렉터리에 넣습니다. 아카이브를 캐시하는 경우 DistributedCache 파일을 압축 해제하고 아카이브 파일 이름과 같은 이름의 하위 디렉토리를 만듭니다. /archive 개별 파일은 새 하위 디렉터리에 있습니다.

다음을 사용할 수 있음: DistributedCache 스트리밍을 사용할 때만.

스트리밍 애플리케이션에서 캐시된 파일에 액세스

매퍼 또는 reducer 애플리케이션에서 캐시된 파일에 액세스하려면 현재 작업 디렉터리(./)를 애플리케이션 경로에 추가했으며 캐시 파일이 현재 작업 디렉터리에 있는 것처럼 캐시 파일을 참조했는지 확인합니다.

스트리밍 애플리케이션에서 캐시된 파일에 액세스

를 사용할 수 있습니다. AWS Management Console 그리고 AWS CLI 분산 캐시를 사용하는 클러스터를 만들려면

Console
새 콘솔을 사용하여 분산 캐시 파일을 지정하는 방법
  1. 에 로그인하십시오. AWS Management Console를 누르고 https://console.aws.amazon.com/emr에서 아마존 EMR 콘솔을 엽니다.

  2. 왼쪽 탐색 창의 EMREC2on에서 [클러스터] 를 선택한 다음 [클러스터 생성] 을 선택합니다.

  3. 단계에서 단계 추가를 선택합니다. 그러면 단계 추가 대화 상자가 열립니다. 인수 필드에서 캐시에 저장할 파일과 아카이브를 포함합니다. 파일의 크기(또는 아카이브 파일의 총 파일 크기)는 할당된 캐시 크기보다 작아야 합니다.

    분산 캐시에 개별 파일을 추가하려는 경우 -cacheFile 다음에 파일의 이름 및 위치, 파운드(#) 기호, 그리고 파일에 제공할 이름(파일이 로컬 캐시에 배치되는 경우)을 차례로 지정합니다. 다음 예제에서는 분산 캐시에 개별 파일을 추가하는 방법을 보여줍니다.

    -cacheFile \ s3://DOC-EXAMPLE-BUCKET/file-name#cache-file-name

    분산 캐시에 아카이브 파일을 추가하려는 경우 -cacheArchive 다음에 Amazon S3 내 파일의 위치, 파운드(#) 기호 및 로컬 캐시에서 파일 모음에 제공할 이름을 차례로 입력합니다. 다음 예제에서는 분산 캐시에 아카이브 파일을 추가하는 방법을 보여줍니다.

    -cacheArchive \ s3://DOC-EXAMPLE-BUCKET/archive-name#cache-archive-name

    다른 대화 상자 필드에 적절한 값을 입력합니다. 옵션은 단계 유형에 따라 다릅니다. 단계를 추가하고 대화 상자를 종료하려면 단계 추가를 선택합니다.

  4. 클러스터에 적용할 다른 옵션을 선택합니다.

  5. 클러스터를 시작하려면 클러스터 생성을 선택합니다.

CLI
를 사용하여 분산 캐시 파일을 지정하려면 AWS CLI
  • 클러스터가 생성될 때 스트리밍 단계를 제출하려면 create-cluster 명령을 --steps 파라미터와 함께 입력합니다. 를 사용하여 분산 캐시 파일을 지정하려면 AWS CLI스트리밍 단계를 제출할 때 적절한 인수를 지정하십시오.

    분산 캐시에 개별 파일을 추가하려는 경우 -cacheFile 다음에 파일의 이름 및 위치, 파운드(#) 기호, 그리고 파일에 제공할 이름(파일이 로컬 캐시에 배치되는 경우)을 차례로 지정합니다.

    분산 캐시에 아카이브 파일을 추가하려는 경우 -cacheArchive 다음에 Amazon S3 내 파일의 위치, 파운드(#) 기호 및 로컬 캐시에서 파일 모음에 제공할 이름을 차례로 입력합니다. 다음 예제에서는 분산 캐시에 아카이브 파일을 추가하는 방법을 보여줍니다.

    Amazon EMR 명령 사용에 대한 자세한 내용은 다음을 참조하십시오. AWS CLI을 참조하십시오https://docs.aws.amazon.com/cli/latest/reference/emr.

예 1

다음 명령을 입력하여 클러스터를 시작하고 -cacheFile를 사용하여 sample_dataset_cached.dat 파일을 캐시에 추가하는 스트리밍 단계를 제출합니다.

aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheFile","s3://my_bucket/sample_dataset.dat#sample_dataset_cached.dat"]

--instance-groups 파라미터를 사용하지 않고 인스턴스 수를 지정하면 단일 프라이머리 노드가 시작되고 나머지 인스턴스는 코어 노드로 시작됩니다. 모든 노드는 이 명령에 지정된 인스턴스 유형을 사용합니다.

이전에 기본 EMR 서비스 역할 및 EC2 인스턴스 프로필을 생성하지 않은 경우 create-cluster 하위 명령을 입력하기 전에 입력하여 생성하십시오. aws emr create-default-roles

예 2

다음 명령은 스트리밍 클러스터의 생성 방법을 보여 주며 -cacheArchive를 사용하여 파일 아카이브를 캐시에 추가합니다.

aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 --steps Type=STREAMING,Name="Streaming program",ActionOnFailure=CONTINUE,Args=["--files","s3://my_bucket/my_mapper.py s3://my_bucket/my_reducer.py","-mapper","my_mapper.py","-reducer","my_reducer.py,"-input","s3://my_bucket/my_input","-output","s3://my_bucket/my_output", "-cacheArchive","s3://my_bucket/sample_dataset.tgz#sample_dataset_cached"]

--instance-groups 파라미터를 사용하지 않고 인스턴스 수를 지정하면 단일 프라이머리 노드가 시작되고 나머지 인스턴스는 코어 노드로 시작됩니다. 모든 노드는 이 명령에 지정된 인스턴스 유형을 사용합니다.

이전에 기본 EMR 서비스 역할 및 EC2 인스턴스 프로필을 만들지 않은 경우 create-cluster 하위 명령을 aws emr create-default-roles 입력하기 전에 입력하여 생성합니다.