

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

# 자습서: Amazon EMR 시작하기
<a name="emr-gs"></a>

기본 Amazon EMR 클러스터를 빠르게 설정하고 Spark 애플리케이션을 실행하도록 워크플로를 살펴봅니다.

## Amazon EMR 클러스터 설정
<a name="emr-getting-started-overview"></a>

Amazon EMR을 사용하면 단 몇 분 만에 빅 데이터 프레임워크로 데이터를 처리하고 분석하도록 클러스터를 설정할 수 있습니다. 이 자습서에서는 Spark를 사용하여 샘플 클러스터를 시작하는 방법과 Amazon S3 버킷에 저장된 간단한 PySpark 스크립트를 실행하는 방법을 보여줍니다. 그리고 계획 및 구성, 관리, 정리와 같은 세 가지 주요 워크플로 카테고리에서 핵심 Amazon EMR 작업을 다룹니다.

[다음 단계](#emr-gs-next-steps) 섹션에서는 자습서를 진행하면서 더 자세한 주제로 연결되는 링크와 추가 단계에 대한 아이디어를 제공합니다. 질문이 있거나 문제가 있는 경우 [토론 포럼](https://forums.aws.amazon.com/forum.jspa?forumID=52)을 통해 Amazon EMR 팀에 문의하세요.

![\[계획 및 구성, 관리, 정리의 세 가지 주요 워크플로 카테고리를 요약한 Amazon EMR용 워크플로 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/emr/latest/ManagementGuide/images/emr-workflow.png)


**사전 조건**
+ Amazon EMR 클러스터를 시작하기 전에 [Amazon EMR을 설정하기 전에](emr-setting-up.md)에서 작업을 완료해야 합니다.

**비용**
+ 사용자가 생성하는 샘플 클러스터는 실제 환경에서 실행됩니다. 클러스터에는 최소 요금이 누적됩니다. 추가 요금이 발생하지 않도록 하려면 이 자습서의 마지막 단계에서 정리 작업을 완료해야 합니다. 요금은 Amazon EMR 요금에 따라 초당 요금으로 누적됩니다. 요금은 리전에 따라서도 다릅니다. 자세한 내용은 [Amazon EMR 요금](https://aws.amazon.com/emr/pricing)을 참조하세요.
+ Amazon S3에 저장하는 작은 파일에도 최소 요금이 누적될 수 있습니다. AWS 프리 티어의 사용 한도 내에 있는 경우 Amazon S3에 대한 요금의 일부 또는 전부가 면제될 수 있습니다. 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing) 및 [AWS 프리 티어](https://aws.amazon.com/free/)를 참조하세요.

## 1단계: 데이터 리소스 구성 및 Amazon EMR 클러스터 시작
<a name="emr-getting-started-plan-and-configure"></a>

### Amazon EMR에서 사용할 스토리지 준비
<a name="emr-getting-started-prepare-storage"></a>

Amazon EMR을 사용하는 경우 다양한 파일 시스템 중에서 선택하여 입력 데이터, 출력 데이터 및 로그 파일을 저장할 수 있습니다. 이 자습서에서는 EMRFS를 사용하여 데이터를 S3 버킷에 데이터를 저장합니다. EMRFS는 Amazon S3에서 일반 파일을 읽고 쓸 수 있게 지원하는 Hadoop 파일 시스템의 구현입니다. 자세한 내용은 [Amazon EMR에서 스토리지 및 파일 시스템 작업](emr-plan-file-systems.md) 단원을 참조하십시오.

이 자습서에서 사용할 버킷을 생성하려면 *Amazon Simple Storage Service 사용 설명서*에서 [S3 버킷을 생성하려면 어떻게 해야 하나요?](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/create-bucket.html)의 지침을 따릅니다. Amazon EMR 클러스터를 시작하려는 리전과 동일한 AWS 리전에 버킷을 생성합니다. 예를 들어, 미국 서부(오리건) us-west-2와 같습니다.

Amazon EMR에서 사용하는 버킷 및 폴더에는 다음과 같은 제한 사항이 있습니다.
+ 이름에 소문자, 숫자, 마침표(.), 하이픈(-)을 포함할 수 있습니다.
+ 이름은 숫자로 끝날 수 없습니다.
+ 버킷 이름은 *모든 AWS 계정*에서 고유해야 합니다.
+ 출력 폴더는 비어 있어야 합니다.

### Amazon EMR에서 입력 데이터로 애플리케이션 준비
<a name="emr-getting-started-prepare-app"></a>

Amazon EMR용 애플리케이션을 준비하는 가장 일반적인 방법은 애플리케이션과 해당 입력 데이터를 Amazon S3에 업로드하는 것입니다. 그런 다음 클러스터에 작업을 제출할 때 스크립트와 데이터에 대한 Amazon S3 위치를 지정합니다.

이 단계에서는 Amazon S3 버킷에 PySpark 스크립트 샘플을 업로드합니다. 사용할 수 있는 PySpark 스크립트가 제공됩니다. 스크립트는 식품 시설 검사 데이터를 처리하고 S3 버킷에 결과 파일을 반환합니다. 결과 파일에는 'Red' 유형 위반이 가장 많은 상위 10개 시설이 나열됩니다.

또한 PySpark 스크립트에서 처리할 수 있도록 Amazon S3에 샘플 입력 데이터를 업로드합니다. 입력 데이터는 2006년부터 2020년까지 워싱턴 주 킹 카운티의 보건부 검사 결과를 수정한 버전입니다. 자세한 내용은 [King County Open Data: Food Establishment Inspection Data](https://data.kingcounty.gov/Health-Wellness/Food-Establishment-Inspection-Data/f29f-zza5)를 참조하세요. 이 자습서의 레스토랑 데이터는 매우 큰 파일이므로 King 카운티 웹 사이트에서 직접 다운로드하지 마세요. 자습서를 완료하는 데 도움이 되도록 레코드 수가 적은 파일이 있는 다운로드를 아래에 제공합니다. 다음은 데이터 세트의 행 샘플입니다.

```
name,inspection_result,inspection_closed_business,violation_type,violation_points
100 LB CLAM,Unsatisfactory,FALSE,BLUE,5
100 PERCENT NUTRICION,Unsatisfactory,FALSE,BLUE,5
7-ELEVEN #2361-39423A,Complete,FALSE,,0
```

**EMR용 PySpark 스크립트 예제를 준비하는 방법**

1. 원하는 편집기에서 아래 예제 코드를 새 파일에 복사합니다.

   ```
   import argparse
   
   from pyspark.sql import SparkSession
   
   def calculate_red_violations(data_source, output_uri):
       """
       Processes sample food establishment inspection data and queries the data to find the top 10 establishments
       with the most Red violations from 2006 to 2020.
   
       :param data_source: The URI of your food establishment data CSV, such as 's3://amzn-s3-demo-bucket/food-establishment-data.csv'.
       :param output_uri: The URI where output is written, such as 's3://amzn-s3-demo-bucket/restaurant_violation_results'.
       """
       with SparkSession.builder.appName("Calculate Red Health Violations").getOrCreate() as spark:
           # Load the restaurant violation CSV data
           if data_source is not None:
               restaurants_df = spark.read.option("header", "true").csv(data_source)
   
           # Create an in-memory DataFrame to query
           restaurants_df.createOrReplaceTempView("restaurant_violations")
   
           # Create a DataFrame of the top 10 restaurants with the most Red violations
           top_red_violation_restaurants = spark.sql("""SELECT name, count(*) AS total_red_violations 
             FROM restaurant_violations 
             WHERE violation_type = 'RED' 
             GROUP BY name 
             ORDER BY total_red_violations DESC LIMIT 10""")
   
           # Write the results to the specified output URI
           top_red_violation_restaurants.write.option("header", "true").mode("overwrite").csv(output_uri)
   
   if __name__ == "__main__":
       parser = argparse.ArgumentParser()
       parser.add_argument(
           '--data_source', help="The URI for you CSV restaurant data, like an S3 bucket location.")
       parser.add_argument(
           '--output_uri', help="The URI where output is saved, like an S3 bucket location.")
       args = parser.parse_args()
   
       calculate_red_violations(args.data_source, args.output_uri)
   ```

1. 파일을 `health_violations.py`(으)로 저장합니다.

1. 이 자습서에서 생성한 Amazon S3의 버킷에 `health_violations.py`를 업로드합니다. 지침을 보려면 *Amazon Simple Storage Service 시작하기 안내서*에서 [버킷에 객체 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#uploading-an-object-bucket)를 참조하세요.

**EMR에 사용할 샘플 입력 데이터를 준비하는 방법**

1. zip 파일([food\$1establishment\$1data.zip](samples/food_establishment_data.zip))를 다운로드합니다.

1. 압축을 풀고 컴퓨터에 `food_establishment_data.zip`을 `food_establishment_data.csv`으로 저장합니다.

1. CSV 파일을 이 자습서에서 생성한 S3 버킷에 업로드합니다. 지침을 보려면 *Amazon Simple Storage Service 시작하기 안내서*에서 [버킷에 객체 업로드](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html#uploading-an-object-bucket)를 참조하세요.

EMR에서 사용할 데이터 설정에 대한 자세한 내용은 [Amazon EMR에서 처리할 입력 데이터 준비](emr-plan-input.md) 섹션을 참조하세요.

### Amazon EMR 클러스터 시작
<a name="emr-getting-started-launch-sample-cluster"></a>

스토리지 위치와 애플리케이션을 준비한 후 샘플 Amazon EMR 클러스터를 시작할 수 있습니다. 이 단계에서는 최신 [Amazon EMR 릴리스 버전](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)을 사용하여 Apache Spark 클러스터를 시작합니다.

------
#### [ Console ]

**콘솔을 사용하여 Spark가 설치된 클러스터를 시작하는 방법**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **EMR on EC2**에서 **클러스터**를 선택하고 **클러스터 생성**을 선택합니다.

1. **클러스터 생성** 페이지에서 **릴리스**, **인스턴스 유형**, **인스턴스 수** 및 **권한**의 기본값을 기록합니다. 이러한 필드는 범용 클러스터에 적합한 값으로 자동으로 채워집니다.

1. **클러스터 이름** 필드에 클러스터를 식별하는 데 도움이 되는 고유한 클러스터 이름(예: *My first cluster*)을 입력합니다. 클러스터 이름에는 <, >, \$1, \$1 또는 `(백틱) 문자를 포함할 수 없습니다.

1. **애플리케이션**에서 **Spark** 옵션을 선택하여 클러스터에 Spark를 설치합니다.
**참고**  
클러스터를 시작하기 전에 Amazon EMR 클러스터에서 원하는 애플리케이션을 선택합니다. 시작한 후에는 클러스터에서 애플리케이션을 추가하거나 클러스터에서 애플리케이션을 제거할 수 없습니다.

1. **클러스터 로그**에서 Amazon S3에 클러스터별 로그 게시 확인란을 선택합니다. **Amazon S3 위치** 값을 이전에 생성한 Amazon S3 버킷으로 바꾸고 **/logs**를 추가합니다. 예를 들어 **s3://amzn-s3-demo-bucket/logs**입니다. **/logs**를 추가하면 버킷에 'logs'라는 새 폴더가 생성되며, 이 폴더에서 Amazon EMR이 클러스터의 로그 파일을 복사할 수 있습니다.

1. **보안 구성 및 권한**에서 **EC2 키 페어**를 선택합니다. 동일한 섹션에서 **Amazon EMR에 대한 서비스 역할** 드롭다운 메뉴를 선택하고 **EMR\$1DefaultRole**을 선택합니다. 그런 다음, **인스턴스 프로파일에 대한 IAM 역할** 드롭다운 메뉴를 선택하고 **EMR\$1EC2\$1DefaultRole**을 선택합니다.

1. **클러스터 생성**을 선택하여 클러스터를 시작하고 클러스터 세부 정보 페이지를 엽니다.

1. 클러스터 이름 옆에서 클러스터 **상태**를 찾습니다. Amazon EMR이 클러스터를 프로비저닝함에 따라 상태가 **시작 중**에서 **실행 중**, **대기 중**으로 변경됩니다. 상태 업데이트를 확인하려면 오른쪽에서 새로 고침 아이콘을 선택하거나 브라우저를 새로 쳐야 할 수도 있습니다.

클러스터가 가동 및 실행 중이고 작업을 수락할 준비가 되면 클러스터 상태가 **대기 중**으로 변경됩니다. 클러스터 요약 읽기에 대한 자세한 내용은 [Amazon EMR 클러스터 상태 및 세부 정보 보기](emr-manage-view-clusters.md) 섹션을 참조하세요. 클러스터 상태에 대한 자세한 내용은 [클러스터 수명 주기 이해](emr-overview.md#emr-overview-cluster-lifecycle) 섹션을 참조하세요.

------
#### [ CLI ]

**와 함께 설치된 Spark로 클러스터를 시작하려면 AWS CLI**

1. 다음 명령을 사용하여 클러스터를 생성하는 데 사용할 수 있는 IAM 기본 역할을 생성합니다.

   ```
   aws emr create-default-roles
   ```

   `create-default-roles`에 대한 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/emr/create-default-roles.html)를 참조하세요.

1. 다음 명령을 사용하여 Spark 클러스터를 생성합니다. `--name` 옵션을 사용하여 클러스터 이름을 입력하고 `--ec2-attributes` 옵션을 사용하여 EC2 키 페어 이름을 지정합니다.

   ```
   aws emr create-cluster \
   --name "<My First EMR Cluster>" \
   --release-label <emr-5.36.2> \
   --applications Name=Spark \
   --ec2-attributes KeyName=<myEMRKeyPairName> \
   --instance-type m5.xlarge \
   --instance-count 3 \
   --use-default-roles
   ```

   `--instance-type`, `--instance-count` 및 `--use-default-roles`의 기타 필수 값을 기록합니다. 이 값은 범용 클러스터용으로 선택되었습니다. `create-cluster`에 대한 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html)를 참조하세요.
**참고**  
가독성을 위해 Linux 줄 연속 문자(\$1)가 포함됩니다. Linux 명령에 사용하거나 제외할 수 있습니다. Windows에서는 제외시키거나 캐럿(^)으로 바꿉니다.

   그러면 다음과 같은 결과가 표시됩니다. 출력에는 새 클러스터의 `ClusterId` 및 `ClusterArn`이 표시됩니다. `ClusterId`를 기록합니다. `ClusterId`를 사용하여 클러스터 상태를 확인하고 작업을 제출합니다.

   ```
   {
       "ClusterId": "myClusterId",
       "ClusterArn": "myClusterArn"
   }
   ```

1. 다음 명령을 사용하여 클러스터 상태를 확인합니다.

   ```
   aws emr describe-cluster --cluster-id <myClusterId>						
   ```

   새 클러스터에 대한 `Status` 객체와 함께 다음과 같은 결과가 표시됩니다.

   ```
   {
       "Cluster": {
           "Id": "myClusterId",
           "Name": "My First EMR Cluster",
           "Status": {
               "State": "STARTING",
               "StateChangeReason": {
                   "Message": "Configuring cluster software"
               }
           }
        }
   }
   ```

   Amazon EMR이 클러스터를 프로비저닝함에 따라 `State` 값이 `STARTING`에서 `RUNNING`, `WAITING`으로 변경됩니다.

클러스터가 가동 및 실행 중이고 작업을 수락할 준비가 되면 클러스터 상태가 `WAITING`으로 변경됩니다. 클러스터 상태에 대한 자세한 내용은 [클러스터 수명 주기 이해](emr-overview.md#emr-overview-cluster-lifecycle) 섹션을 참조하세요.

------

## 2단계: Amazon EMR 클러스터에 작업 제출
<a name="emr-getting-started-manage"></a>

### 작업 제출 및 결과 보기
<a name="emr-getting-started-submit-spark-step"></a>

클러스터를 시작한 후 실행 중인 클러스터에 작업을 제출하여 데이터를 처리하고 분석할 수 있습니다. *단계*로 Amazon EMR 클러스터에 작업을 제출합니다. 단계는 하나 이상의 작업으로 구성된 작업 단위입니다. 예를 들어, 값을 계산하거나 데이터를 전송 및 처리하는 단계를 제출할 수 있습니다. 단계는 클러스터를 실행할 때 제출하거나 실행 중인 클러스터에 제출할 수도 있습니다. 자습서의 이 부분에서는 실행 중인 클러스터에 단계로 `health_violations.py`를 제출합니다. 단계에 대한 자세한 내용은 [Amazon EMR 클러스터에 작업 제출](emr-work-with-steps.md) 섹션을 참조하세요.

------
#### [ Console ]

**콘솔을 사용하여 Spark 애플리케이션을 단계로 제출하는 방법**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **EMR on EC2**에서 **클러스터**를 선택하고 작업을 제출할 클러스터를 선택합니다. 클러스터 상태는 **대기 중**이어야 합니다.

1. **단계**를 선택하고 **단계 추가**를 선택합니다.

1. 다음 지침에 따라 단계를 구성합니다.
   + **유형**에서 **Spark 애플리케이션**을 선택합니다. **배포 모드**, **애플리케이션 위치**, **Spark-submit 옵션**에 대한 추가 필드가 표시됩니다.
   + **이름**에 새 이름을 입력합니다. 클러스터에 여러 단계가 있는 경우 각 단계에 이름을 지정하면 단계를 추적하는 데 도움이 됩니다.
   + **배포 모드**의 경우 기본값인 **클러스터 모드**를 그대로 둡니다. Spark 배포 모드에 대한 자세한 내용은 Apache Spark 설명서에서 [Cluster mode overview](https://spark.apache.org/docs/latest/cluster-overview.html)를 참조하세요.
   + **애플리케이션 위치**에는 Amazon S3의 `health_violations.py` 스크립트 위치(예: *s3://amzn-s3-demo-bucket/health\$1violations.py*)를 입력합니다.
   + **Spark-submit 옵션** 필드는 비워 둡니다. `spark-submit` 옵션에 대한 자세한 내용은 [Launching applications with spark-submit](https://spark.apache.org/docs/latest/submitting-applications.html#launching-applications-with-spark-submit)을 참조하세요.
   + **인수** 필드에 다음 인수 및 값을 입력합니다.

     ```
     --data_source s3://amzn-s3-demo-bucket/food_establishment_data.csv
     --output_uri s3://amzn-s3-demo-bucket/myOutputFolder
     ```

     *s3://amzn-s3-demo-bucket/food\$1establishment\$1data.csv*를 [Amazon EMR에서 입력 데이터로 애플리케이션 준비](#emr-getting-started-prepare-app)에서 준비한 입력 데이터의 S3 버킷 URI로 바꿉니다.

     *amzn-s3-demo-bucket*을 이 자습서에서 생성한 버킷 이름으로 바꾸고, *myOutputFolder*를 클러스터 출력 폴더의 이름으로 바꿉니다.
   + **단계 실패 시 작업**에서 기본 옵션(**계속**)을 수락합니다. 이렇게 하면 단계가 실패해도 클러스터가 계속 실행됩니다.

1. **추가**를 선택하여 단계를 제출합니다. 단계가 콘솔에 **보류 중** 상태로 나타납니다.

1. 단계 상태를 모니터링합니다. **대기 중**에서 **실행 중**으로, 그리고 **완료됨**으로 변경됩니다. 콘솔에서 상태를 업데이트하려면 **필터**의 오른쪽에 있는 새로 고침 아이콘을 선택합니다. 스크립트를 실행하는 데 약 1분이 걸립니다. 상태가 **완료됨**으로 변경되면 단계가 성공적으로 완료된 것입니다.

------
#### [ CLI ]

**를 사용하여 Spark 애플리케이션을 단계로 제출하려면 AWS CLI**

1. [Amazon EMR 클러스터 시작](#emr-getting-started-launch-sample-cluster)에서 실행한 클러스터의 `ClusterId`가 있는지 확인합니다. 다음 명령을 사용하여 클러스터 ID를 검색할 수도 있습니다.

   ```
   aws emr list-clusters --cluster-states WAITING							
   ```

1.  `add-steps` 명령 및 `ClusterId`를 사용하여 `health_violations.py`를 단계로 제출합니다.
   + *"My Spark Application"*를 바꾸어 단계 이름을 지정할 수 있습니다. `Args` 배열에서 *s3://amzn-s3-demo-bucket/health\$1violations.py*를 `health_violations.py` 애플리케이션 위치로 바꿉니다.
   + *s3://amzn-s3-demo-bucket/food\$1establishment\$1data.csv*를 `food_establishment_data.csv` 데이터세트의 S3 위치로 바꿉니다.
   + *s3://amzn-s3-demo-bucket/MyOutputFolder*를 지정된 버킷의 S3 경로와 클러스터 출력 폴더의 이름으로 바꿉니다.
   + `ActionOnFailure=CONTINUE`는 단계에 실패해도 클러스터가 계속 실행됨을 의미합니다.

   ```
   aws emr add-steps \
   --cluster-id <myClusterId> \
   --steps Type=Spark,Name="<My Spark Application>",ActionOnFailure=CONTINUE,Args=[<s3://amzn-s3-demo-bucket/health_violations.py>,--data_source,<s3://amzn-s3-demo-bucket/food_establishment_data.csv>,--output_uri,<s3://amzn-s3-demo-bucket/MyOutputFolder>]
   ```

   CLI를 사용하여 단계를 제출하는 방법에 대한 자세한 내용은 [AWS CLI 명령 참조](https://docs.aws.amazon.com/cli/latest/reference/emr/add-steps.html)를 참조하세요.

   단계를 제출한 후에는 `StepIds`의 목록에서 다음과 같은 출력이 표시됩니다. 한 단계를 제출했으므로 목록에 ID가 하나만 표시됩니다. 단계 ID를 복사합니다. 단계 ID를 사용하여 단계 상태를 확인합니다.

   ```
   {
       "StepIds": [
           "s-1XXXXXXXXXXA"
       ]
   }
   ```

1. `describe-step` 명령을 사용하여 단계 상태를 쿼리합니다.

   ```
   aws emr describe-step --cluster-id <myClusterId> --step-id <s-1XXXXXXXXXXA>							
   ```

   단계에 대한 정보와 함께 다음과 같은 결과가 표시됩니다.

   ```
   {
       "Step": {
           "Id": "s-1XXXXXXXXXXA",
           "Name": "My Spark Application",
           "Config": {
               "Jar": "command-runner.jar",
               "Properties": {},
               "Args": [
                   "spark-submit",
                   "s3://amzn-s3-demo-bucket/health_violations.py",
                   "--data_source",
                   "s3://amzn-s3-demo-bucket/food_establishment_data.csv",
                   "--output_uri",
                   "s3://amzn-s3-demo-bucket/myOutputFolder"
               ]
           },
           "ActionOnFailure": "CONTINUE",
           "Status": {
               "State": "COMPLETED"
           }
       }
   }
   ```

   단계가 실행됨에 따라 단계의 `State`가 `PENDING`에서 `RUNNING`, 그리고 `COMPLETED`로 바뀝니다. 단계를 실행하는 데 약 1분이 걸리므로 상태를 몇 번 확인해야 할 수도 있습니다.

`State`가 `COMPLETED`로 변경되면 단계가 성공적으로 수행된 것입니다.

------

단계 수명 주기에 대한 자세한 내용은 [단계를 실행하여 데이터 처리](emr-overview.md#emr-overview-steps) 섹션을 참조하세요.

### 결과 보기
<a name="emr-getting-started-view-results"></a>

단계가 성공적으로 실행되면 Amazon S3 출력 폴더에서 출력 결과를 볼 수 있습니다.

**`health_violations.py`의 결과를 보는 방법**

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. **버킷 이름**을 선택하고 단계를 제출할 때 지정한 출력 폴더를 선택합니다. 예를 들어, *amzn-s3-demo-bucket* 및 *myOutputFolder*와 같습니다.

1. 출력 폴더에 다음 항목이 나타나는지 확인합니다.
   + `_SUCCESS`라고 하는 작은 크기의 객체.
   + 결과를 포함하는 `part-` 접두사로 시작하는 CSV 파일.

1. 결과를 포함하는 개체를 선택하고 **다운로드**를 선택하여 결과를 로컬 파일 시스템에 저장합니다.

1. 원하는 편집기에서 결과를 엽니다. 출력 파일에는 Red 위반이 가장 많은 상위 10개 식품 시설이 나열됩니다. 또한 출력 파일에는 각 시설의 총 Red 위반 건수도 표시됩니다.

   다음은 `health_violations.py` 결과 예제입니다.

   ```
   name, total_red_violations
   SUBWAY, 322
   T-MOBILE PARK, 315
   WHOLE FOODS MARKET, 299
   PCC COMMUNITY MARKETS, 251
   TACO TIME, 240
   MCDONALD'S, 177
   THAI GINGER, 153
   SAFEWAY INC #1508, 143
   TAQUERIA EL RINCONSITO, 134
   HIMITSU TERIYAKI, 128
   ```

Amazon EMR 클러스터 출력에 대한 자세한 내용은 [Amazon EMR 클러스터 출력 위치 구성](emr-plan-output.md) 섹션을 참조하세요.

### (선택 사항) 실행 중인 Amazon EMR 클러스터에 연결
<a name="emr-getting-started-connect-to-cluster"></a>

Amazon EMR을 사용하는 경우 실행 중인 클러스터에 연결하여 로그 파일을 읽거나 클러스터를 디버깅하거나 Spark 쉘과 같은 CLI 도구를 사용할 수 있습니다. Amazon EMR을 사용하면 Secure Shell(SSH) 프로토콜을 사용하여 클러스터에 연결할 수 있습니다. 이 섹션에서는 SSH를 구성하고, 클러스터에 연결하며, Spark의 로그 파일을 보는 방법을 다룹니다. 클러스터에 연결하는 방법에 대한 자세한 내용은 [Amazon EMR 클러스터 노드에 대한 인증](emr-authenticate-cluster-connections.md) 섹션을 참조하세요.

#### 클러스터에 대한 SSH 연결 승인
<a name="emr-getting-started-restrict-ssh"></a>

클러스터에 연결하기 전에 클러스터 보안 그룹을 수정하여 인바운드 SSH 연결을 승인해야 합니다. Amazon EC2 보안 그룹은 클러스터에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 합니다. 이 자습서에서 클러스터를 생성할 때 Amazon EMR은 사용자를 대신하여 다음 보안 그룹을 생성했습니다.

**ElasticMapReduce-master**  
프라이머리 노드에 연결된 기본 Amazon EMR 관리형 보안 그룹. Amazon EMR 클러스터에서 프라이머리 노드는 클러스터를 관리하는 Amazon EC2 인스턴스입니다.

**ElasticMapReduce-slave**  
코어 및 태스크 노드에 연결된 기본 보안 그룹.

------
#### [ Console ]

**콘솔을 사용하여 프라이머리 보안 그룹의 신뢰할 수 있는 소스에 대한 SSH 액세스를 허용하는 방법**

보안 그룹을 편집하려면 클러스터가 속한 VPC의 보안 그룹을 관리할 권한이 있어야 합니다. 자세한 내용은 [사용자의 권한 변경](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html) 및 *IAM 사용 설명서*에서 EC2 보안 그룹을 관리할 수 있는 [예제 정책](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_examples_ec2_securitygroups-vpc.html)을 참조하세요.

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 왼쪽 탐색 창의 **EMR on EC2**에서 **클러스터**를 선택하고 업데이트할 클러스터를 선택합니다. 그러면 클러스터 세부 정보 페이지가 열립니다. 이 페이지의 **속성** 탭은 미리 선택해야 합니다.

1. **속성** 탭의 **네트워킹**에서 **EC2 보안 그룹(방화벽)** 옆의 화살표를 선택하여 이 섹션을 확장합니다. **프라이머리 노드**에서 보안 그룹 링크를 선택합니다. 다음 단계를 완료한 경우 선택적으로 이 단계로 돌아와서 **코어 및 태스크 노드**를 선택하고 다음 단계를 반복하여 SSH 클라이언트가 코어 및 태스크 노드에 액세스하도록 허용할 수 있습니다.

1. EC2 콘솔이 열립니다. **인바운드 규칙** 탭을 선택한 후 **인바운드 규칙 편집**을 선택합니다.

1. 다음 설정으로 퍼블릭 액세스를 허용하는 인바운드 규칙이 있는지 확인합니다. 존재하는 경우 **삭제**를 선택하여 제거합니다.
   + **유형**

     SSH
   + **포트**

     22
   + **소스**

     사용자 지정 0.0.0.0/0
**주의**  
2020년 12월 이전에 ElasticMapReduce-master 보안 그룹은 포트 22에서 모든 소스의 인바운드 트래픽을 허용하도록 사전 구성된 규칙을 적용했습니다. 이 규칙은 프라이머리 노드에 대한 초기 SSH 연결을 단순화하기 위해 생성되었습니다. 이 인바운드 규칙을 제거하고 신뢰할 수 있는 소스로 이동하는 트래픽을 제한하는 것이 좋습니다.

1. 규칙 목록의 하단으로 스크롤하고 **규칙 추가**를 선택합니다.

1. **유형**에서 **SSH**를 선택합니다. SSH를 선택하면 **프로토콜**에는 **TCP**가 자동으로 입력되고 **포트 범위**에는 **22**가 입력됩니다.

1. 소스의 경우 **내 IP**를 선택하면 IP 주소가 소스 주소로 자동 추가됩니다. 신뢰할 수 있는 **사용자 지정** 클라이언트 IP 주소 범위를 추가하거나 다른 클라이언트에 대한 추가 규칙을 생성할 수도 있습니다. 많은 네트워크 환경에서 IP 주소를 동적으로 할당하므로 향후에 신뢰할 수 있는 클라이언트의 IP 주소를 업데이트해야 할 수 있습니다.

1. **저장**을 선택합니다.

1. 선택적으로 목록에서 **코어 및 태스크 노드**를 선택하고 위의 단계를 반복하여 코어 및 태스크 노드에 대한 SSH 클라이언트 액세스를 허용합니다.

------

#### 를 사용하여 클러스터에 연결 AWS CLI
<a name="emr-getting-started-connect-ssh"></a>

운영 체제와 상관없이 AWS CLI를 사용하여 클러스터에 대한 SSH 연결을 생성할 수 있습니다.

**를 사용하여 클러스터에 연결하고 로그 파일을 보려면 AWS CLI**

1. 클러스터에 대한 SSH 연결을 열려면 다음 명령을 사용합니다. *<mykeypair.key>*를 키 페어 파일의 전체 경로 및 파일 이름으로 바꿉니다. 예를 들어 `C:\Users\<username>\.ssh\mykeypair.pem`입니다.

   ```
   aws emr ssh --cluster-id <j-2AL4XXXXXX5T9> --key-pair-file <~/mykeypair.key>						
   ```

1. `/mnt/var/log/spark`로 이동하여 클러스터의 프라이머리 노드에서 Spark 로그에 액세스합니다. 그런 다음 해당 위치에 있는 파일을 봅니다. 프라이머리 노드의 추가 로그 파일 목록은 [프라이머리 노드에서 로그 파일 보기](emr-manage-view-web-log-files.md#emr-manage-view-web-log-files-master-node) 섹션을 참조하세요.

   ```
   cd /mnt/var/log/spark
   ls
   ```

### Amazon SageMaker AI Unified Studio를 사용하여 Amazon EMR 클러스터 관리
<a name="emr-getting-started-connect-to-cluster-sagemaker"></a>

 Amazon EMR on EC2는 Amazon SageMaker AI Unified Studio에서도 지원되는 컴퓨팅 유형입니다. Amazon SageMaker AI Unified Studio에서 [EMR on EC2 리소스를 사용하고 관리하는 방법은 EC2의 Amazon](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/managing-emr-on-ec2.html) EMR 관리를 참조하세요. EC2 

## 3단계: Amazon EMR 리소스 정리
<a name="emr-getting-started-clean-up"></a>

### 클러스터 종료
<a name="emr-getting-started-stop-cluster"></a>

이제 클러스터에 작업을 제출하고 PySpark 애플리케이션의 결과를 확인했으므로 클러스터를 종료할 수 있습니다. 클러스터를 종료하면 클러스터와 관련된 모든 Amazon EMR 요금 청구 및 Amazon EC2 인스턴스가 중지됩니다.

클러스터를 종료하면 Amazon EMR은 클러스터에 대한 메타데이터를 2개월 동안 무료로 보관합니다. 아카이브된 메타데이터는 새 작업을 위해 [클러스터를 복제](clone-console.md)하거나 참조용으로 클러스터 구성을 다시 검토하는 데 도움이 됩니다. 클러스터가 S3에 쓰는 데이터 또는 클러스터의 HDFS에 저장된 데이터는 메타데이터에 포함되지 *않습니다*.

**참고**  
Amazon EMR 콘솔에서는 클러스터를 종료한 후 목록 보기에서 클러스터를 삭제할 수 없습니다. Amazon EMR이 메타데이터를 지우면 종료된 클러스터가 콘솔에서 사라집니다.

------
#### [ Console ]

**콘솔을 사용하여 클러스터를 종료하는 방법**

1. 에 로그인 AWS Management Console하고 [https://console.aws.amazon.com/emr](https://console.aws.amazon.com/emr) Amazon EMR 콘솔을 엽니다.

1. 먼저 **클러스터**를 선택하고 종료할 클러스터를 선택합니다.

1. **작업** 드롭다운 메뉴에서 **클러스터 종료**를 선택합니다.

1. 대화 상자에서 **종료**를 선택합니다. 클러스터 구성에 따라 종료하는 데 5\$110분이 소요될 수 있습니다. Amazon EMR 클러스터 생성에 대한 자세한 내용은 [시작 중, 실행 중 또는 대기 중 상태인 Amazon EMR 클러스터 종료](UsingEMR_TerminateJobFlow.md) 섹션을 참조하세요.

------
#### [ CLI ]

**를 사용하여 클러스터를 종료하려면 AWS CLI**

1. 다음 명령을 사용하여 클러스터 종료 프로세스를 시작합니다. *<myClusterId>*를 샘플 클러스터 ID로 바꿉니다. 명령은 출력을 반환하지 않습니다.

   ```
   aws emr terminate-clusters --cluster-ids <myClusterId>
   ```

1. 클러스터 종료 프로세스가 진행 중인지 확인하려면 다음 명령을 사용하여 클러스터 상태를 확인합니다.

   ```
   aws emr describe-cluster --cluster-id <myClusterId>									
   ```

   다음은 JSON 형식의 출력 예제입니다. 클러스터 `Status`가 **`TERMINATING`**에서 **`TERMINATED`**로 변경됩니다. 클러스터 구성에 따라 종료하는 데 5분\$110분이 소요될 수 있습니다. Amazon EMR 클러스터 종료에 대한 자세한 내용은 [시작 중, 실행 중 또는 대기 중 상태인 Amazon EMR 클러스터 종료](UsingEMR_TerminateJobFlow.md) 섹션을 참조하세요.

   ```
   {
       "Cluster": {
           "Id": "j-xxxxxxxxxxxxx",
           "Name": "My Cluster Name",
           "Status": {
               "State": "TERMINATED",
               "StateChangeReason": {
                   "Code": "USER_REQUEST",
                   "Message": "Terminated by user request"
               }
           }
       }
   }
   ```

------

### S3 리소스 삭제
<a name="emr-getting-started-delete-bucket"></a>

추가 비용을 피하려면 Amazon S3 버킷을 삭제해야 합니다. 버킷을 삭제하면 이 자습서의 모든 Amazon S3 리소스가 제거됩니다. 버킷에는 다음이 포함되어야 합니다.
+ PySpark 스크립트
+ 입력 데이터 세트
+ 출력 결과 폴더
+ 로그 파일 폴더

PySpark 스크립트 또는 출력을 다른 위치에 저장한 경우 저장된 파일을 삭제하려면 추가 단계를 수행해야 할 수 있습니다.

**참고**  
버킷을 삭제하기 전에 클러스터를 종료해야 합니다. 그렇지 않으면 버킷을 비울 수 없습니다.

버킷을 삭제하려면 *Amazon Simple Storage Service 사용 설명서*에서 [S3 버킷을 삭제하려면 어떻게 해야 하나요?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)의 지침을 따릅니다.

## 다음 단계
<a name="emr-gs-next-steps"></a>

이제 첫 번째 Amazon EMR 클러스터를 처음부터 끝까지 실행했습니다. 빅 데이터 애플리케이션 준비 및 제출, 결과 보기, 클러스터 종료와 같은 필수 EMR 작업도 완료했습니다.

Amazon EMR 워크플로를 사용자 지정하는 방법에 대해 자세히 알아보려면 다음 주제를 참조하세요.

### Amazon EMR용 빅 데이터 애플리케이션 살펴보기
<a name="emr-gs-next-explore-apps"></a>

[Amazon EMR 릴리스 안내서](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)에서 클러스터에 설치할 수 있는 빅 데이터 애플리케이션을 검색하고 비교해보세요. 릴리스 안내서에는 각 EMR 릴리스 버전이 자세히 설명되어 있으며 Amazon EMR에서 Spark 및 Hadoop과 같은 프레임워크를 사용하기 위한 팁도 포함되어 있습니다.

### 클러스터 하드웨어, 네트워킹 및 보안 계획
<a name="emr-gs-next-plan-clusters"></a>

이 자습서에서는 고급 옵션을 구성하지 않고 간단한 EMR 클러스터를 생성했습니다. 고급 옵션을 사용하면 Amazon EC2 인스턴스 유형, 클러스터 네트워킹 및 클러스터 보안을 지정할 수 있습니다. 요구 사항을 충족하는 클러스터를 계획하고 시작하는 방법에 대한 자세한 내용은 [Amazon EMR 클러스터 계획, 구성 및 시작](emr-plan.md) 및 [Amazon EMR의 보안](emr-security.md) 섹션을 참조하세요.

### 클러스터 관리
<a name="emr-gs-next-manage-clusters"></a>

[Amazon EMR 클러스터 관리](emr-manage.md)에서 클러스터를 실행하는 작업에 대해 자세히 알아봅니다. 클러스터를 관리하기 위해 클러스터에 연결하고, 단계를 디버깅하며, 클러스터 활동 및 상태를 추적할 수 있습니다. 또한 [EMR Managed Scaling](emr-managed-scaling.md)을 통해 워크로드 수요에 따라 클러스터 리소스를 조정할 수 있습니다.

### 다른 인터페이스 사용
<a name="emr-gs-next-interfaces"></a>

Amazon EMR 콘솔 외에도 , AWS Command Line Interface웹 서비스 API 또는 지원되는 여러 AWS SDKs. 자세한 내용은 [관리 인터페이스](emr-overview-benefits.md#emr-what-tools) 단원을 참조하십시오.

또한 다양한 방법으로 Amazon EMR 클러스터에 설치된 애플리케이션과 상호 작용할 수 있습니다. Apache Hadoop과 같은 일부 애플리케이션은 사용자가 볼 수 있는 웹 인터페이스를 게시합니다. 자세한 내용은 [Amazon EMR 클러스터에 호스팅된 웹 인터페이스 보기](emr-web-interfaces.md) 단원을 참조하십시오.

### EMR 기술 블로그 찾아보기
<a name="emr-gs-next-browse-blogs"></a>

새로운 Amazon EMR 기능에 대한 샘플 안내와 심층적인 기술 논의를 보려면 [AWS 빅 데이터 블로그](https://aws.amazon.com/blogs/big-data/tag/amazon-emr/)를 참조하세요.