본문 바로가기

Hadoop63

[hive] hive 의 mr 엔진의 오류 처리 - FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. DEFAULT_MR_AM_ADMIN_USER_ENV Hive 에서 MR 엔진으로 작업을 실행할 때 다음과 같은 오류가 발생하는 경우가 있습니다 FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. DEFAULT_MR_AM_ADMIN_USER_ENV 원인은 hadoop 라이브러리 충돌입니다. tez 0.9.2 버전에 들어있는 기본 라이브러리가 hadoop 2.7이고, 설치한 하둡 라이브러리가 2.10.2 이기 때문에 발생하는 오류입니다. 문제 해결을 위애서는 tez 에 들어있는 하둡 라이브러리를 삭제 하면 됩니다. rm hadoop-mapreduce-client-core-2.7.0.jar rm hadoop-mapreduce-client-commo.. 2024. 2. 23.
[hdfs] java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 192.168.0.103:50010 오류 HDFS 운영 중 다음과 같은 오류가 발생하였습니다. 23/12/18 15:22:43 INFO hdfs.DataStreamer: Exception in createBlockOutputStream java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 192.168.0.103:50010 at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:118) at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStre.. 2023. 12. 26.
[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.
[hive] 하이브 서버2의 Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.fs.FsTracer.get 오류 수정 방법 hive 3에서 tez 0.10.1, hadoop 3.3.4와 연동 중 하이브 서버2를 실행했을 때 다음과 같은 오류가 발생하는 경우가 있습니다. 이 오류는 tez 가 하둡 3.1.3 라이브러리를 가지고 있기 때문입니다. 하둡과 하이브의 hadoop-hdfs-client 버전이 달라서 발생합니다. 하둡 라이브러리 버전을 일치하게 만들면 오류를 해결할 수 있습니다. java.lang.Error: Max start attempts 5 exhausted at org.apache.hive.service.server.HiveServer2.startHiveServer2(HiveServer2.java:1064) ~[hive-service-3.1.3.jar:3.1.3] at org.apache.hive.service... 2022. 8. 28.
[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.
[hbase] hbase 2.4.13 실행 중 java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected 오류 HBase 2.4.13 을 hadoop 3와 연동하는 중에 해당 오류가 발생하였습니다. java.lang.IncompatibleClassChangeError: Found interface org.apache.hadoop.hdfs.protocol.HdfsFileStatus, but class was expected 2022-08-12 11:17:02,520 WARN [RS-EventLoopGroup-1-2] concurrent.DefaultPromise: An exception was thrown by org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper$4.operationComplete() java.lang.IllegalArgume.. 2022. 8. 19.
[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.
[hbase2] HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_USER: bad substitution 오류 hbase 2.3.5를 설정하면서 실행에는 문제가 없지만 다음과 같은 경고가 출력되었습니다. ++ /opt/hadoop/bin/hadoop org.apache.hadoop.hbase.util.GetJavaProperty java.library.path /opt/hadoop-3.2.1/bin/../libexec/hadoop-functions.sh: line 2366: HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_USER: bad substitution /opt/hadoop-3.2.1/bin/../libexec/hadoop-functions.sh: line 2461: HADOOP_ORG.APACHE.HADOOP.HBASE.UTIL.GETJAVAPROPERTY_.. 2021. 8. 11.
[hbase] hbase의 ExportSnapshot 중 java.lang.IllegalAccessError: tried to access method org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider.getProxyInternal 오류 처리 hbase 1.4.13버전과 Hadoop 2.10.0 버전을 이용하는 환경에서 ExportSnapshot 처리중 다음과 같은 오류가 발생했습니다. Exception in thread "main" java.lang.IllegalAccessError: tried to access method org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider.getProxyInternal()Ljava/lang/Object; from class org.apache.hadoop.yarn.client.RequestHedgingRMFailoverProxyProvider at org.apache.hadoop.yarn.client.RequestHedgingRMFailove.. 2021. 6. 16.
[ansible] shell 모듈과 nohup을 이용한 하둡, 하이브 daemon 프로세스 실행 앤서블을 이용해서 하둡, 하이브 데몬을 실행할 때 nohup을 이용하지 않으면 프로세스가 정상적으로 실행되지 않습니다. 앤서블이 서버에 연결 후 프로세스를 실행하고, 연결 종료 후 프로세스가 함께 종료됩니다. 따라서 nohup을 이용하지 않으면 프로세스가 실행되지 않고, 종료됩니다. 기본적으로 shell 모듈은 서비스를 실행하기 위해 디자인된 모듈이 아니기 때문입니다. 서비스를 실행할 때는 service 모듈을 이용하는 것이 좋습니다. 이 예제는 shell 모듈을 이용해야 하는 경우에 사용합니다. 2021. 5. 26.
[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.
[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] 보안하둡에서 일반하둡으로의 데이터 조회(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.
[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.
[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.
[hdfs] HDFS WebHDFS REST API 사용법 HDFS는 REST API를 이용하여 파일을 조회하고, 생성, 수정, 삭제하는 기능을 제공합니다. 이 기능을 이용하여 원격지에서 HDFS의 내용에 접근하는 것이 가능합니다. REST API 설정 REST API를 사용하기 위해서는 hdfs-site.xml에 다음의 설정이 되어 있어야 합니다. -- webhdfs 사용여부 설정 dfs.webhdfs.enabled=true; -- webhdfs 포트 설정 dfs.namenode.http-address=0.0.0.0:50070; REST API 사용 방법 위에서 설정한 http 포트로 curl 명령을 이용하여 ls명령을 날리는 예제는 다음과 같습니다. -- /user/hadoop 위치를 조회 $ curl -s http://$(hostname -f):50070/.. 2020. 1. 9.
[hadoop-hdfs] HDFS 포맷 하는 방법 HDFS를 포맷하는 방법에 대해서 알아보겠습니다. HDFS를 포맷하면 데이터가 모두 사라집니다. 반드시 백업을 해두고 진행하는 것이 좋습니다. 작업 순서 작업 순서는 AWS EMR의 HDFS를 기준으로 작성되었습니다. 각 제조사의 하둡마다 순서가 바뀔수 있지만 전체적인 맥락은 변경되지 않습니다. 서버 종료 네임노드, 데이타노드 종료를 종료합니다. 모든 노드의 네임노드 프로세스와 데이타노드 프로세스를 종료합니다. 네임노드 포맷 포맷 hdfs namenode -format 명령으로 네임노드를 포맷합니다. 네임노드를 포맷하면 dfs.namenode.name.dir경로의 fsimage와 edits 파일이 초기화 됩니다. 네임노드를 포맷하면 클러스터 ID가 신규로 생성됩니다. 이 정보는 dfs.namednoe.n.. 2019. 12. 26.
[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.
[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-hdfs] HDFS Archival Storage, SSD & Memory HDFS는 각 데이터 노드의 저장장치의 특성에 맞게 데이터를 저장하는 특성을 제공한다고 합니다. Heterogeneous Storage (HDFS-2832)의 내용을 참고 하면 될 것 같습니다. 네이버의 PINPOINT, eBay등에서 이 작업을 적용하여 비용에 이득을 얻었다고 합니다. 아래 문서에 상세한 결과가 나와 있으므로 참고 바랍니다. $ hdfs storagepolicies -listPolicies Block Storage Policies: BlockStoragePolicy{COLD:2, storageTypes=[ARCHIVE], creationFallbacks=[], replicationFallbacks=[]} BlockStoragePolicy{WARM:5, storageTypes=[DISK,.. 2019. 8. 7.
[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.
[hadoop-hdfs] HDFS의 사용 가능한 용량 확인 HDFS의 용량을 확인하는 방법을 알아보겠습니다. hdfs dfsadmin -report 명령을 이용하면 현재 HDFS의 용량과 전체 노드의 용량 상태를 확인할 수 있습니다. 아래는 Non DFS Used의 용량이 많아서 실제 저장에 이용할 수 있는 용량이 많이 줄었기 때문에 이를 확인해서 처리하는 작업이 필요한 상황입니다. $ hdfs dfsadmin -report # 클러스터 전체의 상황 # 사용할 수 있게 설정된 용량은 5.88T # 현재 사용 가능한 용량은 4.27T = 5.88T - (Non DFS Used * 39) # 비어 있는 용량은 3.22T # 사용중인 용량은 1.05T Configured Capacity: 6466620506112 (5.88 TB) Present Capacity: 46.. 2019. 7. 23.
[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.
[hadoop] TestDFSIO를 이용하여 HDFS I/O 성능 체크 TestDFSIO는 하둡에서 HDFS의 성능을 체크하기 위해서 제공하는 기능입니다. 파일 개수와 사이즈를 지정하여 HDFS의 대역폭과 read, write 시간을 확인할 수 있습니다. 소스코드 하둡 GIT(바로가기)에서 확인할 수 있습니다. apache/hadoop Apache Hadoop. Contribute to apache/hadoop development by creating an account on GitHub. github.com 자신이 다운로드 받은 라이브러리 중에서 examples나 test jar 파일에 해당 소스코드가 들어 있습니다. jar파일은 메이븐에서 다운로드 할 수 있습니다. hadoop-mapreduce-client.jobclient*.jar 로 검색하면 됩니다. mvnrepo.. 2019. 6. 17.
[hadoop] 리소스매니저 UI의 Memory Reserved 리소스 매니저 UI의 클러스터 메트릭 부분을 보면 Memory Reserved라는 항목이 있습니다.이 부분은 YARN이 동작할 때 큰 크기의 메모리를 요구하는 작업이 있을 때 동작을 보장하기 위해서 예약해 두는 항목입니다. 예를 들어 작업 A는 1G의 메모리, 작업 B는 2G의 메모리를 할당 한다고 하겠습니다. 작업 A가 먼저 실행되어 클러스터 전체의 메모리를 할당 받고 작업이 종료될 때 마다 1G의 메모리 여유가 발생하고, 작업 B는 메모리가 맞지 않아서 작업을 진행하지 못하여 작업 A만 계속 처리하게 됩니다. 그러면 작업B는 작업A가 종료될 때까지 계속 대기해야 하는 기아(starving) 상태가 됩니다. 이를 방지하기 위해서 작업B에 할당할 수 있게 메모리의 여유분을 할당하지 못하게 막아두는 것이 .. 2019. 5. 15.