본문 바로가기

빅데이터/hadoop76

[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.
[hadoop] ha 하둡 실행 시 java.lang.IllegalStateException: Could not determine own NN ID in namespace 'ha-hadoop'. Please ensure that this node is one of the machines listed as an NN RPC address, or configure dfs.ha.namenode.id 오류 처리 HA 하둡에서 네임노드 실행시 다음과 같은 오류가 발생하는 경우가 있습니다. 22/08/20 12:11:24 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT] 22/08/20 12:11:24 INFO namenode.NameNode: createNameNode [-bootstrapStandby, -force] 22/08/20 12:11:24 ERROR namenode.NameNode: Failed to start namenode. java.io.IOException: java.lang.IllegalStateException: Could not determine own NN ID in namespace 'ha-hadoo.. 2022. 8. 21.
[hdfs] Unable to start failover controller. Parent znode does not exist. 오류 수정 HA 하둡을 설정할 때 ZKFC를 실행할 때 이런 오류가 발생하는 경우가 있습니다. 2022-04-13 05:22:29,204 ERROR org.apache.hadoop.ha.ZKFailoverController (main): Unable to start failover controller. Parent znode does not exist. Run with -formatZK flag to initialize ZooKeeper. 이때는 zkfc를 포맷하면 됩니다. 다음 명령을 실행합니다. hdfs zkfc -formatZK 2022. 4. 20.
[hdfs] Journal Storage Directory /hadoop/hdfs/journal/... not formatted 오류 HA 하둡을 설정할 때 다음과 같은 오류가 발생하는 경우가 있습니다. 192.168.0.2:8485: Journal Storage Directory /hadoop/hdfs/journal/edit/test-hadoop not formatted ; journal id: test-hadoop at org.apache.hadoop.hdfs.qjournal.server.Journal.checkFormatted(Journal.java:516) at org.apache.hadoop.hdfs.qjournal.server.Journal.getEditLogManifest(Journal.java:707) at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.getE.. 2022. 4. 20.
[hadoop] no leveldbjni64-1.8 in java.library.path, no leveldbjni-1.8 in java.library.path, no leveldbjni in java.library.path, No such file or directory 오류 수정 하둡 타임라인서버 실행 중 다음과 같은 오류가 발생하였다. leveldb 라이브러리를 찾을 수 없다고 하는데, jar 파일이 기본 경로에 들어 있기 때문에 문제가 될 것이 없어 보이는데 오류가 계속 발생하였다. 2021-11-15 08:09:34,187 ERROR org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer: Error starting ApplicationHistoryServer java.lang.UnsatisfiedLinkError: Could not load library. Reasons: [no leveldbjni64-1.8 in java.library.path, no leveldbjni-1.8 in.. 2021. 11. 15.
[hadoop] 보안 하둡에서 비보안 하둡으로 데이터 조회 커버로스 설정된 보안 하둡에서 비보안 하둡으로 데이터를 조회하거나, 복사 명령을 내릴 때 비보안 하둡은 인증을 처리할 필요가 없기 때문에 인증을 처리하지 않도록 설정해야 합니다. ipc.client.fallback-to-simple-auth-allowed 설정을 이용하여 인증을 처리 하지 않도록 설정합니다. hadoop fs -ls -Dipc.client.fallback-to-simple-auth-allowed=true \ hdfs://hadoop-url/ 2021. 6. 16.
[hadoop] HDFS의 쿼터 설정 및 설정 상태 확인 HDFS의 관리를 위해서 디렉토리별로 사용제한을 둘 수 있습니다. 파일 개수와 용량 제한을 걸 수 있습니다. 기본 상태는 무제한으로 되어 있기 습니다. HDFS에 설정된 쿼터의 상태는 count 명령을 이용해서 확인할 수 있습니다. -q, -u 옵션을 이용하여 확인할 수 있으며, -v 옵션을 추가하면 헤더 정보를 확인할 수 있습니다. 2021. 5. 20.
[hadoop] 우분투에서 snappy 라이브러리를 설치하고, hadoop에서 인식 체크 우분투 18.04 버전에는 기본적으로 snappy 라이브러리가 없기 때문에 다음과 같은 방법으로 설치하고, 하둡에서 인식하는지 체크할 수 있습니다. 2021. 5. 6.
[hadoop] 커버로스 하둡에서 HDFS 접근을 위한 델리게이션 토큰 생성 방법 커버로스 인증이 적용된 하둡에서 HDFS에 접근하기 위해서는 커버로스 인증을 통한 방식도 있지만, 항상 커버로스 인증을 받게 되면 KDC에 부하가 걸리기 때문에 델리게이션 토큰을 생성하고 이 토큰을 이용하는 방법도 있습니다. HDFS 델리게이션 토큰을 생성하는 방법은 다음과 같습니다. s3를 이용할 때도 토큰파일을 이용하면 작업을 처리할 수 있습니다. 2021. 4. 19.
[hadoop] 맵리듀스 작업 중 Sent signal OUTPUT_THREAD_DUMP 오류 확인 # 예제임 17/10/09 15:19:53 INFO mapreduce.Job: map 67% reduce 0% 17/10/09 15:30:05 INFO mapreduce.Job: Task Id : attempt_1507562353923_0001_m_000000_0, Status : FAILED AttemptID:attempt_1507562353923_0001_m_000000_0 Timed out after 600 secs Sent signal OUTPUT_THREAD_DUMP (SIGQUIT) to pid 6230 as user ubuntu for container container_1507562353923_0001_01_000002, result=success Container killed by the.. 2021. 4. 19.
[hdfs] ACL설정의 setfacl, getfacl 명령 hdfs에서 파일의 소유자를 설정하는 명령은 chown 입니다. 이 명령을 이용해서 파일의 소유자와 그룹을 설정할 수 있습니다. 만약 특정 유저, 그룹에게 파일이나 디렉토리의 소유 권한을 주고 싶다면 setfacl 명령을 이용할 수 있습니다. setfacl은 같은 그룹이 아닌 사용자에게 파일의 권한을 줄 때 사용할 수 있습니다. hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html 2021. 4. 6.
[hadoop] 하둡 설정에서 job.xml:an attempt to override final parameter: fs.defaultFS 경고 하둡에서 파일 시스템을 변경하거나, 어떤 설정값을 변경하고자 할 때 다음과 같은 경고가 뜨는 경우가 있다. // 경고 2021-03-30 18:49:32,981 WARN [main] org.apache.hadoop.conf.Configuration: job.xml:an attempt to override final parameter: fs.defaultFS; Ignoring. // 오류 java.lang.IllegalArgumentException: Wrong FS: swift://test/tmp/hdfs/.staging, expected: hdfs://localhost 이 경우 core-site.xml 파일을 보면 fs.defaultFS 설정에 true이 들어가 있을 것이다. 이 값이 false 이면 .. 2021. 3. 31.
[hadoop] hadoop에서 openstack-swift 파일 시스템을 연동하기 위한 hadoop-openstack-swifta 하둡에서 오픈 스택의 swift 파일시스템을 연동하기 위해서는 다음의 라이브러리를 사용하면 됩니다. 이 라이브러리는 sahara의 swift 라이브러리를 수정한 버전 shara 버전은 ORC 파일을 읽을 때 오류가 발생함 walmartlab에서 개발한 이 라이브러리를 이용하면 됨 오픈 스택의 구현 버전에 따라 이 라이브러리가 동작하지 않을 수도 있음 github.com/walmartlabs/hadoop-openstack-swifta walmartlabs/hadoop-openstack-swifta hadoop-openstack-swifta. Contribute to walmartlabs/hadoop-openstack-swifta development by creating an account on GitHu.. 2021. 3. 29.
[hadoop] 하둡에서 스내피 압축 코덱 오류 수정 Error: java.lang.RuntimeException: native snappy library not available: SnappyCompressor has not been loaded 21/03/28 11:11:14 INFO mapreduce.Job: Task Id : attempt_1616895550362_0002_m_000000_0, Status : FAILED Error: java.lang.RuntimeException: native snappy library not available: SnappyCompressor has not been loaded. at org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:72) at org.apache.hadoop.io.compress.SnappyCodec.getCompressorType(SnappyCodec.java:136) at org.apach.. 2021. 3. 28.
[hadoop] distcp 중 Failed to renew token: Kind: SWEBHDFS delegation 오류 해결 방법 하둡 distcp 에서 이런 오류가 발생하면 다음의 설정을 추가합니다. 커버러스 적용된 하둡 클러스터간에 위임 토큰을 처리하지 못해서 발생하는 오류입니다. -Dmapreduce.job.hdfs-servers.token-renewal.exclude=server 21/03/04 18:17:19 ERROR tools.DistCp: Exception encountered java.io.IOException: org.apache.hadoop.yarn.exceptions.YarnException: Failed to submit application_1609849426446_23330 to YARN : Failed to renew token: Kind: SWEBHDFS delegation, Service: 10.0... 2021. 3. 7.
[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.
[hadoop] distcp 중 java.io.IOException: Error writing request body to server 오류 해결 방법 하둡 DistCp를 이용하여 데이터를 복사할 때 오류가 발생하는 경우가 있습니다. - Socket is closed - Error writing request body to server Caused by: java.net.SocketException: Socket is closed at sun.security.ssl.SSLSocketImpl.getInputStream(SSLSocketImpl.java:680) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:673) java.io.IOException: Error writing request body to server at sun.net.www.protocol.http.HttpURLConnection$.. 2021. 3. 4.
[hadoop] 보안하둡에서 일반하둡으로의 데이터 조회(ls command) 커버로스 인증이 적용된 보안하둡에서 일반 하둡의 데이터 조회는 옵션을 추가해서 처리할 수 있습니다. 2021. 1. 31.
[hadoop] AWS 환경 밖에서 hadoop으로 s3의 데이터를 조회하는 방법 AWS 환경에서는 하둡으로 S3의 데이터를 직접 조회할 수 있습니다. AWS가 아닌 환경, 직접 구성한 클러스터 에서는 S3 데이터를 조회하기 위해서 라이브러리를 추가해야 합니다. 작업을 진행하기 전에 AWS S3 버켓의 접근 가능 여부를 먼저 확인해야 합니다. 라이브러리 설정 aws 연결을 위한 라이브러리는 기본적으로 하둡 배포판에 제공됩니다. 하둡을 설치한 디렉토리의 아라의 위치를 확인하면 aws 관련 라이브러리가 존재하는 것을 알 수 있습니다. 이 라이브러리 위치를 hadoop-env.sh 의 HADOOP_CLASSPATH 에 추가하거나, 명령어 실행 시점에 추가 해주 면 됩니다. # 하둡 라이브러리 확인 $ ls share/hadoop/tools/lib/hadoop-aws-2.10.0.jar sh.. 2021. 1. 17.
[hadoop] 보안하둡, 일반하둡간 DistCp 처리 하둡에서 일반 하둡과 보안 하둡간에 DistCp를 처리하는 방법은 다음과 같습니다. 보안하둡은 커버러스 적용된 하둡입니다. 보안하둡에서 실행해야 합니다. 2021. 1. 10.
[HDFS] Stale Stroage가 발생했을 때 처리 방법 HDFS를 운영중 네임노드가 일시적으로 중단되었을 때 데이터노드가 블록 리포트를 네임노드에 전달하고 응답을 받지 못하면 StaleStorage가 발생합니다. 이 오류는 일시적인 오류이기 때문에 일반적으로 모르고 넘어갈 수 있습니다. 데이터노드의 블록 리포트는 기본적으로 6시간(dfs.blockreport.intervalMsec)에 한번씩 생성하기 때문에 이 오류는 네임노드가 정상이 되어도 바로 사라지지 않습니다. 이럴 때는 FS 명령을 이용해서 오류를 바로 처리할 수 있습니다. 2020. 12. 28.
[hadoop] hadoop fs 명령에서 로그를 출력하는 방법 하둡 fs 명령에서 디버깅을 위한 메세지를 출력하고 싶을 때는 하둡의 로깅 레벨을 변경하면 됩니다. 다음은 HADOOP_ROOT_LOGGER를 변경하여 fs 커맨드에서 로그를 출력하는 방법입니다. export HADOOP_ROOT_LOGGER=DEBUG,console # 로그가 출력됨 $ hadoop fs -Dfs.swift.service.kw.username= -Dfs.swift.service.kw.password= -ls swift://default.service/ 20/11/04 08:24:37 DEBUG util.Shell: setsid exited with exit code 0 20/11/04 08:24:37 DEBUG conf.Configuration: parsing URL jar:file:/.. 2020. 11. 4.
[hadoop] [스크랩] Line에서 하둡 클러스터를 운영하면서 발생한 장애 상황 대응 방법 Line에서 하둡 클러스터를 운영하면서 발생한 장애 상황을 정리한 것입니다. 데이터 엔지니어링 관련 소프트웨어 장애 대응 사례 에서 상세한 내용을 확인할 수 있습니다. 짧게 요약하면 다음과 같습니다. hadoop.registry.rm.enabled=false로 설정 HDFS의 휴지통 설정을 켜놓으면 삭제 데이터가 많을 때는 HDFS에 부담이 될 수 있으므로 삭제 간격을 잘 조절 Zeepline의 버그에 의한 오류가 발생할 수 있으니 버전업, 버그 리포트를 잘 확인 하이브 테이블의 파티션이 많으면 스파크 드라이버가 힘들 수 있으니 파티션을 잘 설정 Apache Hadoop YARN 리소스 매니저 failover 발생 문제와 해결 방안 현상 하둡 클러스터에서 동작하는 애플리케이션의 수가 늘어나면서 리소스 매.. 2020. 6. 4.
[hadoop] hadoop fs 명령의 OutOfMemory 오류 수정 hadoop fs 명령에서 OutOfMemory 오류가 발생하는 경우가 있습니다. 아래와 같이 디렉토리의 정보를 가져올 때 오류가 발생합니다. $ hadoop fs -ls /app/logs # # java.lang.OutOfMemoryError: GC overhead limit exceeded # -XX:OnOutOfMemoryError="kill -9 %p" # Executing /bin/sh c "kill -9 1234"... KILLED 원인 및 해결방법 주로 파일 개수가 많을 때 발생합니다. 이런 경우 하둡 클라이언트의 메모리를 늘려주면 됩니다. 아래와 같이 입력하여 메모리 설정을 늘려주고 fs 명령을 입력하면 됩니다. export HADOOP_CLIENT_OPTS="-Xmx2048m" 2019. 12. 17.
[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] 하둡에서 S3를 파일시스템으로 이용하기 위한 방법 하둡은 데이터를 저장할 때 HadoopFileSystem API를 이용하여 파일 시스템에 데이터를 저장합니다. 이 API를 이용하여 HDFS나 S3에 데이터를 저장할 수 있습니다. HDFS 분산 파일 시스템 대량의 데이터 처리에 유리 큰 사이즈의 파일에 최적화 네임노드가 메타데이터를 관리하고, 데이타노드가 데이터를 블록단위로 저장 하둡 3.x에서는 이레이져 코딩, 라우터 기반 연합, ozone 도입 Hadoop FileSystem API, 하둡 fs 커맨드, 웹 UI로 접근 S3 AWS에서 제공하는 객체 저장 시스템 확장성, 고가용성, 내구성, 보안, 성능 등의 특징을 가짐 저장용량과 요청 횟수에 따라 과금 키 기반으로 데이터가 저장됨. 디렉토리 시스템 아님. 파일 시스템 아님 REST API, AWS .. 2019. 11. 6.
[hadoop][yarn] Caused by: java.io.IOException: default cannot be found during refresh! 오류 수정 YARN의 커패시티 스케줄러의 큐는 운영중에 추가는 할 수 있지만, 삭제 할 수는 없습니다. 기존에 설정된 큐를 삭제하는 경우 다음과 같은 오류가 발생합니다. 리소스 매니저를 재시작해야 설정이 적용됩니다. 리소스 매니저 재시작 # 정지 $ sudo stop hadoop-yarn-resourcemanager # 실행 $ sudo start hadoop-yarn-resourcemanager 오류 $ yarn rmadmin -refreshQueues 19/10/31 04:26:55 INFO client.RMProxy: Connecting to ResourceManager at /10.11.60.235:8033 refreshQueues: java.io.IOException: Failed to re-init qu.. 2019. 10. 31.
[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.