하이브에서 테이블을 조회할 때 where 조건에 파티션 정보를 이용하면 하이브 메타스토어에서는 테이블의 파티션 정보를 가져와서 데이터를 조회할 로케이션을 설정합니다. 이때 MetaStoreDirectSql.java 에서 다음의쿼리를 이용하여 파티션 정보를 가져옵니다. 그런데 이때 파티션의 구간을 길게 잡아서 조회하는 파티션 개수가 많아지면 버퍼 오류가 발생하게 됩니다. select PARTITIONS.PART_ID from PARTITIONS inner join TBLS on PARTITIONS.TBL_ID = TBLS.TBL_ID and TBLS.TBL_NAME = "테이블명" inner join DBS on TBLS.DB_ID = DBS.DB_ID and DBS.NAME = "데이터베이스명" wher..
R을 이용하여 평균, 분산, 표준편차를 구하는 방법을 알아보기 전에 먼저 평균, 분산, 표준편차에 대해서 알아보겠습니다. https://learnx.tistory.com/entry/%ED%86%B5%EA%B3%84%EC%9D%98-%EA%B8%B0%EC%B4%88%EC%9D%B8-%ED%8F%89%EA%B7%A0-%EB%B6%84%EC%82%B0-%ED%91%9C%EC%A4%80%ED%8E%B8%EC%B0%A8 통계의 기초인 평균, 분산, 표준편차 통계분석을 하면서 자주 접하는 기본단위인, 평균, 분산, 표준편차에 대해 알아봅니다. 1. 평균(mean, average): 주어진 수의 합을 측정개수로 나눈 값으로, 대표값 중 하나 2. 분산(Variance): 변량들이 퍼져있는.. learnx.tistor..
리소스 매니저 UI의 클러스터 메트릭 부분을 보면 Memory Reserved라는 항목이 있습니다.이 부분은 YARN이 동작할 때 큰 크기의 메모리를 요구하는 작업이 있을 때 동작을 보장하기 위해서 예약해 두는 항목입니다. 예를 들어 작업 A는 1G의 메모리, 작업 B는 2G의 메모리를 할당 한다고 하겠습니다. 작업 A가 먼저 실행되어 클러스터 전체의 메모리를 할당 받고 작업이 종료될 때 마다 1G의 메모리 여유가 발생하고, 작업 B는 메모리가 맞지 않아서 작업을 진행하지 못하여 작업 A만 계속 처리하게 됩니다. 그러면 작업B는 작업A가 종료될 때까지 계속 대기해야 하는 기아(starving) 상태가 됩니다. 이를 방지하기 위해서 작업B에 할당할 수 있게 메모리의 여유분을 할당하지 못하게 막아두는 것이 ..

