본문 바로가기

AWS34

[EMR] EMR 생성시 설정 변경 AWS EMR은 클러스터 생성 시점에 하둡 클러스터의 설정을 변경할 수 있습니다. hdfs-site.xml, core-site.xml의 설정을 json 형태로 전달하여 클러스터 생성 시점에 설정을 변경할 수 있습니다. https://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-configure-apps.html 애플리케이션 구성 - Amazon EMR Amazon EMR API 설명 및 나열 작업은 Amazon EMR 작업 흐름의 일부로 사용되는 사용자 지정 및 구성 가능한 설정을 내보내며 이 설정은 일반 텍스트로 표시됩니다. 이러한 설정에 암호와 같은 민감한 정 docs.aws.amazon.com 설정 변경 방법 클러스터 생성 시점에 "고급 옵션"으로.. 2021. 12. 1.
[AWS-EMR] EMR 생성중 The requested instance type c4.2xlarge is not supported in the requested availability zone. 오류 AWS EMR을 생성하는 중 요청한 인스턴스 타입이 지원하지 않는 다는 오류가 발생하느 경우가 있습니다. 이럴때는 EC2 > Instance Types 에서 사용하고자 하는 인스턴스 타입을 선택하고 Networking 항목에서 생성할 수 있는 네트워크 대역을 확인하여 해당 대역을 선택하면 생성할 수 있습니다. 여기서 생성 가능한 영역을 확인하고 EMR을 생성할 때 고급 옵션에서 단계2 하드웨어 > Networking > EC2 서브넷 에서 사용할 수 있는 네트워크 영역을 선택하면 됩니다. 2021. 4. 20.
[AWS] EMR에 ssh로 접속하는 방법 AWS에서 EMR을 생성하고 ssh 연결을 설정하는 방법은 다음과 같습니다. EC2 키페어(KeyPair) 생성 EMR 생성시 키페어 선택 ssh 인바운드 규칙 추가 키페어로 접속 EC2 키페어 생성 AWS 콘솔의 EC2 대시보드에서 키 페어를 먼저 생성합니다. 키 페어를 생성하면 로컬에 생성한 키페어가 생성한 이름으로 xxx.pem 형식으로 다운로드 됩니다. EMR 생성시 키페어 선택 EC2 생성시 이전에 생성한 키페어를 선택합니다. ssh 인바운드 규칙 추가 EMR의 마스터 노드에 접속하기 위한 인바운드 규칙을 추가해야 합니다. 보안 및 액세스 > 마스터 보안 그룹 > ElasticMapReduce-master 선택 보안그룹에서 ElasticMapReduce-master 선택 인바운드 규칙 추가 유형.. 2020. 10. 7.
[AWS] WARN internal.BasicProfileConfigLoader: Your profile name includes 경고 없애는 방법 EMR에서 hadoop fs 명령을 이용할 때 다음과 같은 경고 문구가 출력되는 경우가 있습니다. 작업에는 문제가 없지만, 작업 로그가 지저분해 질 수 있습니다. 이 경고는 ~/.aws의 aws 명령어의 프로파일에 profile 문구가 추가 되어서 발생합니다. ~/.aws/config, ~/.aws/credentials 파일을 확인하여 프로파일명을 수정하면 됩니다. 20/06/12 01:40:02 WARN internal.BasicProfileConfigLoader: Your profile name includes a 'profile ' prefix. This is considered part of the profile name in the Java SDK, so you will need to inclu.. 2020. 6. 16.
[EMR] EMR 장기간 운영시 HDFS의 edits 파일 확인 및 삭제 EMR을 장기간 운영하면 HDFS edits 파일이 로컬에 계속 쌓이게 됩니다. EMR은 기본적으로 세컨더리 네임노드를 실행하지 않기 때문에 HDFS를 빈번하게 사용하면 무시할 수 없는 속도로 파일이 생성됩니다. 운영중에 세컨더리네임노드를 실행하면 edits 파일을 복사해서 정리하기 때문에 10G의 edits 파일을 로컬에 복사하여 20G가 되게 되고 로컬 디스크에 용량이 충분하지 않다면 정리를 할 수 없습니다. 네임노드를 재 실행할 때 복구를 하지 않고, 신규로 생성할 것이라면 로컬의 edits 파일을 삭제 하면 됩니다. 삭제 명령은 다음과 같습니다. # 수정일자 확인후 6일전 파일은 삭제 sudo find /mnt/namenode/current/ -type f -name "edits_0*" -mtim.. 2020. 5. 22.
[EMR] EMR 하둡 클러스터에서 실행중인 세 가지 히스토리 서버 EMR의 마스터 노드에서 실행되는 여러 가지 서비스 중에서 작업 실행 정보를 확인할 수 있는 히스토리 서버 3가지에 대해서 알아보겠습니다. 얀 타임라인 서버 맵리듀스 히스토리 서버 스파크 히스토리 서버 얀 타임라인 서버(YARN Timeline Server) 얀 타임라인 서버는 하둡 클러스터를 통해 작업된 애플리케이션의 기록을 저장하고 조회할 수 있습니다. 실행 중인 애플리케이션, 작업 완료된 애플리케이션의 큐 정보, 사용자 정보, 작업 상태를 확인할 수 있습니다. 사용 방법 curl -s http://$(hostname -f):8188/ws/v1/timeline curl -s http://$(hostname -f):8188/ws/v1/timeline/DS_APP_ATTEMPT curl -s http:/.. 2020. 3. 6.
[EMR] EMR 하둡 클러스터의 기본 포트 및 사용법 EMR 하둡 클러스터에서 사용되는 포트와 기본적인 사용 방법은 다음과 같습니다. 타입 프로세스 포트 사용법 hdfs hdfs 8020 hadoop fs -ls hdfs://$(hostname -f):8020/ webhdfs 50070 curl -s http://$(hostname -f):50070/webhdfs/v1/?op=GETFILESTATUS | jq webhdfs-proxy 14000 curl -s "http:///$(hostname -f):14000/webhdfs/v1?op=GETFILESTATUS&user.name=hadoop" yarn resourcemanager 8032 resourcemanager web UI 8088 lynx http://$(hostname -f):8088 timelin.. 2020. 3. 5.
[EMR] EMR의 기본 실행 프로세스 정리 EMR은 마스터 노드, 코어 노드, 태스크 노드로 구성됩니다. 마스터 노드와 코어 노드는 필수입니다. 태스크 노드는 선택사항입니다. 마스터 노드에 EMR 클러스터 운영을 위한 여러 가지 서비스가 실행됩니다. 따라서 마스터 노드의 메모리와 저장공간을 적절하게 설정하는 것이 중요합니다. 코어 노드에는 데이터 노드와 노드 매니저가 실행되고 태스크 노드에는 노드 매니저가 실행됩니다. 마스터 노드 리소스 매니저 실행 EMR 클러스터 관리 네임 노드 실행 HDFS 데이터 노드 관리 그 외 서비스가 실행되어 EMR 클러스터의 관리와 작업을 운영 코어 노드 데이터 노드 실행 HDFS 데이터 저장 노드 매니저 실행 애플리케이션 실행 태스크 노드 노드 매니저 실행 애플리케이션 실행 마스터 노드 실행 프로세스 EMR에서 하.. 2020. 3. 5.
[EMR] AWS EMR의 클러스터 정보확인 위치 EMR 클러스터의 노드에는 클러스터의 인스턴스 개수나 클러스터 ID, 인스턴스 그룹 ID와 같은 정보를 확인하기 위한 json 파일이 있습니다. 이 정보를 확인하면 접속한 EMR의 정보를 알 수 있습니다. . $ cat /mnt/var/lib/info/job-flow.json { "jobFlowId": "j-xxxx", "instanceCount": 50, "masterInstanceId": "i-xxxx", "masterInstanceType": "r2.xlarge", "slaveInstanceType": "r4.2xlarge", "instanceGroups": [ ] } 2020. 1. 13.
[EMR] S3 503 Slow Down 오류 발생시 해결방법 EMR에서 하둡, 하이브 작업시 S3에 동시에 많은 요청이 들어가면 503 Slow Down 오류가 발생합니다. S3의 스펙상으로 동시에 5500개 이상의 요청이 들어가면 오류가 발생합니다. AmazonS3Exception: Internal Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Error; Request ID: A4DBBEXAMPLE2C4D) AmazonS3Exception: Slow Down (Service: Amazon S3; Status Code: 503; Error Code: 503 Slow Down; Request ID: A4DBBEXAMPLE2C4D) https://aws.amazon.com/ko/premi.. 2019. 12. 16.
[EMR] CORE 노드 레이블에 맞는 클러스터 활용 설정 EMR 5.19.0 버전부터 적용된 노드 레이블 설정에 따라서 YARN에 작업을 전달해도 클러스터를 100% 사용하지 못하는 경우가 발생할 수 있습니다. 클러스터의 구성이 CORE 10대 TASK 40대로 구성된 경우 노드레이블은 CORE, DEFAULT 로 구성되며 CORE는 CORE레이블, TASK는 DEFAULT 레이블로 구성됩니다. 이때 AM(Application Master)하나에 컨테이너 하나를 필요로 하는 작업을 실행하면 기본설정(yarn.node-labels.am.default-node-label-expression)에서 CORE 레이블에 AM이 실행되게 설정되어 클러스터의 자원에 여유가 있어도 작업을 실행하지 않고 대기하게 됩니다. 아래와 같이 AM Partition = CORE 인 상태.. 2019. 11. 19.
[AWS] AWS CLI에서 환경변수에 S3키를 전달하여 사용하는 방법 AWS CLI를 이용하여 작업을 진행할 때 접근하려고 하는 S3의 액세스키와 시크릿키 정보가 필요할 경우 환경변수에 값을 설정하여 프로파일에 설정하지 않고 접근할 수 있습니다. 샘플 코드 #!/bin/bash export AWS_ACCESS_KEY_ID=액세스키 export AWS_SECRET_ACCESS_KEY=시크릿키 aws s3 sync $1 $2 참고 AWS CLI 구성 2019. 11. 18.
[EMR] AWS EMR의 hive cli에서 tez.queue.name가 설정되지 않는 문제 해결 방법 EMR 5.24로 변경후 hive cli에서 set tez.queue.name을 실행하여도 큐가 설정되지 않는 문제가 발생하였습니다. 상황 YARN의 큐 설정을 변경 기존 default큐를 제거하고, dynamic, batch로 큐를 설정 hive CLI에서 큐를 설정하고 작업을 실행하면 오류발생 Caused by: java.util.concurrent.ExecutionException: org.apache.tez.dag.api.TezException: org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_111122223333_0034 to YARN : Application application_111122223333.. 2019. 11. 4.
[EMR] AWS EMR의 버전 선택 AWS EMR의 버전을 선택할 때는 버전에 따른 hadoop, hive, hue, spark 등의 버전을 확인해서 기존에 사용하는 애플리케이션과의 정합성을 확인해야 합니다. 다음 사이트에서 버전별 차이를 확인할 수 있습니다. 각 버전에 알려진 버그에 대해서도 기록되어 있기 때문에 이를 확인하고 작업하는 것이 좋습니다. 내용을 보면 5.20 버전에는 Hue와 하이브 TEZ의 작업에 문제가 있는 것을 확인할 수 있습니다. https://docs.aws.amazon.com/ko_kr/emr/latest/ReleaseGuide/emr-whatsnew-history.html Amazon EMR 새로운 소식 기록 - Amazon EMR Amazon EMR 새로운 소식 기록 모든 Amazon EMR 릴리스 버전의 릴.. 2019. 11. 1.
[AWS-EMR] EMR의 하이브메타스토어 재시작 AWS EMR의 하이브메타스토어를 재시작하는 방법은 다음과 같습니다. * 하이브메타스토어는 hive-hcatalog-server 라는 이름으로 서비스되고 있습니다. # 운영 중지 sudo stop hive-hcatalog-server # 운영 시작 sudo start hive-hcatalog-server 2019. 10. 10.
[AWS-EMR] EMR 일관성 보기 설정 EMR에서 S3에 데이터를 저장할 때 S3가 데이터 일관성을 지원하지 않기 때문에 같은 위치에 동시에 데이터를 쓰게 되면 데이터가 유실될 위험이 있습니다. 예를 들어 s3://[bucket]/a/b/c 위치에 한번에 100개 정도의 파일을 쓰게 되면 100개의 파일이 생성되지 않고, 파일이 유실되어 99개의 파일이 생성될 수 있습니다. Amazon S3 데이터 일관성 모델 참고 Amazon S3 소개 - Amazon Simple Storage Service Amazon S3 소개 본 Amazon Simple Storage Service(Amazon S3) 소개는 이 웹 서비스에 대한 세부 요약 정보를 제공합니다. 이 단원을 읽으면 이 제품의 혜택과 사업에의 적용 방법을 이해하게 됩니다. Amazon S3.. 2019. 8. 6.
[AWS] 비관리형, 관리형(Managed), 완전관리형(Fully-Managed) 데이터베이스의 운영을 예를 들어 비관리형, 관리형, 완전관리형을 설명하면 다음과 같습니다. 비관리형(Non-Managed) 사용자가 직접 관리 사용자가 데이터센터를 운영하는 경우 장비 운영, OS 설치 및 운영, 데이터베이스 솔루션 설치 및 운영까지 모두 담당 관리형(Managed) 사용자와 AWS가 함께 관리 AWS EC2 서버에 데이터베이스 솔루션을 설치 하고 운영하는 경우 장비 운영, OS 설치 및 운영은 AWS가 담당하고, 데이터베이스 솔루션의 설치 및 운영은 사용자가 담당 완전관리형(Fully-Managed) AWS가 모두 관리 AWS에서 제공하는 RDS 솔루션을 이용하는 경우 장비 운영, OS 설치 및 운영, 데이터베이스 솔루션 설치 및 운영까지 AWS에서 모두 담당 클라우드 기반 AWS 데이.. 2019. 8. 6.
[aws] 아마존 레드쉬프트(Amazon Redshift), EMR과 의 차이 EMR EMR(Elastic MapReduce)는 하둡 프레임워크입니다. HDFS를 이용한 데이터 저장, 맵리듀스 작업을 통한 데이터 처리 작업을 할 수 있습니다. EMR에는 mapreduce, hive, spark를 이용한 데이터 처리를 지원합니다. Redshift레드쉬프트는 AWS에서 제공하는 데이터 웨어하우스 엔진입니다. 레드쉬프트는 PostgreSQL을 기반으로 합니다. 따라서 표준 SQL을 이용한 데이터 처리를 지원하고, BI 도구로 분석할 수 있습니다. 칼럼 기반으로 압축하여 데이터를 저장하고 있어서 데이터의 빠른 처리를 지원합니다. 개요 - https://aws.amazon.com/ko/redshift/자습서 - https://aws.amazon.com/ko/redshift/getting-s.. 2019. 7. 29.
[AWS-Redshift] [Amazon](500310) Invalid operation: VACUUM is running; 오류 Caused by: java.sql.SQLException: [Amazon](500310) Invalid operation: VACUUM is running; at com.amazon.redshift.client.messages.inbound.ErrorResponse.toErrorException(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.handleErrorResponse(Unknown Source) at com.amazon.redshift.client.PGMessagingContext.handleMessage(Unknown Source) at com.amazon.jdbc.communications.InboundMessagesPi.. 2019. 7. 18.
[AWS-EMR] EMR에서 ResourceManager 같은 서비스 목록 확인, 시작 및 종료 AWS-EMR은 여러가지 기본적으로 실행되는 서비스 프로그램들이 있습니다. 이 서비스 목록을 확인하는 방법은 다음과 같습니다. AWS EMR의 주요 서비스의 경우 ps -e f 명령으로 프로세스 아이디를 찾아서 kill 명령으로 강제로 죽여도 EMR 내부적으로 서비스를 감시하는 프로세스가 자동으로 다시 실행합니다. https://aws.amazon.com/ko/premiumsupport/knowledge-center/restart-service-emr/ Amazon EMR에서 서비스 다시 시작 3. 몇 초 기다린 후 다음과 비슷한 명령을 실행하여 서비스를 시작합니다. aws.amazon.com 2019. 7. 18.
[aws] S3 ls 명령에서 와일드카드 사용 대체하기 AWS S3 ls 명령은 유닉스 스타일의 와일드카드(*, 아스테릭) 사용이 안됩니다. 따라서 include나 exclude 옵션을 이용하여 문제를 해결해야 합니다. https://docs.aws.amazon.com/cli/latest/reference/s3/ s3 — AWS CLI 1.16.140 Command Reference This section explains prominent concepts and notations in the set of high-level S3 commands provided. Order of Path Arguments Every command takes one or two positional path arguments. The first path argument repre.. 2019. 4. 9.
[S3] AWS EMR에서 _$folder$가 생성되는 이유 AWS EMR을 이용하여 S3에 데이터를 생성하다 보면 S3에 _$folder$ 라는 이름의 데이터가 생성되는 것을 볼 수 있습니다. 이는 S3가 키-밸류 형태로 데이터를 저장하기 때문에 EMR이 S3에 접근할 때 사용하는 NativeS3FileSystem.java에서 신규 폴더를 생성하면서 파일이 존재하지 않으면 디렉토리를 생성할 때 빈 파일과 함께 생성하도록 설정되어 있기 때문입니다. 데이터를 이용함에 있어서 문제가 없기 때문에 그냥 두시면 됩니다. 다음의 소스 코드를 보면 구현 상태를 확인할 수 있습니다. private static final String FOLDER_SUFFIX = "_$folder$"; ... private boolean mkdir(Path f) throws IOException.. 2019. 4. 1.
[AWS][S3] AWS 커맨드의 The AWS Access Key Id you provided does not exist in our records. 오류 처리 아마존 S3 서비스 이용중 한국 리전에서 중국 리전의 S3에 접속하려고 하니 아래와 같은 오류가 발생하였다. aws configure 를 이용하여 cn 프로파일을 등록하였고, 키와 리전을 확인했는데 오류가 없었다. > aws s3 ls s3://bucket-name/ --profile cnAn error occurred (InvalidAccessKeyId) when calling the ListObjects operation: The AWS Access Key Id you provided does not exist in our records. 이럴때는 아래와 같이 리전을 추가하여 조회하면 오류를 해결 할 수 있었다. 프로파일에 리전을 등록했음에도, 왜 이런 오류가 발생하는지 아직 원인은 확인하지 못했다... 2017. 3. 20.
[EC2][ssh] 맥에서 ssh를 이용하여 EC2 인스턴스에 연결 아마존 AWS에 생성한 EC2 인스턴스에 접속하기 위해서는 ssh 를 이용하여 연결하면 된다. 1. EC2인스턴스를 생성할 때 만든 키페어를 다운로드 2. 다운로드한 키를 .ssh/ 폴더로 이동3. chmod 600 [키] 명령으로 키의 소유권을 rw 모드로 변경4. ssh -i .ssh/[키이름] ec2-user@[ec2 아이피] EC2 Management Console 에서 인스턴스를 선택하고 해당 인스턴스의 Description 탭에서 public IP 를 확인한다. 2016. 11. 24.
[aws][s3] s3의 용량 확인하기 AWS 커맨드를 이용하여 S3의 용량을 확인하는 방법은 다음과 같다. summarize 옵션을 이용하면 최종적으로 s3 경로상의 오브젝트 개수와 총 사이즈를 알려준다. aws s3 ls s3://[버켓]/디렉토리 --summarize 2016-04-14 04:11:18 0 Bytes test Total Objects: 915247 Total Size: 212312312 human-readable 옵션을 이용하면 사이즈를 사람이 읽기에 편하게 보여준다. aws s3 ls s3://[버켓]/디렉토리 --summarize 2016-04-14 04:11:18 0 Bytes test Total Objects: 915247 Total Size: 2.3GB recursive 옵션을 이용하면 하위폴더의 용량까지 확인이.. 2016. 11. 23.
[s3] S3 V4 인증 오류 The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256. 예전에 만든 EC2서버에서 새로운 지역의 S3 이용중 위와 같은 오류가 발생할 수가 있다. 이는 기존에는 2버전의 인증을 이용했지만, 2014년 2월 이후 생성된 지역은 4버전의 인증을 이용하기 때문에 발생한다. Amazon S3 supports Signature Version 4, a protocol for authenticating inbound API requests to AWS services, in all AWS regions. At this time, AWS regions created before January 30, 2014 .. 2016. 11. 1.
[AWS] EMR에서 S3의 데이터를 확인하는 경우 AWS 커맨드 추천 EMR 에서 S3 에 올려져 있는 파일을 확인하는 명령어는 - hadoop fs -ls s3://버켓/- aws s3 ls s3://버켓이사의 두개의 커맨드가 존재한다. 이중에서 aws 커맨드를 사용할 것을 추천한다. 이유는 aws 커맨드를 사용하는 것이 더 경량이기 때문이다. hadoop 커맨드는 java, aws 커맨드는 파이썬으로 구성되어 있어서hadoop 커맨드를 실행할때는 로드되는 커맨드가 많기 때문에 무겁고, 메모리도 많이 먹게 된다. 꼭 hadoop 커맨드를 사용해야 할 경우가 아니라면 aws 커맨드를 사용할 것을 추천한다. 2016. 8. 12.
[AWS] aws 커맨드의 sync 명령을 이용하여 s3 데이터 동기화 s3 버켓간 데이터를 동기화 하는데는 sync 명령을 이용하면 손쉽게 파일 동기화가 가능하다. 지정한 버켓 디록토리의 폴더, 파일 목록을 확인하여 지정한 버켓으로 동기화 해준다. 사용하는 방법은 다음과 같다. aws s3 sync s3://소스_버켓명/폴더명 s3://타겟_버켓명/폴더명 --source-region 소스_리전명 --region 타겟_리전명 2016. 7. 1.
[스크랩] aws s3 커맨드로 버켓의 용량 확인하기 aws s3 커맨드에는 자체적으로 용량을 확인하는 커맨드가 없기 때문에 ls 명령을 이용하여 내부 객체의 목록을 확인하고 객체의 용량을 더해서 용량을 구해야 한다. aws s3 ls --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total}' 1. 버켓의 객체 목록을 가져와서 aws s3 ls --recursive2. 객체 목록 이외의 다른 출력은 제거하고 grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)"3. 3번째 파일사이즈를 모두 더한다. awk 'BEGIN {total=0}{total+=$3}END{prin.. 2016. 6. 28.
[AWS] aws 커맨드의 credential 파일 설정하기 AWS 커맨드에서 신임장은 S3버켓의 위치region)과 키 설정, 파일 포맷 설정에 사용된다.매번 커맨드시에 입력하는 것이 번거롭기 때문에 신임장 파일에 저장해 놓고 사용하면된다. - AWS 커맨드를 이용해서 설정하는 것도 가능하고, 파일을 생성해서 사용하는 것도 가능하다. AWS 커맨드에서 사용하는 신임장(credential) 설정방법은 다음과 같다. $ aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-west-2 Default output format [Non.. 2016. 6. 20.