본문 바로가기

yarn18

[yarn] 커버로스 적용된 nodemanager에서 Linux Container Executor reached unrecoverable exception 오류 노드매니저가 Linux Container Executor reached unrecoverable exception 오류를 출력하면서 UNHEALTHY 상태로 들어가는 경우가 있습니다. 이 경우 실행된 컨테이너가 35번 오류를 출력하면서 종료 되었을 때 발생합니다. 다음과 같이 오류일 가능성이 있으므로 지속적으로 발생한다면 패치를 하거나, 버전을 올려야 합니다. 우선은 간단하게 캐쉬 파일 위치를 삭제하고, 재부팅하는 것으로 문제를 해결할 수 있습니다. https://issues.apache.org/jira/browse/YARN-9833 [YARN-9833] Race condition when DirectoryCollection.checkDirs() runs during container launch - A.. 2022. 11. 16.
[yarn] InvalidResourceRequestException: Invalid resource request, requested memory < 0, or requested memory > max configured, requestedMemory=-1, maxMemory=102400 에러 하둡에서 mapreduce를 이용해서 작업을 진행할 때 다음과 같은 오류가 발생하면서 작업이 진행되지 않을 때가 있습니다. 2022-11-07 17:55:58,250 INFO [RMCommunicator Allocator] org.apache.hadoop.mapreduce.v2.app.rm.RMContainerAllocator: Before Scheduling: PendingReds:0 ScheduledMaps:12 ScheduledReds:0 AssignedMaps:0 AssignedReds:0 CompletedMaps:0 CompletedReds:0 ContAlloc:0 ContRel:0 HostLocal:0 RackLocal:0 2022-11-07 17:55:58,270 ERROR [RMCommun.. 2022. 11. 9.
[flink] flink를 yarn session 모드로 동작할 때 작업이 ACCEPTED 상태로 대기 할 때 해결 방법 flink를 YARN에서 동작할 때 작업이 ACCEPTED 상태로 대기하면서 다음과 같은 로그가 출력되는 경우가 있습니다. 2022-04-21 16:40:32,601 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Deployment took more than 60 seconds. Please check if the requested resources are available in the YARN cluster 2022-04-21 16:40:32,853 INFO org.apache.flink.yarn.YarnClusterDescriptor [] - Deployment took more than 60 seconds. Please check if the req.. 2022. 4. 21.
[hadoop] yarn 커패시티 스케줄러의 큐 매핑 하둡 yarn의 커패시티 스케줄러의 큐 매핑은 사용자, 그룹에 따라서 자동으로 큐 설정을 변경해 줍니다. 유저A, 그룹 GrpA 유저B, 그룹 GrpB 유저C, 그룹 GrpA, GrpB 위와 같은 경우 유저 A는 큐 GrpA로 작업이 처리되고, 유저 B는 큐 GrpB로 처리됩니다. 유저C는 프라이머리 그룹에 따라 처리 됩니다. 프라이머리 그룹은 사용자의 기본 그룹입니다. /etc/passwd에서 확인할 수 있는 사용자의 기본 그룹입니다. hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html#Dynamic_Auto-Creation_and_Management_of_Leaf_Queues 2021. 3. 4.
[oozie][yarn] 우지에서 작업 실행 시 Cannot initialize Cluster. 오류 수정 방법 우지 4.3.0을 설정하는 중 Cannot initialize Cluster 오류가 발생하였습니다. 오류 우지 작업 중 클러스터를 초기화하지 못한다는 오류가 발생하였습니다. 오류 내용은 mapreduce.framework.name=yarn으로 설정되어 있기 때문에 고가용성(HA) 구성된 리소스 매니저의 주소를 확인하지 못하는 것으로 생각하였습니다. Caused by: java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses. at org.apache.hadoop.mapreduce.Cluster.initia.. 2020. 9. 1.
[hadoop] [스크랩] Line에서 하둡 클러스터를 운영하면서 발생한 장애 상황 대응 방법 Line에서 하둡 클러스터를 운영하면서 발생한 장애 상황을 정리한 것입니다. 데이터 엔지니어링 관련 소프트웨어 장애 대응 사례 에서 상세한 내용을 확인할 수 있습니다. 짧게 요약하면 다음과 같습니다. hadoop.registry.rm.enabled=false로 설정 HDFS의 휴지통 설정을 켜놓으면 삭제 데이터가 많을 때는 HDFS에 부담이 될 수 있으므로 삭제 간격을 잘 조절 Zeepline의 버그에 의한 오류가 발생할 수 있으니 버전업, 버그 리포트를 잘 확인 하이브 테이블의 파티션이 많으면 스파크 드라이버가 힘들 수 있으니 파티션을 잘 설정 Apache Hadoop YARN 리소스 매니저 failover 발생 문제와 해결 방안 현상 하둡 클러스터에서 동작하는 애플리케이션의 수가 늘어나면서 리소스 매.. 2020. 6. 4.
[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.
[YARN] YARN Node Label YARN은 2.6버전 부터 노드 레이블 기능을 제공합니다. 레이블은 서버를 특성에 맞게 구분하여 애플리케이션을 실행할 수 있는 기능을 제공합니다. 노드 레이블은 서버의 타입(ex: SSD, GPU)에 따라 작업을 처리하도록 구성할 수 있음 빠른 IO가 필요한 작업은 SSD 중심의 서버를 이용하도록 설정 빠른 CPU연산이 필요한 작업은 GPU를 이용할 수 있는 서버를 이용하도록 설정 특징 노드는 하나의 파티션을 가짐 기본 파티션은 DEFAULT이고 partiton="" 노드별로 설정을 다르게 할 수 있음 노드 파티션은 두가지 종류가 있음 Exclusive 설정한 노드만 사용할 수 있음 Non-Exclusive 운영상황에 여유가 있을때는 다른 노드도 이용 가능 Node Labels in YARN from D.. 2019. 11. 8.
[hadoop][yarn] Caused by: java.lang.IllegalArgumentException: Illegal capacity of 4.0 for children of queue root for label=CORE 오류 해결 YARN의 커패시티 스케줄러를 설정하면서 root큐 아래 설정된 하위큐가 사용할 수 있는 코어(CORE) 레이블의 용량(capacity)의 합이 100을 넘어서 발생하는 오류입니다. capacity-scheduler.xml에 설정된 yarn.scheduler.capacity.root.[큐이름].accessible-node-labels.CORE.capacity 값의 총합이 100을 넘지 않도록 수정하고 yarn rmadmin -refreshQueues를 입력하여 큐 설정을 변경합니다. $ yarn rmadmin -refreshQueues 19/10/31 04:20:14 INFO client.RMProxy: Connecting to ResourceManager at /10.11.60.235:8033 refr.. 2019. 10. 31.
[hadoop-yarn] YARN의 클러스터 사용량 확인 YARN은 REST API를 이용하여 스케줄러의 클러스터 사용량을 확인할 수 있습니다. 이 API를 이용하여 현재 클러스터가 어느정도의 메모리를 사용하고 있는지를 사용량(퍼센트)으로 확인하는 스크립트를 알아보겠습니다. https://118k.tistory.com/725 [hadoop] YARN REST API를 이용하여 클러스터 사용량 확인 하기 YARN은 CLI 명령어와 웹UI, REST API를 제공합니다. 이중에서 클러스터의 사용량은 모니터링 툴을 이용해서 확인할 수 있지만, 모니터링 툴을 이용할 수 없는 상황에서는 REST API를 이용하여 확인할 수 있습니다... 118k.tistory.com 클러스터의 메모리 사용량 지표는 다음과 같습니다. totalMB: 전체 메모리 reservedMB: 사.. 2019. 8. 5.
[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.
[hadoop] YARN 클러스터 사용량 모니터링 스크립트 YARN의 클러스터의 현재 사용량을 터미널에서 확인하기 위한 스크립트입니다. curl, jq, tput, trap 명령어를 이용하여 작성하였습니다. 스크립트 실행후 Ctrl + C를 입력하면 종료합니다. curl 명령으로 클러스터 metric 정보 확인 jq 명령으로 JSON 파싱하여 정보 확인 tput 명령으로 정보를 화면에 표시 trap 명령으로 처리 종료시 정리 2019. 7. 3.
[hadoop] The ownership on the staging director /tmp/hadoop-yarn/staging/root/.staging is not as expected 오류 처리 하둡 맵리듀스 잡을 실행할 때 발생하는 이 오류는 AM의 staging 디렉토리를 변경하여 주면 됩니다. yarn.app.mapreduce.am.staging-dir /tmp/hadoop-yarn/staging The staging dir used while submitting jobs. 이 설정값을 다른 값으로 변경하고 실행하면 회피할 수 있습니다. 19/06/18 01:28:12 INFO client.RMProxy: Connecting to ResourceManager at host:8032 java.io.IOException: The ownership on the staging directory /tmp/hadoop-yarn/staging/root/.staging is not as expected... 2019. 6. 18.
[python] 하둡 YARN REST API 라이브러리 hadoop-yarn-rest-api 하둡 YARN의 REST API를 이용할 수 있는 python2용 라이브러리를 소개합니다. 하둡 YARN의 REST API중 일부를 구현하였습니다. Cluster Writeable APIs 부터는 알파 버전이기 때문에 구현하지 않았고, YARN의 정보를 확인하는 용도로 사용하면 될 것 같습니다. 구현 목록은 다음과 같습니다. - Cluster Information API - Cluster Metrics API - Cluster Scheduler API - Cluster Applications API - Cluster Application Statistics API - Cluster Application API - Cluster Application Attempts API - Cluster Nodes AP.. 2019. 5. 29.
[hadoop] 리소스매니저 UI의 Memory Reserved 리소스 매니저 UI의 클러스터 메트릭 부분을 보면 Memory Reserved라는 항목이 있습니다.이 부분은 YARN이 동작할 때 큰 크기의 메모리를 요구하는 작업이 있을 때 동작을 보장하기 위해서 예약해 두는 항목입니다. 예를 들어 작업 A는 1G의 메모리, 작업 B는 2G의 메모리를 할당 한다고 하겠습니다. 작업 A가 먼저 실행되어 클러스터 전체의 메모리를 할당 받고 작업이 종료될 때 마다 1G의 메모리 여유가 발생하고, 작업 B는 메모리가 맞지 않아서 작업을 진행하지 못하여 작업 A만 계속 처리하게 됩니다. 그러면 작업B는 작업A가 종료될 때까지 계속 대기해야 하는 기아(starving) 상태가 됩니다. 이를 방지하기 위해서 작업B에 할당할 수 있게 메모리의 여유분을 할당하지 못하게 막아두는 것이 .. 2019. 5. 15.
[hive] Vertex's TaskResource is beyond the cluster container capability 오류 처리 TEZ를 이용하여 작업을 처리할 때 발생하는 이 오류는 YARN에 지정한 컨테이너에 할당할 수 있는 최대 메모리보다, TEZ 컨테이너 사이즈 설정이 더 클때 발생합니다. YARN에 설정된 최대 메모리 이하로 컨테이너 사이즈를 설정해야 합니다. MR 엔진을 이용할 때도 최대 메모리 이하로 설정해야 합니다. # YARN에서 관리하는 컨테이너의 최대 메모리 설정 set yarn.scheduler.maximum-allocation-mb=11520; # TEZ의 컨테이너당 메모리 설정 set hive.tez.container.size=1440; # MR의 매퍼 메모리 설정 set mapreduce.map.memory.mb=2048; # MR의 리듀서 메모리 설정 set mapreduce.reduce.memory... 2019. 4. 5.
[hadoop] YARN REST API를 이용하여 클러스터 사용량 확인 하기 YARN은 CLI 명령어와 웹UI, REST API를 제공합니다. 이중에서 클러스터의 사용량은 모니터링 툴을 이용해서 확인할 수 있지만,모니터링 툴을 이용할 수 없는 상황에서는 REST API를 이용하여 확인할 수 있습니다. 상세한 사용법은 REST API 사용 매뉴얼을 확인하시면 됩니다. 여기서는 클러스터의 메모리 사용량을 REST API로 확인해 보도록 하겠습니다. 클러스터의 메모리 사용량은 메트릭(Metric)으로 확인할 수 있습니다. 메트릭 REST API 주소는 다음과 같습니다. 이 주소를 파이썬을 이용한 스크립트로 호출하면 다음과 같은 결과를 확인할 수 있습니다. http:///ws/v1/cluster/metrics 다음의 스크립트는 메트릭 API를 호출합니다. 호출 헤더에 json 형태의 반.. 2019. 1. 7.
[hadoop] yarn 아키텍처 Yarn 아키텍처는 하둡2에서 도입되었다. 하둡1의 병목지점인 잡트래커(jobTracker)의 기능을 리소스 관리, 잡 관리로 나누어서 노드 매니저(리소스 관리), 애플리케이션 마스터(잡 관리)에거 권한을 나누어 주었다. 리소스 매니저- 어플리케이션마다 자원을 할당하고, 애플리케이션 마스터를 관리한다. - 클러스터당 1개 노드 매니저 - 노드의 컨테이너를 관리하고 자원 상태를 리소스 매니저에 통지한다. - 노드당 1개 애플리케이셔 마스터- 어플리케이션의 실행을 관리하고 상태를 RM에 통지한다. - 어플리케이션당 1개 컨테이너- 애플리케이션을 실행- 제한된 자원을 가지고, 상태를 AM에 통지한다. http://skccblog.tistory.com/1883 2018. 1. 16.