로컬 시스템에 파이썬이 2, 3 모두 설치 되어 있으면 기본 설정된 파이썬을 이용하여 빌드가 진행된다. 이때 버전별 설정을 위해서는 Tools -> Build System -> New Build System 에서 새로운 빌드를 추가해서 빌드하면 된다. 파이썬2라면 다음과 같이 추가해서, 추가된 빌드 시스템을 선택하고 빌드하면 된다. { "cmd": ["C:\\Python27\\python", "$file"], "selector": "source.python", "file_regex": "^\\s*File \"(...*?)\", line ([0-9]*)"}
Hive 트랜잭션 하이브는 0.13버전부터 트랜잭션을 지원한다. 파일 수정이 없는 HDFS의 특성상 모든 기능이 완벽하게 지원되지 않고, 기본(default) 트랜잭션 설정은 off로 되어 있다. BEGIN, COMMIT, ROLLBACK은 아직 지원하지 않음, 현재는 auto-commit 만 지원 ORC 파일 포맷, 버켓팅 설정이 된 매니지드 테이블에서만 지원 Non-ACID 세션에서는 ACID 테이블에 접근 불가 상세한 내용은 Hive Wiki를 참조하면 된다. 트랜잭션 구조 HDFS는 파일의 변경/수정을 지원하지 않는다. 따라서 HDFS에서 데이터의 수정, 삭제를 지원하기 위해서 데이터를 베이스(base) 파일에 기록하고, 트랜잭션이 발생할 때마다 델타(delta) 파일에 내용을 기록한다. 그리고 ..
Yarn의 설정은 다음과 같다. yarn.nodemanager.resource.memory-mb- 노드의 메모리 크기 설정 yarn.nodemanager.resource.cpu-vcores- 노드의 코어 개수 설정 yarn.scheduler.minimum-allocation-mbyarn.scheduler.maximum-allocation-mb- RM이 컨테이너당 할당하는 최소, 최대 메모리 yarn.scheduler.minimum-allocation-vcoresyarn.scheduler.maximum-allocation-vcores- RM이 컨테이너당 할당하는 최소, 최대 코어 매퍼 설정은 다음과 같다 a. mapreduce.map.memory.mbb. mapreduce.map.cpu.vcoresc. m..
하둡의 구조 하둡은 크게 분산저장과 병렬처리 프레임워크로 나눌수 있다. 분산저장(HDFS) 분산저장은 마스터 슬레이브 구조로 구성되는 네임노드와 데이터노드로 처리 한다. 하나의 네임노드에 다수의 데이터 노드로 구성되고, 각각의 노드는 다음과 같은 역활을 한다. 네임노드(Namenode) 데이터 노드 관리 메타데이터 관리 디렉토리, 파일 정보 관리 블록과 디렉토리간 매핑 정보 관리 파일 시스템의 관리를 위해 fsimage와 edits 를 이용 데이타노드 데이터 파일을 블록단위로 나누어서 저장 체크포인트 노드, 세컨더리 네임노드 fsimage와 edits를 주기적으로 체크하여 체크포인트를 생성하고 이를 이용하여 파일의 수정사항을 관리 체크포인트 노드는 fsimage를 네임노드에 업로드 하고, 세컨더리 네임노..
일자별로 생성된 데이터의 처리를 위해서 yyyymmdd 형태의 문자열 또는 datetime 객체를 생성하기 위한 코드 조각이다. 3개의 형식으로 1. 시작일자, 종료일자를 입력 받아서 해당 일자 사이의 yyyymmdd 리스트 반환2. 시작일자, 기간을 받아서 시작일자 - 기간의 일자 반환3. 시작일자, 기간을 받아서 시작일자 + 기간의 일자 반환 처리결과 : ['20180501', '20180502', '20180503', '20180504', '20180505', '20180506', '20180507', '20180508', '20180509', '20180510']
하둡 자바로 구현된 대규모 분산처리를 위한 오픈소스 프레임워크야후의 더그 커팅이 '넛치'라는 검색엔진을 개발하는 과정에서 개발 비정형 데이터를 RDB에서 처리하기에는 사이즈가 커서 새로운 기술이 필요하게 됨 구글에서 발표한 GFS와 MapReduce 관련 논문을 참고하여 개발 하둡의 구성 분산저장(HDFS:Hadoop Distributed File System), 병렬처리(MapReduce) 프레임워크로 구성 분산저장 여러개의 서버를 하나의 서버처럼 묶어서 데이터를 저장 병렬처리 분산되어 저장된 데이터를 데이터가 존재하는 위치에서 동시에 처리 하둡의 장단점 장점 오픈소스로 라이선스에 대한 비용 부담이 적음 시스템을 중단하지 않고, 장비의 추가가 용이(Scale Out) 일부 장비에 장애가 발생하더라도 전..
하이브에서 다음과 같은 오류가 발생하면 이는 다이나믹 파티션 처리중 생성가능한 파티션 개수 이상의 파티션이 생성되어서 발생하는 것이다. 아래 오류의 내용처럼 해당 설정을 늘여주면 된다. Caused by: org.apache.hadoop.hive.ql.metadata.HiveFatalException: [Error 20004]: Fatal error occurred when node tried to create too many dynamic partitions. The maximum number of dynamic partitions is controlled by hive.exec.max.dynamic.partitions and hive.exec.max.dynamic.partitions.pernode. ..
Git 저장소에 저장한 프로젝트의 이름을 변경하는 방법은 우선 Git 웹 홈페이지의 settings 에서 변경할 수 있다. 여기 Repository name 에서 수정하면 이름을 변경할 수 있다. 이부분은 리파지토리 이름을 변경하는 곳이고 프로젝트의 이름은 리팩토링을 통해서 변경할 수 있다. 이클립스 기준에서 프로젝트의 리팩토링에서 Refactor -> Move 프로젝트를 이동하고, Refactor -> rename 으로 이름을 변경하면 프로젝트의 이름을 변경할 수 있다. 그리고 이렇게 변경한 프로젝트를 push 하여 git 저장소에 반영해주면 된다. 이렇게 두단계를 거치면 프로젝트의 이름을 변경할 수 있다.
파이썬의 클래스는 애트리뷰트를 저장할 수 있는 특수 함수 __dict__ 를 가지고 있다. 이 속성에 클래스의 자체 애트리뷰트를 저장할 수 있다. 그리고 특수 함수 __getattr__, __setattr__ 를 이용하여 해당 값을 가지고 온다. 사용자가 클래스를 생성할 때 이 값들을 오버라이딩하여 재정의 할 수도 있다. https://docs.python.org/3/reference/datamodel.html https://ziwon.github.io/posts/python_magic_methods/
빅데이터 관련 기술 빅데이터는 수집, 정제, 적재, 분석의 단계를 거치면서 다양한 기술을 이용하여 처리 된다. Hadoop HDFS, Mapreduce로 구성된 빅데이터 처리 기술 자바로 구현된 대규모 분산처리를 위한 오픈소스 프레임워크 HBase HDFS 기반의 칼럼 기반 데이터베이스 HDFS 위에서 동작하는 NoSQL 데이터 베이스 실시간 조회 및 업데이트 가능 https://hbase.apache.org/hbase(main):003:0> describe 'test' Table test is ENABLED test COLUMN FAMILIES DESCRIPTION {NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION..
빅데이터 정의 빅데이터는 큰 사이즈의 데이터로부터 유의미한 지표를 분석해내는 것 으로 정의할 수 있다. 데이터 규모에 초점을 맞춘 정의 기존 DB 관리도구의 수집, 저장, 관리, 분석 역량을 넘어서는 데이터 업무 수행 방식에 초점을 맞춘 정의 다양한 종류의 대규모 데이터로부터 가치를 추출하고, 데이터의 빠른 수집, 발굴, 분석을 지원하도록 고안된 기술 및 아키텍처 출현배경 데이터 양의 증가 / 데이터 저장기술 발달 SNS등장, 스마트 기기 보급 디지털 저장기술과 장치의 발달 경제적 타당성 증가 / 저장장치의 가격 인하 1980년대 1G 10억 이상이던 메모리 가격이 2010년대 100원 미만으로 떨어짐 데이터 처리기술 발달 분산 병렬처리 기술의 발달로 합리적인 시간 안에 데이터 분석이 가능해짐 CPU 발..
hive 처리중 tez의 AM 힙메모리 옵션을 다음과 같이 설정하였더니, 아래의 오류가 발생하였다. set tez.am.java.opts=-Xmx1600; 컨테이너를 실행하는 중에 오류가 발생하였는데,메모리 설정에서 m을 빠트려서 JVM 실행중 오류가 발생한 것이다. 다음의 오류가 발생할 때는 JVM 옵션에 이상은 없는지 확인하면 될 것이다. 그리고 위의 옵션은 다음과 같이 수정한다. set tez.am.java.opts=-Xmx1600; --> set tez.am.java.opts=-Xmx1600m; Container exited with a non-zero exit code 1]], TaskAttempt 2 failed, info=[Container container_1511744605848_9336..
ORC는 칼럼 기반의 파일 저장방식으로, hive에 적용하면 성능을 개선할 수 있다. 사용방법은 다음과 같이 STORED AS를 ORC로 선언해주면 된다. 그리고 TBLPROPERTIES에 설정정보를 입력할 수 있다. CREATE TABLE table1( col1 string, col2 string, col3 string, col4 string)STORED AS ORCTBLPROPERTIES ("orc.compress"="ZLIB","orc.compress.size"="262144","orc.create.index"="true","orc.stripe.size"="268435456","orc.row.index.stride"="3000","orc.bloom.filter.columns"="col1,col2")..
이클립스 쉐(che)는 클라우드 환경에 이클립스를 설정할 수 있게 도와주는 도구이다. 다운로드는 다음의 위치에서 하면 된다. http://www.eclipse.org/che/https://www.eclipse.org/che/getting-started/download/ 아마존 EC2에서 도커를 이용해 설치하고, 다음과 같이 설정한다. 1. Start Che with Docker https://docs.docker.com/engine/installation/linux/centos/ # yum update # sudo tee /etc/yum.repos.d/docker.repo name=Docker Repository > baseurl=https://yum.dockerproject.org/repo/main/c..
우지의 액션을 실행하는 우지 런처도 MR 잡으로 실행된다. 우지 런처의 메모리를 설정하는 옵션은 다음을 설정하면 된다. oozie.launcher.mapreduce.map.memory.mb=768oozie.launcher.mapreduce.map.java.opts=-Xmx512moozie.launcher.yarn.app.mapreduce.am.resource.mb=1024oozie.launcher.yarn.app.mapreduce.am.command-opts=-Xmx768m http://www.openkb.info/2016/07/memory-allocation-for-oozie-launcher-job.html
[[하이브 면접 주요 질문]] - HBase와 Hive의 차이는?HBase는 NoSQL 데이터베이스이고 Hive는 하둡잡을 실행하는 DW 프레임워크이다. HBase는 HDFS위에서 동작하고, Hive는 MapReduce 위에서 동작한다. - 하이브 서비스에 대하여 설명하세요cli하이브 쉘에 대한 명령해 인터페이스이며 기본 서비스이다. HiveServer2다른 언어로 개발된 클라이언트와 연동할 수 있도록 하이브를 쓰리프트 서비스로 실행기존 하이브 서버를 개선하여 인증과 다중 사용자 동시성을 지원쓰리프트, JDBC, ODBC 연결자를 사용하는 애플리케이션과의 연결을 지원beeline일반적인 CLI 처럼 내장형 모드로 동작하거나 JDBC로 하이브서버2 프로세스에 접근할 수 있는 하이브의 명령행 인터페이스hwi..
racoony 님의 이직일기 - http://raccoonyy.github.io/diary-of-changing-job/ 이력서도 공개하셨는데 이게 괜찮은거 같다. 이력서 쓸때 참고 해도 좋을 것 같다. 파이썬 면접 관련 질문을 요약해 두셨는데 이 부분도 면접전에 알아두면 도움이 될 것 같다. 파이썬 generator에 대해 아는 만큼 설명해주세요.파이썬에서 클래스를 상속하면, 메서드는 어떤 식으로 실행되나요?어떤 request가 Django API까지 도달하는 과정을 최대한 자세히 설명해주세요.파이썬에 존재하는 GIL에 대해서 설명해주세요.Django ORM의 작동 방식에 대해 설명해주세요.Django ORM에서 지연 평가를 하곤 하는데요. 직접 구현한다면 어떻게 구현하겠습니까?http와 https의 ..
맵리듀스는 8단계로 나누어져 있다고 할 수 있습니다. 각 단계는 작업에 따라서 생략될 수도 있습니다. 입력 -데이터를 입력하는 단계 -텍스트, csv, gzip 형태의 데이터를 읽어서 맵으로 전달 맵(Map) -입력을 분할하여 키별로 데이터를 처리 컴바이너(Combiner) -네트워크를 타고 넘어가는 데이터를 줄이기 위하여 맵의 결과를 정리 -로컬 리듀서라고도 함 -컴바이너는 작업의 설정에 따라 없을 수도 있음 파티셔너(Partitoner) -맵의 출력 결과 키 값을 해쉬 처리하여 어떤 리듀서로 넘길지를 결정 셔플(Shuffle) -각 리듀서로 데이터 이동 정렬(Sort) -리듀서로 전달된 데이터를 키 값 기준으로 정렬 리듀서(Reduce) -리듀서로 데이터를 처리하고 결과를 저장 출력 -리듀서의 결과를..
hive의 함수를 테스트할 때 array, map, json 문자열을 이용하여 값을 테스트 해야 하는 경우가 있다. 이럴때 임시로 문자열을 이용하여 데이터를 생성하고 테스트하면 편리하다. 다음과 같이 사용한다. select array(1,2,3)[2]; select array("a","b","c")[1]; select str_to_map("key1:value1,key2:value2", ",", ":")['key2']; SELECT get_json_object('{"store": {"fruit":\[{"weight":8,"type":"apple"},{"weight":9,"type":"pear"}], "bicycle":{"price":19.95,"color":"red"} }, "email":"amy@only..
hive 쿼리중 rank() 함수를 이용하였는데 다음과 같은 오류가 발생하였다. json을 UDTF를 이용하여 변환하는 함수 였는데 오류가 발생하였다. 그래서 cbo를 false 로 설정했더니 처리 되었다. explain 으로 확인결과 Reduce 단계가 하나 빠진것이 해결된 것 같다. 정확한 원인은 알 수 없으나 검색결과는 bug 일 가능성도 있는 것 같다. 혹시 모르니 cbo 를 false 로 설정해보길 권한다. set hive.cbo.enable=false; Caused by: java.lang.RuntimeException: Failed to load plan:org.apache.hive.com.esotericsoftware.kryo.KryoException: java.lang.IndexOutOf..
hive의 쿼리에서 in 을 이용하여 데이터를 비교할 때 다음과 같이 transform 구문을 이용하여 처리하였다.그랬는데 비교부분 테이블의 파티션이 늘어나면서 다음과 같이 BufferOverflowException 이 발생하였다. SELECT * FROM table1 WHERE create_date in ( select explode( split( yyy.date_list, ',' ) ) ... ) 파티션의 정보를 비교하다가 버퍼 오퍼플로우 익셉션이 발생하였다. 2018-09-09T01:11:11,111 WARN [pool-5-thread-200([])]: metastore.MetaStoreDirectSql (MetaStoreDirectSql.java:executeWithArray(1750)) - Fa..
Java 에서 배열 정렬중에 다음과 같은 오류가 발생할 때가 있다. Comparison method violates its general contract! Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:773) at java.util.TimSort.mergeAt(TimSort.java:510) at java.util.TimSort.mergeForceCollapse(TimSort.java:453) at java.util.TimSort.sort(TimSort.java:250) at ..
- Total
- Today
- Yesterday
- S3
- 백준
- Hadoop
- Linux
- hbase
- build
- HIVE
- HDFS
- 오류
- Tez
- yarn
- mysql
- SPARK
- 알고리즘
- 파이썬
- airflow
- emr
- java
- nodejs
- ubuntu
- 정올
- AWS
- oozie
- Python
- 다이나믹
- error
- SQL
- 하둡
- 하이브
- bash
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |