BigData Engineering/Riot Data Pipeline

    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..

    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를 통해 쉽게 정보들을 확인할 수 있습니..

    Riot Data Pipeline 구축하기 #5 - Kafka Producer client 구현 및 데이터 전처리 과정

    이번 글에서는 Riot 데이터를 불러와 Kafka 클러스터에 Produce하는 과정 및 이슈 사항들을 정리하겠습니다. Producer Client 구현 특정 Summoner의 데이터를 불러와 Kafka에 produce 하는 과정을 "/produceSummonerMatchInfo" 주소의 API로 구현했습니다. 지난 글에서 언급했듯이, Summoner 이름을 input으로, Match 정보를 output으로 하는 Riot API는 존재하지 않습니다. 그래서 필요로 하는 API를 여러개 사용하여 최종적으로 Match 정보를 Produce하도록 해야했습니다. 세부 과정으로는 아래와 같습니다. 1. Summoner 이름으로 puuid 가져오기. 2. puuid로 match id list 가져오기. 3. Matc..

    Riot Data Pipeline 구축하기 #4 - API response 데이터 저장 타입 변경 및 Kafka 클러스터 생성

    이번 글에서는 이전 글에서 작성했던 필요한 API를 모두 구축하고 개발하면서 변경이 필요했었던 부분에 대해서 다루도록 하겠습니다. 그리고 docker compose를 이용한 Zookeeper를 포함한 Kafka 클러스터를 생성하도록 하겠습니다. Riot API 호출 구현과 문제 상황 분석하는데 필요하다고 생각한 Riot API에 대해서 모두 구현을 완료했습니다. Riot API 리스트는 아래와 같습니다. 소환사 이름으로 계정 조회 : /lol/summoner/v4/summoners/by-name/{summonerName}​ 소환사 puuid로 match id 조회 : /lol/match/v5/matches/by-puuid/{puuid}/ids match id로 해당 match 정보 조회 : /lol/ma..

    Riot Data Pipeline 구축하기 #3 - 필요한 Riot API 리스트 정리 & 플랫폼 아키텍처 설계

    이번 글부터는 분석을 위한 데이터의 API를 알아보고 대략적인 아키텍처 설계를 해보겠습니다. 처음 진행하는 프로젝트이고 아직 제가 안써본 것들이 많기 때문에 진행하면서 지속적으로 바뀔 수 있습니다. 하지만 가장 먼저 설계를 하고 틀을 잡아야 목표를 잡을 수 있을 것 같아서 대략적으로 진행했습니다. 필요한 Riot API 리스트 지난 글에서는 닉네임을 통한 계정 조회 API를 구현해봤습니다. 이어서 필요한 API를 더 조사해봤습니다. 다양한 API들이 존재했지만, 계정 정보와 해당 계정이 플레이한 match, match의 디테일한 내용을 얻을 수 있는 API를 추렸을 때 아래와 같이 4개의 API가 필요로 하는 서비스였습니다. 소환사 이름으로 계정 조회 : /lol/summoner/v4/summoners/..

    Riot Data Pipeline 구축하기 #2 - Spring boot 프로젝트 생성 및 Riot API 사용해보기

    지난번 글에서 Riot API를 위한 Product 등록까지 마쳤고 며칠 내로 승인되어 Approved 상태가 되었습니다. 그래서 Java Spring을 이용해서 간단한 API 사용을 해봤습니다. Spring boot 시작하기 Spring 프로젝트를 만들기 위해서 start.spring.io 사이트에 접속해 아래와 같이 여러가지 설정을 해줬습니다. 이렇게 설정을 해주고 아래에 "Generate" 버튼을 눌러주면 zip 파일 하나가 다운로드되는데, 해당 파일을 압축 해제하면 프로젝트 관련 파일들을 확인할 수 있습니다. 프로젝트 파일을 확인 후 저는 IntelliJ를 사용하여 코딩을 진행했습니다. Riot API 확인하기 Riot Developer 페이지에서 내 Product 페이지에 들어가면 사용할 수 있..

    Riot Data Pipeline 구축하기 #1 - Riot API 사용을 위한 Product 등록하기

    이번 글부터는 Riot API를 사용하여 LOL(League of Legend) 게임의 데이터를 가져와 빅데이터 플랫폼에 저장하고 사용까지 할 것입니다. 그 중에서 가장 첫번째 해야할 것은 바로 Riot API를 사용하기 위해 Riot Developer 사이트에 Product 등록하기입니다. Riot Developer 사이트 접속 및 로그인 Riot API는 Riot Developer 사이트에서 따로 관리가 되고 관련 공식 문서들을 볼 수 있습니다. 아래 링크를 통해 Riot Developer 사이트에 접속하고 우측 상단에서 자신의 ID(LOL ID)로 로그인합니다. - https://developer.riotgames.com/ Riot Developer Portal About the Riot Games..