

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

# 사용자 지정 JAR 단계 제출
<a name="emr-launch-custom-jar-cli"></a>

사용자 지정 JAR은 Amazon S3에 업로드할 수 있는 컴파일된 Java 프로그램을 실행합니다. 시작하려는 Hadoop의 버전에 맞게 프로그램을 컴파일하고 Amazon EMR `CUSTOM_JAR` 단계를 제출해야 합니다. JAR 파일 컴파일에 대한 자세한 내용은 [Amazon EMR을 사용하여 바이너리 빌드](emr-build-binaries.md) 섹션을 참조하세요.

Hadoop MapReduce 애플리케이션 빌드 방법에 대한 자세한 내용은 Apache Hadoop 설명서에서 [MapReduce Tutorial](http://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html)을 참조하세요.

이 섹션에서는 Amazon EMR에서 사용자 지정 JAR 단계 제출의 기본 사항을 다룹니다. 사용자 지정 JAR 단계를 제출하면 Java 프로그래밍 언어를 사용하여 데이터를 처리하기 위한 스크립트를 작성할 수 있습니다.

## 콘솔을 사용하여 사용자 지정 JAR 단계 제출
<a name="ConsoleCreatingaCustomJARJob"></a>

이 예제는 Amazon EMR 콘솔을 사용하여 사용자 지정 JAR 단계를 실행 중인 클러스터에 제출하는 방법을 설명합니다.

**콘솔을 사용하여 사용자 지정 JAR 단계를 제출하는 방법**

1. [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr/) Amazon EMR 콘솔을 엽니다.

1. **클러스터 목록**에서 클러스터의 이름을 선택합니다.

1. **단계** 섹션으로 스크롤하여 섹션을 확장한 후 **단계 추가**를 선택합니다.

1. **단계 추가** 대화 상자에서 다음을 수행합니다.
   + **Step type(단계 유형)**에서 **Custom JAR(사용자 지정 JAR)**을 선택합니다.
   + **Name(이름)**에서 기본 이름(Custom JAR)을 수락하거나 새 이름을 입력합니다.
   + **JAR S3 location(JAR S3 위치)**에서 JAR 파일의 위치를 입력하거나 찾아봅니다. JAR 위치는 S3에 대한 경로 또는 클래스 경로의 정규화된 Java 클래스일 수 있습니다.
   + **Arguments(인수)**에 필수 인수를 공백으로 구분된 문자열로 입력하거나 필드를 비워 둡니다.
   + **실패 시 작업**에서 기본 옵션(**계속**)을 그대로 사용합니다.

1. **추가**를 선택합니다. 단계가 콘솔에 [Pending] 상태로 나타납니다.

1. 단계의 상태는 단계가 실행됨에 따라 대기 중에서 실행 중을 거쳐 완료됨으로 바뀝니다. 상태를 업데이트하려면 Actions(작업) 열 위의 **Refresh(새로 고침)** 아이콘을 선택합니다.

## 를 사용하여 클러스터 시작 및 사용자 지정 JAR 단계 제출 AWS CLI
<a name="emr-dev-create-jar-cli"></a>

**클러스터를 시작하고를 사용하여 사용자 지정 JAR 단계를 제출하려면 AWS CLI**

클러스터를 시작하고를 사용하여 사용자 지정 JAR 단계를 제출하려면 `--steps` 파라미터와 함께 `create-cluster` 하위 명령을 AWS CLI입력합니다.
+ 클러스터를 시작하고 사용자 지정 JAR 단계를 제출하려면 다음 명령을 입력하고 *myKey*를 EC2 키 페어의 이름으로 바꾸며 *amzn-s3-demo-bucket*을 버킷 이름으로 바꿉니다.

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 \
  --applications Name=Hue Name=Hive Name=Pig --use-default-roles \
  --ec2-attributes KeyName=myKey --instance-type m5.xlarge --instance-count 3 \
  --steps Type=CUSTOM_JAR,Name="Custom JAR Step",ActionOnFailure=CONTINUE,Jar=pathtojarfile,Args=["pathtoinputdata","pathtooutputbucket","arg1","arg2"]
  ```
**참고**  
가독성을 위해 Linux 줄 연속 문자(\$1)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

  `--instance-groups` 파라미터를 사용하지 않고 인스턴스 수를 지정하면 단일 프라이머리 노드가 시작되고 나머지 인스턴스는 코어 노드로 시작됩니다. 모든 노드에서 이 명령에 지정한 인스턴스 유형을 사용합니다.
**참고**  
Amazon EMR 서비스 역할과 EC2 인스턴스 프로파일을 아직 생성하지 않았다면 `aws emr create-default-roles` 하위 명령을 입력하기 전에 `create-cluster`를 입력하여 생성합니다.

  에서 Amazon EMR 명령을 사용하는 방법에 대한 자세한 내용은 섹션을 AWS CLI참조하세요[https://docs.aws.amazon.com/cli/latest/reference/emr](https://docs.aws.amazon.com/cli/latest/reference/emr).

## 타사 종속성
<a name="emr-custom-jar-dependency"></a>

때로는 프로그램과 함께 사용하기 위해 MapReduce 클래스 경로 JAR에 포함할 필요가 있을 수 있습니다. 이 작업에는 두 가지 옵션이 있습니다.
+ [를 사용하여 클러스터 시작 및 사용자 지정 JAR 단계 제출 AWS CLI](#emr-dev-create-jar-cli)의 절차의 경우 `--libjars s3://URI_to_JAR`을 단계 옵션에 포함합니다.
+ `mapred-site.xml`에서 수정된 `mapreduce.application.classpath` 설정을 사용하여 클러스터를 시작합니다. `mapred-site` 구성 분류를 사용하세요. 를 사용하는 단계를 사용하여 클러스터를 생성하려면 다음과 AWS CLI같습니다.

  ```
  aws emr create-cluster --release-label emr-7.12.0 \
  --applications Name=Hue Name=Hive Name=Pig --use-default-roles \
  --instance-type m5.xlarge --instance-count 2  --ec2-attributes KeyName=myKey \
  --steps Type=CUSTOM_JAR,Name="Custom JAR Step",ActionOnFailure=CONTINUE,Jar=pathtojarfile,Args=["pathtoinputdata","pathtooutputbucket","arg1","arg2"] \
  --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/myfolder/myConfig.json
  ```

  `myConfig.json`:

  ```
  [
      {
        "Classification": "mapred-site",
        "Properties": {
          "mapreduce.application.classpath": "path1,path2"
        }
      }
    ]
  ```

  쉼표로 구분된 경로 목록을 각 작업의 JVM 클래스 경로에 추가해야 합니다.