앞선 1편에서 실버데이터와 골드데이터를 RDS에 적재하였다. 이 데이터를 가지고 분석하는 방법엔 여러가지가 있지만 분산 SQL엔진인 Presto와 Presto기반으로 돌아가는 Athena를 살짝 다루어 보겠다. 그리고 BI툴인 태블로로 시각화를 진행해보겠다.
먼저 Athena가 Presto기반 엔진이라고 했는데 왜 둘다 사용하는지에 대해 얘기해보자면 앞선 1편에서 Aurora mysql 에 데이터를 저장했는데 Presto에서는 이기종 DB와의 join이 가능하여 S3데이터와 aggregation해서 사용할 수 있다. 하지만 Athena는 이기종DB와의 join을 제공하지 않고있고 무엇보다 Athena는 serverless이기에 저녁에 batch processing을 예약하여 돌리기에 적합하고 단일 db를 다룰경우 비용 효율적임을 알고 진행하면 유리하다.
Spark과 Presto의 차이는 spark은 메모리기반 엔진이기에 데이터를 cashing해와서 데이터를 메모리에 올려서 처리를 진행한다면 Presto는 분산 sql엔진이기에 말그대로 distribute된 sql을 각 worker node들에게 일을 시켜서 aggregation하는 방식이다. 속도차이는 눈에 띄게 큰차이가 나지 않는다.
1) Presto
1-1) 먼저 emr환경에서 돌리기위해 다음과 같이 enable하여 emr클러스터를 생성한다. presto를 cli환경에서만 다루면 불편하기에 zepplin또한 이용한다.
1-2) cli 환경부터 다루어보기 위해 다음 마스터ec2에 접근한다. (+ 개발자는 Mac을 사용하도록 하자 ㅎㅎ 필자는 Mac의 소중함을 늦게 깨달았기에 Window를 사용하고있다. )
1-3) cli 환경에는 다음 루트에서 사용할 수 있다.
1-4) presto는 이기종 db와 join이 가능한데 mysql과 연동해 보겠다. 먼저 conf파일을 만들어야한다.
위 vi편집기에서 rds엔드포인트와 아이디 password를 입력한다.
1-5) 한 폴더 뒤로가서 config.properties의 두번째 line scheduler를 true로 바꿔준다. 그후
sudo systemctl restart presto-server명령어도 재시작 해준다.
1-6) 그후 다음과 같이 mysql에 접속이 가능하고 hive테이블과도 join이 가능하다.
근데 아무래도 분석가들이 이런 cli환경에서 분석하기엔 버거운 부분이 있으니 제플린에서 환경을 구성해보겠다.
1-7) 먼저 제플린은 다음 URL로 들어갈 수 있다.
1-8) 제플린에 들어가서 인터프린터를 create에서 보면 jdbc가 없는걸 볼수 있다. 제플린에서 presto나 mysql을 연결할때는 jdbc가 필요한데 cli 환경에서 설치후 돌아오겠다.
1-9) cli 환경에서
- sudo su -
- cd /usr/lib/zeppelin
- ./bin/install-interpreter.sh --name jdbc --artifact org.apache.zeppelin:zeppelin-jdbc:0.10.0
- 그다음 systemctl restart zepplin 해준다. (당연하지만 적용하기 위해)
위 세줄을 진행하면 jdbc가 설치된다.
1-10) 그다음 presto 접속 드라이버를 설치해준다.
1-11) 다음과 같이 돌아와 세팅하고 저장해준다.
1-12) 이렇게 제플린 노트북 환경에서 인터프리터를 적용완료하였다.
1-13) cli환경에서 했던 작업들이 편한 환경에서 분석가능하다. ^-^ 제플린 환경에서 분석을 진행하면 여러 시각화 차트들이 편하게 제공된다.
2) Tableau
2-1) 태블로 설치는 사이트에가서 진행하면 된다. 필자는 평가판 2주를 사용한다.. ㅎㅎ 평가판이아닌 유료로 사용하면 상관없지만 public 버전은 mysql, aws서비스와 연결안되니 사용하지 못한다. 기본csv파일만 연동가능하니 s3에 csv파일을 다운받아 사용해도 무방하다. 단, 연동에 초점이 맞추어져 있기에 평가판을 사용한다.
2-2) 연동 driver는 아래 사이트에서 다운가능하다.
https://www.tableau.com/support/drivers
2-3) 태블로를 키면 다음과 같이 서버에 연결 리스트를 볼 수 있다.
2-4) 그럼 다음과 같이 연결후 drag & drop으로 편하게 시각화 가능하고
연결을 추가하여 마찬가지인 drag & drop으로 join이 가능하다.
그리고 태블로에 가입하니 무료 교육영상도 제공하니 필요에따라 즉각 적용 가능해보인다.
리소스
.l-content > .page-title {display:none;} 리소스 이용 방법 동영상 다양한 자료를 통해 사용을 시작하거나 기술을 한 단계 높일 수 있습니다. [block:quicktabs=overview_resources] 추가적인 한국어 교육 동영상이
public.tableau.com
2-5) 연동후 테이블을 가져올때 연결 방식이 라이브 방식과 추출방식 두가지가 있는데 라이브 방식을 그때 그때마다 서버에 쿼리를 날려 가져오는 식이고 추출방식은 데이터를 다운로드 받아 내려서 사용하는 방식이다 그러므로 때에따라 Athena를 연동하여 사용해도 비용 효율적이다.
3) Athena
3-1) athena는 너무나 간단하다 presto엔진 기반 serverless이기에 다음과 같이 glue에 data catalog가 저장되어있으면 쿼리 던지기가 가능하다.
Redshift도 다룰 수 있지만 aws 테스트를하다보니 ㅎㅎ 요금이 야금야금 늘어나기 시작했기에 우선 다소 비싼 서비스는 pass하겠다 ㅎㅎ... 뭐든 필요에따라 사용 할 서비스를 잘 알아보고 신중하게 정하면 된다.
이제 다음엔 최종 TLC trips record 3편을 다음에 진행하겠다 ^_^