전체 글
Riot Data Pipeline 구축하기 #7 - HDFS에 저장된 JSON 데이터로 Hive 테이블 생성하기
Riot 데이터를 수집해서 최종적으로 HDFS에 저장하는 과정까지 성공했습니다( 비록 미흡한 점이 상당히 많지만.... ). 이제는 저장된 데이터를 기반으로 Hive 테이블을 생성하는 과정을 진행하겠습니다. Docker Compose에 Hive 서비스 추가 Kafka에 있는 데이터를 HDFS에 저장하기 위해 Docker Compose에 Spark와 HDFS 서비스들을 추가했었습니다. 이번에는 동일한 Docker Compose에 Hive 서비스를 추가하겠습니다. docker-compose.yml version: '2' services: spark-master: image: bde2020/spark-master:2.4.0-hadoop2.8 ports: - "8080:8080" - "7077:7077" env..
[HDFS] JMX Metrics 값 불러오기
Hadoop의 HDFS를 사용하다보면 현재 HDFS의 사용량을 여러가지 방법들로 확인합니다. 예를 들어 NameNode의 Web UI를 접속해 확인하거나 Ambari와 같은 배포판 관리 시스템에서도 쉽게 확인할 수 있습니다. 그런데 만약 모니터링 시스템을 직접 개발해서 사용한다면 코드 상에서 어떻게 HDFS의 정보를 가져올 수 있을까요? 이 방법에 대해 소개해드리겠습니다. NameNode Web UI 우리가 흔히 원하는 HDFS 정보들은 NameNode Web UI에서 모두 제공을 하고있습니다. 보통 NameNode의 50070 포트로 쉽게 접속할 수 있습니다. ( http://{NameNode}:50070 ) NameNode JMX 위의 NameNode Web UI는 HDFS 정보들을 어디서 가져오는 ..
Riot Data Pipeline 구축하기 #6 - Spark Streaming으로 Kafka Consumer 구현 및 HDFS에 데이터 저장하기
지난 글에서 Spring을 통해 Match 정보를 Kafka에 전송하는 과정까지 진행했습니다. 이번 글에서는 Kafka에 쌓인 데이터 확인과 Spark Streaming으로 Kafka Consumer를 구현하는 과정을 진행하겠습니다. Kafka Topic 확인하기 Kafka Manager를 이용하면 Kafka 클러스터와 Topic 모니터링을 효율적으로 할 수 있습니다. Kafka 서비스를 위한 docker compose의 Kafka Manager 웹 GUI를 보면 아래와 같습니다. ( Kafka Cluster 등록 과정 필요 ) Topic 정보 또한 확인이 가능합니다. GUI가 없다면 직접 터미널에서 명령어를 통해 확인해야만 합니다. 하지만 Kafka Manager를 통해 쉽게 정보들을 확인할 수 있습니..
[Hive] Compile 상세 과정 #2 - Optimization 종류와 소스 코드 분석
이전 글에 이어서 Hive의 Compile 상세 과정 중 Optimization의 여러 종류와 Compile 과정의 소스 코드를 분석하도록 하겠습니다. Hive Optimization 종류 Hive는 쿼리를 최종적인 Task Tree로 만들기까지의 Compile 과정에서 여러 종류의 Optimization을 수행합니다. 3가지 종류의 Optimization에 대해서 소개하도록 하겠습니다. CBO (Cost-Based Optimization) Semantic Analyzer가 AST를 OP Tree로 만드는 과정에서의 Optimization. - 참고 링크 : https://cwiki.apache.org/confluence/display/Hive/Cost-based+optimization+in+Hive C..
[Hive] Compile 상세 과정 #1 - 쿼리 변화 과정과 형태
Hive를 이용하면서 Client로부터 제출된 쿼리가 어떻게 MR Job으로까지 변환이 될까라는 궁금증이 항상 있었습니다. 그래서 내부적인 Compile 과정에 대해서 공부를 하게 되었고, 소스 코드를 직접 분석해 봤습니다. 이전에 작성한 [Hive] Hive 아키텍처와 HiveServer2 & Hive Metastore 글을 먼저 읽으면 본 게시글을 이해하는데 도움이 될 겁니다. Hive Architecture Review - 주요 프로세스로 HiveServer2, Metastore 존재 - Driver가 중심에서 컴파일 과정, Task 전달 등 수행. - Hive 쿼리의 변화 과정을 알기 위해선 위 그림의 Compiler 과정을 알아야함. Hive 쿼리 처리 과정 - Hive 쿼리가 최종적으로 Map..
[Hive] Complex Json 데이터 테이블 생성하기 (Json SerDe)
Json 데이터를 사용하다보면 Json의 스키마 자체가 상당히 복잡하고 거대한 경우가 있습니다. 이번 글에서는 complex Json 데이터를 이용해 Hive 테이블을 생성하는 방법에 대해 소개하겠습니다. Json 데이터로 Hive 테이블 만들기 Json 데이터로 Hive 테이블을 만드는 방법은 여러가지가 있겠지만 이번 글에서는 Json SerDe를 이용한 방법을 소개할 예정입니다. 우선 Json SerDe를 위한 jar 파일부터 아래 링크에서 다운받도록 하겠습니다. https://jar-download.com/maven-repository-class-search.php?search_box=org.openx.data.jsonserde.JsonSerDe Download dependencies for jav..
[Hive] IntelliJ로 Runtime Debugging하기
이번 글에서는 Hive를 Runtime 중에 소스 코드 레벨에서 Debugging하는 방법에 대해 소개하겠습니다. Hive를 사용할 때 발생하는 에러는 보통 구글링을 해서 해결하곤 합니다. 하지만 구글링으로도 방법을 찾을 수 없을 때 근본적인 원인 파악을 위해 소스 코드 레벨에서 분석해야만 할 때가 있습니다. 아래의 방법으로 IntelliJ로 소스 코드 레벨에서 Debugging을 한다면 좀 더 쉽고 정확한 문제 해결을 할 수 있습니다. 사전 준비 Hive Debugging을 위해서 아래의 두가지를 준비합니다. IntelliJ 설치 https://www.jetbrains.com/ko-kr/idea/download/#section=mac Hive 소스 코드 다운로드 ( 사용하는 버전에 맞게 ) https:..
[Hive] limit 사용 시 leastNumRows 에러 발생 이슈
이번 글에서는 Hive 쿼리를 limit 절과 함께 사용할 때 발생하는 leastNumRows 에러 발생 이슈와 해결 과정에 대해 공유하겠습니다. 문제 발견 Hive 테이블을 select 할 때 limit 절을 사용하면 에러가 발생하는 문제를 발견하게 되었습니다. Hive CLI에서 실행시킨 쿼리 예제와 발생하는 에러는 아래와 같았습니다. select AA_COL from AA_TABLE where partition_p=p1 limit 35; java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: leastNumRows check failed 문제 상황 다양한 케이스들에 따라 위의 에러 발생 여부가 달랐습니다. 일단 사전에 설정되었던..