목록빅데이터 (12)
Monday
Apache Impala: 혁신적인 Hadoop SQL 쿼리 엔진의 탄생Impala의 역사적 배경Apache Impala는 2012년 10월에 처음 발표된 혁신적인 SQL 쿼리 엔진으로, 구글의 F1 쿼리 엔진에서 영감을 받아 개발되었습니다. 당시 Hadoop 생태계에서 대화형 SQL 쿼리의 성능과 속도에 대한 근본적인 한계를 극복하기 위해 탄생했습니다.Hadoop 에코시스템에서의 독특한 위치Impala는 Hadoop 에코시스템에서 매우 특별한 위치를 차지하고 있습니다. 기존의 MapReduce 기반 쿼리 처리 방식과는 근본적으로 다른 접근 방식을 채택했습니다:실시간 쿼리 처리: 기존 Hive와 달리 대화형 SQL 쿼리에 최적화분산 병렬 처리: 대규모 데이터셋을 빠르게 처리하는 MPP(Massively ..
빌드 환경 OS : M1 max monterey 12.2.1 JDK : AdoptOpenJDK-11.0.11+9 Maven : Apache Maven 3.8.4 빌드 과정 1) git clone https://github.com/trinodb/trino.git 2) git checkout tags/356 -b trino356 3) ./mvnw clean install -DskipTests -pl '!:trino-docs'
사전 준비사항 : wls2 설치, docker desktop 설치 1. Centos7 컨테이너 실행 및 초기 프로그램 설치 우선 Centos7 컨테이너를 실행하고, 컨테이너 간 ssh 접속 및 하둡 실행을 위해 Java 11 설치, vim 설치까지 초기 세팅을 진행합니다. # 도커 Centos7 기반 컨테이너 실행 및 접속 docker run -it --name hadoop-base centos:7 # wget, vim, SSH, Java11 설치 yum install wget vim openssh-server openssh-clients openssh-askpass -y yum install java-11-openjdk-devel.x86_64 -y 2. ssh 설정 모든 서버가 같은 이미지를 사용할 것..
1. Select 문 최적화 - 필요한 컬럼만 사용, 와일드 카드(*) 사용 금지 2. Group by 최적화 - 카디널리티(Cardinality)가 큰 컬럼 순서대로 선언 Group By를 한 컬럼을 기반으로, 행들을 워커 노드에 배포합니다. 이 때, 카디널리티가 높은(=컬럼에 중복되는 값이 적은) 순서대로 컬럼을 선언하면, 행들을 더 고르게 워커에 배포하게 되어 성능 향상을 기대할 수 있습니다. 또한, Group by 절에 문자열 대신 숫자를 사용하면 메모리를 적게 사용해서 성능 향상을 기대할 수 있습니다. 3. Order by 최적화 - LIMIT 절을 함께 사용 Order by를 사용하면 모든 행을 1개의 워커노드에 전송하여 정렬을 수행해야하므로 메모리 부담이 될 수 있습니다. 보통 Order b..
실습 전, Java 8 이상이 설치되어 있어야 합니다. [https://subfriday.tistory.com/32 - 설치글 참조] 1. 설치 www.apache.org/dyn/closer.cgi?path=/kafka/2.8.0/kafka_2.13-2.8.0.tgz - 설치 홈페이지 참조 wget https://mirror.navercorp.com/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz tar -xzf kafka_2.13-2.8.0.tgz cd kafka_2.13-2.8.0 2. Kafka 환경 실행 Zookeeper 서버 실행 bin/zookeeper-server-start.sh config/zookeeper.properties 새 터미널 오픈 & Kafka 서버 실행..

Java를 이용하여 MapReduce를 개발하다 보면 Reducer의 Iterable values를 재사용하고 싶은 경우가 생깁니다. 이 때, 하둡은 성능, 적은 메모리 사용을 위하여 메모리는 재활용하여 1곳의 메모리 영역만 사용하고 values의 값들만 차례차례 변경하여 사용합니다. public static class Reduce extends Reducer { public void reduce(Text key, Iterable values,Context context) throws IOException,InterruptedException { int sum=0; for(IntWritable x: values) { sum+=x.get(); } context.write(key, new IntWritabl..
1) Default UNION SELECT * FROM table1 UNION SELECT * FROM table2; = SELECT * FROM table1 UNION DISTINCT SELECT * FROM table2 Impala 에서 UNION = UNION DISTINCT 입니다. 2) Impala UNION 사용 조건 또한, Impala 에서 Union 사용 시 table1의 컬럼이름과, table2의 컬럼이름이 같아야 합니다. ex) SELECT zip_plus_4 AS zipcode FROM california_emp UNION DISTINCT SELECT CAST(zip AS STRING) AS zipcode FROM california_offices; 3) Union 사용 시 유의사항 ..
report.sql이란 파일이 다음과 같이 저장되어 있을 때 beeline을 통해서 사용하는 법을 보여드리겠습니다. # report.sql SELECT * FROM accounting.current WHERE month= '${hivevar:month}' or # report.sql (변수 선언 포함) SET hivevar:month = October; SELECT * FROM accounting.current WHERE month= '${hivevar:month}' 사용법 $ beeline -u jdbc:hive2://localhost:10000 --hivevar month="October" -f report.sql