서브라임 텍스트의 플러그인을 개발하기 위해서 테스트용 프로그램을 만들어 보겠습니다. 서브라임 플러그인은 파이썬으로 개발하기 때문에 파이썬 문법을 알아야 합니다. 다음의 순서로 진행됩니다. 플러그인 생성 저장 실행 플러그인 생성 서브라임은 플러그인 템플릿을 제공해 줍니다. Tools -> Developer -> New Plugin.. 을 클릭하면 템플릿 소스코드가 제공됩니다. 이 코드는 현재 문서의 앞에 Hello, World! 문자를 입력합니다. import sublime import sublime_plugin class ExampleCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.insert(edit, 0, "Hello, Worl..
오브젝트 스토리지는 AWS의 S3같이 HTTP를 이용하여 클라우드 플랫폼으로 구성되는 저장소라고 할 수 있습니다. 사용자는 파일의 정확한 위치는 알 수 없고, URI를 이용해 파일에 접근하고 가져올 수 있습니다. 빅데이터에서 수많은 파일을 저장하는데 적합한 형태입니다. 키-밸류 형태로 파일을 저장하고, 가져옵니다. https://brownbears.tistory.com/258 블록 스토리지와 오브젝트 스토리지 블록 스토리지와 오브젝트 스토리지에 앞서 정형 데이터와 비정형 데이터에 대해 먼저 간략하게 설명하겠습니다. 비정형 데이터란? 일정한 규격이나 형태를 지닌 숫자 데이터와 달리 그림이나 영상, 문서와 같이.. brownbears.tistory.com 하둡에서 최근 오브젝트 스토리지를 지원하기 위해서 오..
오존(Ozone)은 하둡을 위한 확장성(scalable) 있는 분산 객체 저장소(distributed object store)입니다. 2019년 5월 7일에 0.4.0-알파버전이 발표되었습니다. 스파크, 하이브, YARN은 별도의 수정 없이 오존을 이용할 수 있습니다. 오존은 자바 라이브러리와 CLI환경을 지원합니다. 자바 라이브러리는 RPC와 REST 프로토콜을 지원하고 있습니다. 오존 구성 오존은 볼륨, 버켓, 키로 구성됩니다. 볼륨은 사용자 계정과 유사합니다. 관리자만 볼륨을 생성하거나 삭제할 수 있습니다. 버켓은 디렉터리와 유사합니다. 버켓은 여러 개의 키를 저장할 수 있지만, 다른 버켓은 저장할 수 없습니다. 키는 파일과 유사합니다. 버켓은 여러 개의 키를 저장할 수 있습니다. 오즌은 REST ..
https://programmers.co.kr/learn/courses/30/lessons/42748?language=scala 알고리즘 연습 - K번째수 | 프로그래머스 실행 결과가 여기에 표시됩니다. programmers.co.kr object Solution01 extends App { var array = Vector(1, 5, 2, 6, 3, 7, 4) var commands = Vector(Vector(2, 5, 3), Vector(4, 4, 1), Vector(1, 7, 3)) def solution(array: Vector[Int], commands: Vector[Vector[Int]]): Vector[Int] = { def innerSol(array: Vector[Int], command..
최근 많은 IT회사들이 코딩테스트를 보면서 코딩 연습 사이트가 많이 생겼습니다. 다음의 사이트들에서 연습할 수 있습니다. 코딩 연습파이썬: https://www.pythonpad.co/courses/intro-1/ https://www.pythonpad.co/courses/intro-1/ 출처: https://118k.tistory.com/249#comment12300916 [개발자로 살아남기]https://www.pythonpad.co/courses/intro-1/ 출처: https://118k.tistory.com/249#comment12300916 [개발자로 살아남기] 출처: https://118k.tistory.com/249#comment12300916 [개발자로 살아남기]https://www.p..
Executors 클래스를 이용한 멀티 스레드 실행 예제입니다. import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class SchedulerExecutorSample { public static void main(String[] args) { // scheduleAtFixedRate(실행가능객체, 지연시간, 주기, 단위) Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new TimeRunnable(), 0, 1, TimeUnit.SE..
우지를 이용하여 작업을 처리하는 중 fork를 이용하여 한번에 여러개의 액션(action)을 실행하면 클러스터 자원의 여유가 있어도, 우지가 10개의 액션만 동시에 처리(RUNNING 상태)하고 나머지는 대기 상태(PREP 상태)로 남아서 작업 속도를 증가하기 위해서 우지 액션 관련 설정을 확인해 보았습니다. 우지 액션 관련 설정은 세가지입니다. 설정 기본값 비고 oozie.service.ActionCheckerService.action.check.interval 60 작업의 동작 상황을 체크하는 기간. 60초 마다 반복 oozie.service.ActionCheckerService.action.check.delay 600 작업을 시작하고 동작체크를 시작하는 지연시간. 작업 시작후 600초(10분)뒤에 ..
우지 워크플로우의 기본 스펙과 실행 방법에 대해서 알아보겠습니다. [워크플로우 기본 스펙] 우지 워크플로우는 우지가 실제로 실행하는 작업의 순서를 담고 있습니다. XML 스키마에 맞춰서 작성하면 됩니다. https://oozie.apache.org/docs/4.2.0/WorkflowFunctionalSpec.html#Appendix_A_Oozie_XML-Schema Oozie - ::Go back to Oozie Documentation Index:: Oozie Specification, a Hadoop Workflow System (v3.1) The goal of this document is to define a workflow engine system specialized in coordinatin..
맥에서 JAVA_HOME을 설정하는 방법은 JDK가 있는 위치를 환경 쉘에 설정하는 것입니다. 오라클 JDK는 java_home을 실행하면 알 수 있고, OpenJDK는 다운로드한 위치로 알 수 있습니다. 다음은 오라클 JDK에서 자바홈의 위치를 알 수 있는 java_home 명령을 실행하여 위치를 알아내는 예제와 이를 이용하여 JAVA_HOME을 등록하는 방법입니다. # java_home명령으로 설치 위치 확인 $ /usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home # 명령어를 실행하도록 등록(사용자 디렉토리의 .bashrc 파일에 설정 ) export JAVA_HOME="$(/usr/libexec..
R은 통계 연산과 그래프 생성을 위한 프로그래밍 언어입니다. R은 뉴질랜드의 오클랜드 대학에서 개발되어 전세계적으로 사용되고 있습니다. 사용자들이 생성한 여러가지 패키지가 있어서 통계자료 생성을 편리하게 할 수 있습니다. R을 시작하기 위해서는 먼저 R언어를 설치하고, 개발의 편리성을 위해 IDE인 R Studio를 설치합니다. https://www.r-project.org/ R: The R Project for Statistical Computing The R Project for Statistical Computing Getting Started R is a free software environment for statistical computing and graphics. It compiles an..
HDFS의 네임노드 실행중 다음오류가 발생하면 hdfs-site.xml에 fs.defaultFS설정을 하지 않았거나 오류가 발생해서 입니다. 19/04/16 21:52:23 ERROR namenode.NameNode: Failed to start namenode. java.lang.IllegalArgumentException: Invalid URI for NameNode address (check fs.defaultFS): file:/// has no authority. at org.apache.hadoop.hdfs.DFSUtilClient.getNNAddress(DFSUtilClient.java:626) at org.apache.hadoop.hdfs.DFSUtilClient.getNNAddressChe..
더 나은 자바 개발자가 되기 위한 10가지 팁을 읽고 내용을 정리했습니다. 1. JAVA8을 배운다. 18년 11월 현재 JDK의 최신버전은 2018년 9월 발표된 JDK 11[^1]입니다. 자바8이 나온지도 4년이 되었습니다. 이제 자바 개발은 람다와 스트림 API를 활용하는 것을 필요로 합니다. 지금 시작하지 않으면 뒤쳐지게 될 것 입니다. 2. 스프링 배우기(스프링 부트) 많은 개발사들이 Spring MVC, Spring Boot, Spring Cloud 같은 스프링 프레임워크를 사용하기 때문에 공부해 두는 것이 좋습니다. 웹애플리케이션, REST API 마이크로 서비스 개발에 많이 사용하기 때문에 배워두면 많은 도움이 될 것 입니다. 3. 유닛 테스트 좋은 자바 개발자와 평범한 개발자를 나누는 기..
커패시티 스케줄러는 capacity-scheduler.xml 파일을 수정하고, 해당 파일을 리로드하게 하면 설정을 변경할 수 있습니다. 설정중 발생한 다음의 오류는 각 큐들의 용량(capacity)의 총합이 100이 되지 않아서 발생하는 오류입니다. 큐의 용량을 확인하여 모든 큐의 합이 100이 되도록 설정해야 합니다. Caused by: java.lang.IllegalArgumentException: Illegal capacity of 0.91 for children of queue root at org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.ParentQueue.setChildQueues(ParentQueue.java:143) at..
머신러닝(기계학습)은 인공 지능의 한 분야로 컴퓨터가 학습을 할 수 있도록 알고리즘과 기술을 개발하는 것입니다. 예를 들어 기계학습을 통해 스팸메일을 가려낼 수 있습니다. 머신러닝의 핵심은 표현과 일반화 입니다. 표현이란 데이터의 평가이며 일반화는 아직 알 수 없는 데이터이 처리입니다. 스파크의 MLib는 이 머신러닝 처리를 가능하게 하는 라이브러리 입니다. 기본적으로 제공하는 알고리즘은 다음과 같습니다. 통계(Statistics) 분류(Classification) 회귀(Regression) 협업 필터링(Collaborative Filtering) 클러스터링(Clustering) 차원 축소(Dimensionality Reduction) 특징 추출(Feautre Extraction) 빈발 패턴 마이닝(Fr..
AWS S3 ls 명령은 유닉스 스타일의 와일드카드(*, 아스테릭) 사용이 안됩니다. 따라서 include나 exclude 옵션을 이용하여 문제를 해결해야 합니다. https://docs.aws.amazon.com/cli/latest/reference/s3/ s3 — AWS CLI 1.16.140 Command Reference This section explains prominent concepts and notations in the set of high-level S3 commands provided. Order of Path Arguments Every command takes one or two positional path arguments. The first path argument repre..
하이브에서 TEZ엔진을 이용하여 UNION ALL을 이용하여 생성한 데이터로 데이터를 입력하면 최종 결과가 생성될 때 숫자로 서브 디렉토리가 생성됩니다. 예를 들면 다음과 같은 경우 입니다. -- INSERT INSERT OVERWRITE TABLE h1_passwords_target SELECT * FROM (SELECT * FROM h1_passwords UNION ALL SELECT * FROM h1_passwords) sub; -- FROM INSERT FROM ( SELECT * FROM (SELECT * FROM h1_passwords UNION ALL SELECT * FROM h1_passwords) sub ) R INSERT OVERWRITE TABLE h1_passwords_target ..
스칼라를 이용한 워드 카운트는 flatMap, map, groupBy, mapValues, reduce 함수를 이용해서 구할 수 있습니다. 입력으로 받는 문자열이 "Deer Bear River", "Car Car River", "Deer Car Bear" 일때 각 함수를 거치면서 어떻게 처리 되는지 확인해 보겠습니다. #1번의 프로세스는 다음과 같습니다. flatMap: split의 결과를 하나의 List로 합침 [ Deer, Bear, River, Car, Car, River, Deer, Car, Bear] map: (문자, 1)로 반환 [ (Deer, 1), (Bear, 1), (River, 1), (Car, 1), (Car, 1), (River, 1), (Deer, 1), (Car, 1), (Bea..

이번에 새로 제공되는 티스토리의 코드 블럭 기능은 에디터에서는 자동으로 하이라이팅이 지정되지만, 공개하면 하이라이팅이 되지 않습니다. 티스토리에서는 기존에 사용자들이 사용하던 하이라이팅 기능과 충돌을 방지하기 위해서 코드블럭을 HTML로 자동으로 만들어 주는 기능까지만 제공한다고 합니다. https://notice.tistory.com/2483 코드블럭으로 소스코드 작성하기 코드 블럭 삽입하기 개발자 블로거를 위하여 코드 삽입 기능을 제공합니다. 코드 블럭은 소스코드를 입력하고 보기 좋게 공유하는 것을 돕는 기능입니다. 툴바 메뉴에서 더보기 > 코드블럭을 선택하여 사용할 수.. notice.tistory.com 그래서 highlight.js를 이용해서 하이라이팅하는 방법을 알아보겠습니다. https://..
하이브는 쿼리 최적화를 위해서 CBO를 사용할 수 있습니다. CBO사용을 설정하고, explain 명령을 이용하여 실행계획을 확인할 때 CBO 적용 여부를 알 수 있는데 CBO를 적용하기 위해서는 ANALYZE 명령을 이용해서 테이블의 메타 데이터를 수집해야 합니다. 메타데이터 자동 수집 설정으로 통해 데이터를 입력할 때 자동으로 수집하게 할 수도 있습니다. # CBO 동작 설정 set hive.cbo.enable=true; # 메타데이터 자동 수집 설정 set hive.stats.autogather=true; 메타 데이터를 수집하는 명령은 ANALYZE를 이용합니다. ANALYZE TABLE sample_table PARTITION(yymmdd='20180201') COMPUTE STATISTICS f..
TEZ엔진으로 작업을 처리하는 중 다음의 오류가 발생하였습니다. 에러를 보면 셔플 단계에서 메모리 오류가 발생한 것을 확인 할 수 있습니다. 셔플 단계는 맵작업의 결과를 리듀서에 전달하는 작업으로 여러 매퍼에서 전달된 결과를 리듀서에 저장하여 정렬하는 과정에서 OOM 오류가 발생할 수 있습니다. 2019-04-05 00:11:34,008 ERROR [Thread-104] SessionState: Vertex failed, vertexName=Reducer 4, vertexId=vertex__1_05, diagnostics=[Task failed, taskId=task__1_05_000182, diagnostics=[TaskAttempt 0 failed, info=[Error: Error while run..
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...
하이브 처리 결과를 gzip으로 압축하여 출력할 때는 다음과 같이 사용합니다. hive.exec.compress.output: 출력결과의 압축 여부를 설정 mapred.output.compression.codec: 압축 코덱을 설정. core-site.xml의 io.compression.codecs에 설정된 값을 사용 set hive.exec.compress.output=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec; -- 조회결과를 gzip으로 압축하여 출력 INSERT OVERWRITE DIRECTORY 'hdfs:///user/tables/' SELECT * FROM table WHERE name =..
AWS EMR을 이용하여 S3에 데이터를 생성하다 보면 S3에 _$folder$ 라는 이름의 데이터가 생성되는 것을 볼 수 있습니다. 이는 S3가 키-밸류 형태로 데이터를 저장하기 때문에 EMR이 S3에 접근할 때 사용하는 NativeS3FileSystem.java에서 신규 폴더를 생성하면서 파일이 존재하지 않으면 디렉토리를 생성할 때 빈 파일과 함께 생성하도록 설정되어 있기 때문입니다. 데이터를 이용함에 있어서 문제가 없기 때문에 그냥 두시면 됩니다. 다음의 소스 코드를 보면 구현 상태를 확인할 수 있습니다. private static final String FOLDER_SUFFIX = "_$folder$"; ... private boolean mkdir(Path f) throws IOException..
- Total
- Today
- Yesterday
- S3
- SPARK
- emr
- airflow
- Hadoop
- HDFS
- AWS
- mysql
- hbase
- nodejs
- SQL
- 다이나믹
- 하둡
- 하이브
- error
- build
- Linux
- bash
- HIVE
- yarn
- 오류
- 정올
- 백준
- 파이썬
- 알고리즘
- ubuntu
- java
- Python
- oozie
- Tez
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |