본문 바로가기

AWS27

[maven] aws-sdk-java 코드 빌드시 로컬 소스로 빌드하는 방법 aws sdk java 소스코드를 빌드해서 사용해야 할 일이 생겼는데 빌드를 하이 최종적으로 생기는 aws-java-sdk-bundle-1.12.262.jar 파일이 로컬에 빌드한 파일을 이용하지 않고, 메이븐에 있는 동일한 버전의 파일을 가져와서 shade로 복사하였습니다. 로컬에 수정한 내용의 파일을 이용해서 사용해야 하는데 메이븐 옵션을 바꾸어도 변경이 되지 않아서 우선 버전을 바꾸어서 적용하니 로컬의 파일을 이용하였습니다. https://github.com/aws/aws-sdk-java GitHub - aws/aws-sdk-java: The official AWS SDK for Java 1.x. The AWS SDK for Java 2.x is available here: https://githu.. 2024. 3. 5.
[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.
[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.
[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.
[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] 비관리형, 관리형(Managed), 완전관리형(Fully-Managed) 데이터베이스의 운영을 예를 들어 비관리형, 관리형, 완전관리형을 설명하면 다음과 같습니다. 비관리형(Non-Managed) 사용자가 직접 관리 사용자가 데이터센터를 운영하는 경우 장비 운영, OS 설치 및 운영, 데이터베이스 솔루션 설치 및 운영까지 모두 담당 관리형(Managed) 사용자와 AWS가 함께 관리 AWS EC2 서버에 데이터베이스 솔루션을 설치 하고 운영하는 경우 장비 운영, OS 설치 및 운영은 AWS가 담당하고, 데이터베이스 솔루션의 설치 및 운영은 사용자가 담당 완전관리형(Fully-Managed) AWS가 모두 관리 AWS에서 제공하는 RDS 솔루션을 이용하는 경우 장비 운영, OS 설치 및 운영, 데이터베이스 솔루션 설치 및 운영까지 AWS에서 모두 담당 클라우드 기반 AWS 데이.. 2019. 8. 6.
[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.
[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.
[hadoop][EMR] 하둡 리소스매니저(resource manager)의 기본 포트 하둡은 현재 리소스 사용현황을 확인할 수 있는 웹 페이지를 제공하고, 이 웹페이지의 포트는 yarn-site.xml 파일을 수정하여 변경할 수 있다. yarn-default.xml 의 기본값은 http는 8088, https는 8090 이다. 하둡이 실행된 서버에서 웹앱으로 접속하기 위해서는아래와 같이 alias를 등록해 두고 사용하면 편리하다. alias rm='lynx http://IP:8088' 2016. 12. 7.
[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.
[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] 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.
[개념] 서버리스 구조(Serveless Architecture) 서버를 관리할 필요 없이 특정 이벤트에 반응하는 함수(주로 파이썬으로 구현)를 등록하고, 해당 이벤트가 발생하면 함수가 실행되는 구조이다. 서버 관리에 대한 리스크가 사라진 구조라고 할 수 있다. (누군가는 서버를 관리해야 하겠지만, 서비스 운영 담당자가 관리하는 것은 아님)Function as a Service 와 동일한 개념AWS Lambda 서비스가 서버리스 구조를 지원 - 중앙 집중형 애플리케이션 구조- 애플리케이션 재배포시 서비스 중단 발생- 장애 발생시 서비스 중단 시간이 상대적으로 길다. - 디스크/네트워크/메모리 등 시스템 자원에 대한 직접적인 운영이 필요 이러한 문제점이 발생할 수 있기 때문에 서버리스 구조를 이용한다. - 비용절감: Event Running- 서비스 지향: 마이크로 서비.. 2016. 6. 27.
[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.
s3 블록파일 시스템과 s3 네이티브 파일시스템의 차이 아마존 AWS 에서 사용하는 파일 시스템에는 S3 블록파일 시스템과 S3 네이티브 파일 시스템이 존재한다. 하둡을 지원하기 위해 처음 등장한 블록파일 시스템은 "s3://" 스키마를 사용한다. HDFS와 유사하게 동작하며, 파일을 블록형태로 저장한다. 이 블록파일 시스템은 다른 파일 관리도구로 읽을 수 없고, 블록 형태로 저장되어 일반적인 파일 시스템과 달라서네이티브 파일 시스템이 등장하였다. 네이티브 파일 시스템은 's3n://' 스키마를 사용한다. 이 네이티브 파일 시스템은 다른 파일 관리 도구로도 읽을 수 있다. 처음 등장하였을 때는 5GB의 파일당 제한이 있었지만, 나중에 5TB로 수정되었다. * 블록과 네이티브 파일 시스템의 차이는 우선 URI 스키마의 차이, 저장 방식의 차이, 접근 도구의 차.. 2016. 4. 28.
[하둡/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.
[AWS/EC2] 맥에서 EC2 인스턴스에 SSH 접속하는 법 EC2 인스턴스에 ssh 접속을 위해서는 우선 처음 생성시에 받은 private key를 저장한다. 보통 자신의 홈 디렉토리 밑에 .ssh 폴더를 생성하고(기존에 접속한 적이 있다면 자동 생성) 그 밑에 파일을 생성해서 키를 입력한다. 그리고 키는 chmod 명령으로 권한을 600 으로 바꾸어 준다. 그러지 않으면 읽지 못한다. ssh 접속시에 -i 옵션으로 키를 지정하고, 사용자 명은 기본적으로 ec2-user로 생성된다. 접속할 IP는 EC2관리 콘솔에서 접속할 인스턴스의 public IP 를 확인하여 접속한다. -- 키생성 vi key -- 키의 권한 변경 chmod 600 key -- ssh 접속 ssh -i .ssh/key ec2-user@192.168.0.1 2015. 8. 4.
[AWS] 아마존 EC2 인스턴스의 메타정보 확인 CLI 환경에서 EC2 인스턴스의 메타 정보를 확인하는 방법은 다음과 같다. * 해당 정보는 암호화 되지 않으므로 확인할 때 주의해야 한다. 확인가능한 리스트 curl http://169.254.169.254/latest/meta-data/ 정보 확인 curl http://169.254.169.254/latest/meta-data/[리스트 목록의 정보] [인스턴스 자격증명 문서및 서명 확인 curl http://169.254.169.254/latest/dynamic/instance-identity/document ex) curl http://169.254.169.254/latest/meta-data/ami-id curl http://169.254.169.254/latest/meta-data/hostnam.. 2015. 1. 28.