띵유로그

[데이터파이프라인] Presto - Mysql 연동 본문

DataEngineering

[데이터파이프라인] Presto - Mysql 연동

띵유 2022. 3. 1. 19:30
반응형

지난 포스팅에서는 프레스토를 알아봤는데요, 이번 포스팅에서는 Mysql 과 연동해보겠습니다.
Presto에 대한 기본적인 내용부터 각종 DBMS와의 연결방법은
https://prestodb.io/docs/current/overview.html에도 자세히 나와있으니 참고하면 좋을 것같습니다.

 

 

먼저, Emr 생성시 Presto를 선택해주고 띄운후 접속해줍니다.
운영중인 mysql 은 이미 있고, 인바운드, 아웃바운드 규칙은 이미 설정되어있다고 가정합니다!

 

/etc/presto/conf/catalog 폴더에 가면 기본적으로 hive.properties 파일만 존재하는것을 볼 수 있습니다. (awsdatacatalog.properties는 hive.properties 파일로의 링크임)

 

1. 카탈로그 추가 (mysql.properties 파일 추가)

우리는 mysql 카탈로그를 추가해야하니, 이 경로에 mysql.propererties를 만들어줍니다.

2. config.properties 수정

상위 경로로 이동해서(/etc/presto/conf)  config.properties를 다음과 같이 수정합니다.
1) node-scheduler.include-coordinator를 false -> true


2) datasources 에 카탈로그 명을 추가합니다. 우리는 mysql.properties 를 추가했기때문에 mysql을 추가해줍니다.


참고로 config.properties 의 속성에 대해서 설명도 아래에 적어둡니다.
https://teradata.github.io/presto/docs/141t/configuration/configuration.html 에서 참고하여 번역했습니다. 잘못된 내용이 있다면 댓글 부탁드립니다...!

  • coordinator
     : Presto 인스턴스가 코디네이터로써 기능하게 합니다. (기본값 = true)

      즉, 클라이언트로부터 쿼리를 받아들이고 쿼리 실행을 관리합니다.
  • node-scheduler.include-coordinator
    : 코디네이터에서도 work 스케쥴링 가능하도록합니다.

     다만, 코디네이터에서 스케쥴링하도록 하면, 클러스터가 많은 경우에 쿼리 성능에 영향을 줄 수도 있습니다.(모니터링, 스케쥴을 위한 자원이 할당이 되지 않을 수도 있기때문입니다.)
  • http-server.http.port
    : Http 서버 포트입니다. 프레스토는 외부, 내부 communication 에 http를 사용합니다.
  • query.max-memory=50GB
    : 한 쿼리가 분산환경에서 사용가능한 최대 용량
  • query.max-memory-per-node=1GB
    : 한 쿼리가 단일 머신에서 사용가능한  메모리 용량
  • discovery-server.enabled : 프레스토는 클러스터노드를 찾을 떄 Discovery 서비스를 사용합니다. 모든 Presto 인스턴스는 시작할때 Discovery 서비스에 등록됩니다. 간단하게 배포하고 추가 서비스가 실행되는것을 막으려면, Preso 코디네이터를 Discovery 서비스에 포함시킬 수 있습니다. Http 서버와 Presto를 공유하기 때문에 동일포트입니다.

4. 종료후 Presto 재시작


5.확인

1) SHOW SCHEMAS FROM MYSQL;
만들어진 데이터베이스들을 확인합니다.

2) SHOW tables from mysql.dm

mysql 카탈로그의 dm 데이터베이스에 있는 테이블들을 조회합니다.

3) 레코드 조회

다른 DB도 presto에 연동하면 함께 join 하여 분석할 수 있습니다.

반응형
Comments