본문 바로가기

emr26

[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.
[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.
[hive] 구체화 뷰(Materialized View) 하이브 3.0에서 제공하는 구체화 뷰(Materialized Views)에 대해서 알아보겠습니다. 뷰(View)는 논리적인 테이블입니다. 데이터 검색을 위한 구조는 가지고 있지만 실제 데이터는 가지고 있지 않습니다. 구체화 뷰(M-View)는 물리적인 테이블입니다. 구체화 뷰를 생성할 때 데이터를 별도의 저장공간에 저장하여 뷰를 사용할 때 속도를 높일 수 있습니다. 보통 데이터웨어 하우스에서 쿼리의 속도를 높이는데 많이 사용됩니다. 하이브에서 규체화 뷰는 LLAP, Calcite(CBO) 기능과 협력하여 쿼리의 속도를 높이는 데 사용됩니다. 구체화 뷰 생성 구체화 뷰는 생성되는 시점에 테이블의 데이터를 취합하여 데이터를 저장합니다. 이 과정에서 맵리듀스 작업이 발생합니다. 구체화 뷰를 저장하는 기본 서데.. 2020. 1. 21.
[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.
[hive] MSCK is missing partition columns under location. 오류 해결 방법 EMR에서 하이브의 테이블에 MSCK 명령을 이용해서 테이블을 재구성할 때 다음의 오류가 발생하는 경우가 있습니다. Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: MSCK is missing partition columns under s3://bucket_name/directory_location 원인 이 오류는 지정한 버켓의 폴더가 없어서 발생하는 오류입니다. S3의 특성상 디렉토리만 생성되면 파일시스템에 따라서 $folder$ 가 생성되면서 이 특수 파일이 옮겨지는 과정에서 누락되면 이 오류가 발생합니다. 해결방법 이 오류는 디렉토리를 만들어서 해결할 수도 있고, 아래의 설정을 이용해서 오류가 있는 폴더는 무시하고 처리할 수 있도록 설정할.. 2019. 12. 4.
[spark] Unable to instantiate SparkSession with Hive support because Hive classes are not found. 오류 해결 방법 EMR 5.24에서 우지와 스파크 sql을 이용하여 작업을 하려고 하면 다음과 같은 오류가 발생합니다. 에러로그 Caused by: java.lang.IllegalArgumentException: Unable to instantiate SparkSession with Hive support because Hive classes are not found. at org.apache.spark.sql.SparkSession$Builder.enableHiveSupport(SparkSession.scala:870) at com.sec.bigdata3.analyzer.scala.profile.RunestoneProfile$.main(RunestoneProfile.scala:32) at com.sec.bigdata3.. 2019. 11. 8.
[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.
[oozie][EMR] EMR Oozie 실행시 java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found 오류 수정 EMR의 우지(oozie)를 이용하면서 다음과 같이 com.amazon.ws.emr.hadoop.fs.EmrFileSystem 클래스를 찾지 못한다는 오류를 발견하면 클래스패스에 라이브러리를 가지고 있는 jar 파일의 위치를 추가해주면 됩니다. Caused by: java.lang.ClassNotFoundException: Class com.amazon.ws.emr.hadoop.fs.EmrFileSystem not found at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2273) at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2367) ... .. 2019. 10. 30.
[oozie][slf4j] SLF4J: Class path contains multiple SLF4J bindings. 오류 SLF4J를 이용하는 여러 가지 라이브러리를 함께 이용할 때 다음과 같은 오류가 발생할 수 있습니다. 해결 방법은 중복된 라이브러리를 정리해 주는 것입니다. 설치되어 있는 상태라면 아래의 경우 중복된 2개의 라이브러리중 하나를 삭제(rm) 또는 이동(mv) 예를 들면 rm /usr/lib/oozie/lib/slf4j-simple-1.6.6.jar 명령으로 jar 파일 삭제 빌드가 가능한 상황이라면 메이븐이나 그래들의 명령을 이용해 중복된 라이브러리는 빼고 로드하도록 설정 SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/lib/oozie/lib/slf4j-log4j12-1.6.6.jar!/or.. 2019. 10. 25.
[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] 아마존 레드쉬프트(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.
[EMR-HDFS] EMR의 HDFS 운영중 Non DFS Used 용량이 늘어나서 실제 이용할 데이터가 줄어드는 문제 증상 EMR을 이용하여 데이터 처리 중 갑자기 각 데이터 노드의 Non DFS Used 용량이 늘어나서 실제 데이터를 저장할 용량이 부족해졌습니다. # hdfs dfsadmin -report로 확인 Decommission Status : Normal Configured Capacity: 165810782208 (154.42 GB) DFS Used: 32090261515 (29.89 GB) Non DFS Used: 45128228853 (42.03 GB) # Non DFS Used 용량의 증가 DFS Remaining: 88592291840 (82.51 GB) DFS Used%: 19.35% DFS Remaining%: 53.43%원인 데이터 노드를 확인하니 /mnt/yarn 아래 partion*.tmp,.. 2019. 7. 22.
[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.
[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.
[hadoop][EMR] 하둡 리소스매니저(resource manager)의 기본 포트 하둡은 현재 리소스 사용현황을 확인할 수 있는 웹 페이지를 제공하고, 이 웹페이지의 포트는 yarn-site.xml 파일을 수정하여 변경할 수 있다. yarn-default.xml 의 기본값은 http는 8088, https는 8090 이다. 하둡이 실행된 서버에서 웹앱으로 접속하기 위해서는아래와 같이 alias를 등록해 두고 사용하면 편리하다. alias rm='lynx http://IP:8088' 2016. 12. 7.
[hive][EMR] EMR의 하이브 작업이 쓴 파일 확인하기 EMR 하이브 처리결과가 파일로 저장될 때 파일명은 EMR에서 임의의 값으로 설정해 준다. hdfs://location/175508f3-1524-46ee-88c2-24722c5d5749-000XXX 이로 인하여 같은 파티션에 파일이 저장되면 어떤 잡이 해당 파일을 썻는지 알 수가 없다. 이럴때는 하이브 잡로그를 확인하여 결과를 확인해야 한다. 하이브 테이블 로케이션을 s3로 잡은 경우 파일은 최종적으로 'com.amazon.ws.emr.hadoop.fs.s3n.Jets3tNativeFileSystemStore' 클래스를 이용하여 파일이 쓰여진다. 또한 'org.apache.hadoop.hive.ql.exec.FileSinkOperator' 클래스도 파일 쓰기에 관여하기 때문에 이 클래스의 정보를 grep.. 2016. 9. 30.
[하둡/AWS/오류] 우지와 하둡 연동중 발생하는 Could not find or load main class 오류 AWS에서 우지와 하둡 연동중 다음과 같은 오류가 발생할 경우 Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster 이는 우지에서 지정한 클래스패스와 하둡이 사용하는 클래스패스의 경로가 달라서 그렇다. 따라서 EMR의 하둡에 설정된 yarn-site.xml 의 내용에서 yarn.application.classpath 를 복사하여 우지의 설정에서 하둡으로 전달하는 yarn-site.xml 을 수정한다. source(emr) : hadoop/conf/yarn-site.xml target(oozie) : oozie/conf/hadoop-conf/yarn-site.xml 참고 2015. 8. 21.
[AWS/EMR] AMI v4.x 대의 포트 변경 AWS의 EMR 서비스의 AMI 버전이 4.x 대로 변경되면서 하둡의 기본 포트가 변경되었다. 기존과 같이 사용하면 오류가 발생하므로 수정해야 한다. Service Ports In Amazon EMR AMI versions 2.x and 3.x, some services used custom ports. emr-4.0.0 hosts these services on open source community defaults in most cases. Changes in Port Settings Setting AMI Version 3.x Release Label emr-4.x fs.default.name hdfs://emrDeterminedIP:9000 default (hdfs://emrDeterminedIP:.. 2015. 8. 13.