이전 포스팅에서는 lichess에서 제공한 체스 오프닝 데이터를 간단하게 전처리 했다. 이번엔 본격적으로 우리가 데이터베이스에 저장할 포맷으로 전처리를 진행한다. 데이터 구조 데이터를 전처리하기전에 어떤식으로 구조를 짜야 쿼리를 쉽고 빠르게 할 수 있을지에 대해서 고민을 해보다 2가지 선택지를 생각했다. double linked list hash table 결론부터 말하자면 hash table (dict)의 구조를 채용하여 전처리 하기로 하였다. double linked list의 구조도 역시 활용할만 하였으나 여러 예외처리들과 오프닝 데이터를 쿼리를 할 때 특정 오프닝의 이름을 알기 위해서 끝까지 탐색해야 한다는 점이 비효율적이라고 생각했다. 체스 기보를 나타내는 방식엔 pgn방식과 uci방식이 있는데 후에 stockfish를 활용하기 위하여 stockfish와 호환이 잘되는 uci방식으로 데이터를 저장한다. > 스톡피시는 꽤 오랜 기간동안 사용된 대중
이번 프로젝트의 구성은 Stockfish를 활용하여 Chess engine과의 대결을 할 수 있는 사이트와, chess 기보를 읽어들이는 data pipeline, 그 데이터를 저장하는 data warehouse를 구성하는 것이 목표. Why Chess? 평소 체스와 바둑 장기 등 여러 보드게임을 즐겨하는 중에 체스에 대한 매력을 느껴 여러 사이트를 전전하던 중 사람들과 대결한 기보를 체스 엔진에다가 분석을 맡기는 기능을 유료로 서비스하는 사이트들이 많았다. 물론 lichess같이 무료로 모든 것을 제공하는 사이트도 있지만, datapipeline을 구축해보고 엄청난 data(약 1.2TB)를 다뤄볼 수 있다는게 엄청난 매력 아닌가. 이번 프로젝트를 통해 대용량 데이터를 관계형 데이터베이스(MYSQL, POSTGRESSQL)과 NoSQL(MongoDB, HBASE)를 활용해서 대용량 데이터베이스에서 빠른 쿼리 응답을 수행할 수 있도록 하는 것으로 목표를 잡았다. (이
Hive > Hive 기술을 통해 hadoop 클러스터를 관계형 데이터베이스처럼 사용할 수 있다. SQL을 사용해 Hadoop 클러스터에 걸쳐있는 데이터를 쿼리하는 간단하고 강력한 도구.(구조화된 쿼리 언어) HDFS 클러스터 전체에 걸쳐 저장된 데이터에 표준 SQL 쿼리를 실행. SQL을 MapReduce나 TEZ 명령어로 번역해서 작동. YARN 클러스터 관리자 위에서 실행. Hive는 SQL 쿼리를 매퍼와 리듀서로 분해하고 클러스터 전체에 걸쳐 어떻게 실행할지를 알아낸다. > 사용자의 관점에서는 데이터 웨어하우스를 사용하는 것처럼 SQL 데이터베이스에 쿼리하는 것과 같다. HiveQL MySQL 구문과 굉장히 비슷. SQL에서 할 수 있
What is Hadoop Hadoop 플랫폼의 주요 벤더인 Hortonworks는 하둡을 이렇게 정의. > 범용 하드웨어로 구축된 컴퓨터 클러스터의 아주 방대한 데이터 세트틀 분산해 저장하고 처리하는 오픈 소스 소프트웨어 플랫폼 Hadoop 오픈 소스 한대의 PC가 아닌 컴퓨터 클러스터에서 작동하는 소프트웨어 묶음 Hadoop은 어느 데이터 센터에서 작동중인 컴퓨터 클러스터 전체에서 실행되도록 설계됨. 즉 Hadoop은 다수의 PC를 활용해 빅데이터를 다룬다. 분산저장 분산 저장은 Hadoop이 제공하는 주 기능. 한 개의 하드 드라이브에 국한되지 않는다. 빅데이터(1TB)를 처리할 때 클러스터에 컴퓨터를 더하기만 하면 그 컴퓨터는 하드 드라이브가 데이터 저장소의 일부가 됨. Hadoop은 클러스터의 모든 하드 드라이브에 걸쳐 분산돼 있는 모든 데이터를 단일 파일 시스템으로 보여줌.