본문 바로가기

빅데이터405

[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.
[spark] spark에서 snappy 라이브러리를 찾지 못할때 수정 방법 : java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy 스파크에서 snappy 압축 방식으로 파일을 쓸 때 라이브러를 가져오지 못할 때 다음과 같은 오류가 발생합니다 Caused by: java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z at org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy(Native Method) at org.apache.hadoop.io.compress.SnappyCodec.checkNativeCodeLoaded(SnappyCodec.java:63) at org.apache.hadoop.io.compress.SnappyCodec.getCompressorType(S.. 2021. 3. 18.
[pyspark] pyspark 실행시 python: command not found 오류 pyspark 쉘을 실행하는 시점에 python 커맨드를 찾지 못한다는 오류가 발생하면 원인은 두 가지로 생각할 수 있습니다. 파이썬을 설치 하지 않음 파이썬을 설치 한다. 파이썬을 설치 했지만 python 명령이 아니라 python3나 python3.7 등의 버전명으로 명령어가 생성 PYSPARK_PYTHON 환경변수를 설정 2021. 3. 18.
[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.
[hive-tez] 파일 개수와 사이즈에 따른 그룹핑 사이즈 설정과 처리 속도 차이 하이브를 이용해서 데이터를 처리할 때 파일의 개수와 사이즈가 중요합니다. 동일한 쿼리에서도 설정에 따라 속도차이가 많이 날 수 있습니다. SELECT A, count(*) FROM tbl GROUP BY A ORDER BY A; 칼럼 A로 파티셔닝 파티션당 60 여개의 ORC 파일 파일당 10~20KB 이 상황에서 TEZ엔진 기본설정으로 쿼리를 실행하면 2148초가 걸립니다. 파일의 사이즈가 작아서 매퍼가 작게 생성되지만, ORC 파일의 특성상 하나의 파일에 많은 데이터가 들어가게 되고, 이 데이터를 모두 처리하는데 많은 메모리가 소모되기 때문입니다. 이런 경우 TEZ엔진의 그룹핑 사이즈를 조절하여 매퍼의 개수를 늘려서, 하나의 매퍼가 처리하는 데이터를 줄이면 속도가 빨라지는 것을 확인할 수 있습니다. .. 2021. 2. 16.
[hadoop] 보안하둡에서 일반하둡으로의 데이터 조회(ls command) 커버로스 인증이 적용된 보안하둡에서 일반 하둡의 데이터 조회는 옵션을 추가해서 처리할 수 있습니다. 2021. 1. 31.
[hbase] org.apache.hadoop.hbase.PleaseHoldException: Master is initializing 오류 HBase 작업 중 Master is initializing 오류가 발생하는 경우가 있습니다. 마스터가 초기화 중일 때 리전 서버가 연결되지 않았을 때 리전서버가 마스터에 연결되지 않았을 때 /etc/hosts 정보가 설정되지 않았을 HBase는 마스터와 리전서버간에 모든 서버의 정보를 각 노드가 알고 있어야 함. 리버스 DNS가 처리되지 않는 환경이라면 /etc/hosts에 정보가 있어야 함 블록 정보를 아직 처리중 일 때 데이터가 깨졌을 때 HDFS의 데이터를 삭제하고 재부팅 주키퍼의 hbase 정보를 삭제하고 재부팅 2021. 1. 27.
[hbase] HBase에 ACL 적용 hbase는 기본적으로 ACL을 설정하지 않습니다. ACL을 설정하지 않으면 관련 명령어를 실행할 때 ERROR: DISABLED: Security features are not available 오류가 발생합니다. hbase 에서 ACL을 적용하기 위해서는 hbase-site.xml에 다음 설정을 추가합니다. 그리고 hbase를 재부팅 하면 됩니다. hbase에 ACL을 적용하면 접근할 수 있는 테이블만 보이고, 권한이 있는 네임스페이스에 테이블을 생성할 수 있습니다. HBase ACL 명령어 ACL관련 명령어는 다음과 같습니다. 2021. 1. 27.
[zookeeper] 커버로스 설정 중 Message stream modified (41) 오류 해결 방법 2021-01-19 11:41:00,345 - ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally java.io.IOException: Could not configure server because SASL configuration did not allow the ZooKeeper server to authenticate itself properly: javax.security.auth.login.LoginException: Message stream modified (41) at org.apache.zookeeper.server.ServerCnxnFactory.configureSaslLogin(ServerCnxnFactor.. 2021. 1. 19.
[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.
[hue] too many open sessions. stop a running query before starting a new one 오류 해결 방법 hue에서 too many open sessions. stop a running query before starting a new one 오류가 발생하는 경우 일반적인 경우 사용자가 많아서 설정된 세션 개수를 초과해서 발생합니다. 이런 경우 휴 설정의 max_number_of_sessions 값을 늘려주면 됩니다. 하지만 저의 경우 휴를 설정하면서 휴의 실행, 종료를 반복하다보니 정상적으로 종료되지 못한 세션이 존재하여 발생하였습니다. 이럴 때는 휴의 데이터베이스에서 세션정보를 찾아서 지워주면 됩니다. 아래와 같이 beeswax_session 테이블에 이전에 테스트할 때 생성한 세션의 정보가 살아 있어서 오류가 발생하여 모든 정보를 지우고 세션을 새로 생성하여 문제를 해결하였습니다. mysql> sele.. 2020. 12. 6.
[zookeeper] ACL을 수정하기 위해 슈퍼 유저 되는 방법 주키퍼의 슈퍼유저가 되면 모든 노드의 ACL을 설정할 수 있습니다. 슈퍼 유저가 되기 위해서는 다음의 과정을 거쳐야 합니다. DigestAuthenticationProvider를 실행하여 해쉬값을 확인 DigestAuthenticationProvider를 먼저 실행하여 암호에 대한 해쉬값을 확인합니다. export ZK_CLASSPATH=/etc/zookeeper/conf/:/usr/hdp/current/zookeeper-server/lib/*:/usr/hdp/current/zookeeper-server/* java -cp $ZK_CLASSPATH org.apache.zookeeper.server.auth.DigestAuthenticationProvider super:super123 OUTPUT: sup.. 2020. 12. 5.
[HBase] Reported time is too far out of sync with master 오류 해결 방법 오류 HBase 리전서버 실행중 아래와 같이 Reported time is too far out of sync with master. Time difference of 52328ms > max allowed of 30000ms 오류가 발생하였습니다. 2020-12-02 14:22:15,357 INFO [regionserver/:16020] regionserver.HRegionServer: STOPPED: Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException: Server ,16020,1606886533858 has been rejected; Reported time is too far out of sync with master. Time differen.. 2020. 12. 2.
[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.
[oozie] Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.HiveMain not found 오류 확인 문제 우지에서 하이브를 이용할 때 다음의 오류가 발생하는 경우가 있습니다. 이 경우는 우지의 쉐어 라이브러리(sharelib)설정을 이용하지 않을 때 로컬에서 라이브러리를 확인하지 못할 때 발생할 수 있습니다. Caused by: java.lang.ClassNotFoundException: Class org.apache.oozie.action.hadoop.HiveMain not found at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2273) at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2367) ... 13 more 해결 방법 우지 작업 실.. 2020. 10. 28.
[Helm] error validation "" 오류 해결방법 Helm 차트를 이용할 때 yaml 파일에서 다음과 같은 오류가 발생하였습니다. 스펙에 존재하는 필드인데 존재하지 않는 다는 오류가 발생하는데 이런 경우 yaml 파일을 찾아보면 들여쓰기가 제대로 되지 않아서 오류가 발생하였습니다. yaml 파일으 데이터의 구분을 들여쓰기(indentation)으로 구분하기 때문에 잘 구분해서 사용해야 합니다. Error: error validating "": error validating data: ValidationError(StatefulSet.spec.template.spec): unknown field "emptyDir" in io.k8s.api.core.v1.PodSpec script returned exit code 1 2020. 10. 7.
[Hue] 빌드 중 ValueError: bad marshal data (unknown type code) 오류 해결 방법 문제 Hue를 빌드할 때 다음의 오류가 발생할 수 있습니다. 컴파일 된 pyc 파일과 실행환경의 파이선 버전이 달라서 데이터를 읽을 수 없을 때 발생하는 오류입니다. ValueError: bad marshal data (unknown type code) 해결 방법 Hue를 빌드 할 때. 파이선3의 환경으로 설정하라고 되어 있었지만 장고 모듈을 빌드하는 과정에서 해당 오류가 발생하여 파이썬2로 빌드하여 문제를 해결할 수 있었습니다. export PYTHON_VER=python2.7 해당 오류는 pyc 파일을 삭제하고 실행 환경의 파이썬으로 다시 빌드하면 해결할 수 있습니다. find . -name "*.pyc" 참고 marshal을 이용해서 파일을 읽는 방법은 다음과 같습니다. import marshal .. 2020. 10. 5.
[Hue] Hue와 하이브 연결에서 The application won't work without a running HiveServer2 오류 해결 방법 문제 Hue를 설정할 때 하이브서버2(HiveServer2)와 연결할 때 하이브서버2의 쓰리프트 연결 모드가 http일 경우에만 동작합니다. 쓰리프트 모드가 binary일 경우 다음과 같은 오류가 발생합니다. The application won't work without a running HiveServer2 해결 방법 하이브서버2의 쓰리프트 모드 변경을 위해 hive-site.xml 파일에 설정을 변경하고 재시작합니다. hive.server2.transport.mode http 2020. 10. 4.
[hive] MR, TEZ 실행엔진 라이브러리 업로드 위치 설정 하이브 실행 엔진을 설정하고 맵리듀스, 테즈를 실행하기 위해서는 실행을 위한 라이브러리를 HDFS에 업로드 하고 설정파일에 각 라이브러리의 위치를 지정해야 실행할 수 있습니다. 다음 파일의 위치는 HDFS 상의 위치입니다. MR 엔진: mapred-site.xml mapreduce.application.framework.path /hadoop/apps/mapreduce/hadoop-version.tar.gz#mapreduce TEZ 엔진: hive-site.xml tez.lib.uris /hadoop/apps/tez/tez.tar.gz 2020. 9. 29.
[spark] __spark_libs__.zip does not exist 오류 해결 방법 스파크쉘으르 이용하여 작업을 실행하면 작업에 필요한 라이브러리를 묶어서 hdfs에 올리고, 이 라이브러리를 사용해서 워커노드에서 작업을 처리합니다. 따라서 hdfs연결 설정이 올바르지 않으면 해당 오류가 발생합니다. java.io.FileNotFoundException: File file:/tmp/spark-126d2844-5b37-461b-98a4-3f3de5ece91b/__spark_libs__3045590511279655158.zip does not exist at org.apache.hadoop.fs.RawLocalFileSystem.deprecatedGetFileStatus(RawLocalFileSystem.java:611)해결방법 /etc/spark/spark-env.sh에서 configura.. 2020. 9. 14.
[spark] Service 'sparkDriver' could not bind on a random free port. 오류 해결 스파크쉘의 마스터를 yarn으로 설정하고 yarn 클러스터 외부의 클라이언트에서 실행할 때 다음의 오류가 발생하는 경우가 있습니다. 오류 $ ./spark-shell --master yarn Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). 20/09/09 16:01:26 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 20/09/09 16:0.. 2020. 9. 13.
[hbase] hbase의 리전서버가 중복 등록되는 문제 해결 방법 hbase의 리전서버가 등록될 때 같은 서버가 호스트명(hostname)과 IP로 중복되어 등록되는 경우가 있습니다. 로그를 확인해 보면 다음과 같습니다. 정상 상태일 때는 서버의 도메인 명인 region-server.com으로 등록하고, 오류 상태일 때는 IP로 받아서 호스트명인 region-server로 등록합니다. 이 경우 동일한 서버가 중복 등록되어 오류가 발생합니다. # 정상 상태 2020-09-02 14:42:53,335 INFO [B.defaultRpcServer.handler=8,queue=2,port=16000] master.ServerManager: Registering server=region-server.com,16020,1599025371919 # 오류 상태 2020-09-02 1.. 2020. 9. 3.
[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.