5. 이런게 좋아요!
데이터를 필요로 하는 사람이 직접 데이터를 볼 수
있으면 좋겠어요.
개발자들 너무 바빠서 부탁하기에 눈치 보여요.
여러 데이터를 조합해서 볼 수 있으면 좋겠어요.
전체 데이터를 볼 수 있으면 좋겠어요.
쉽고 빨랐으면 좋겠어요.
무엇보다도 Data 보안이 가장 중요해요.
6. 이런거는 필요 없어요!
멋진 챠트나 그래프는 있으면 좋지만 아직 필요
없어요.
엑셀이면 충분해요.
실시간으로 분석할 필요는 없지만 점차 필요하겠죠.
13. 기능이외 검토 항목
최근 기술인가?
오픈된 커뮤니티를
운영하고 있는가?
내부 구조까지 잘 아는
지인이 있는가?
14. - JSON 포맷을 지원해야 함
- S3, HDFS, MySQL 등에 저장된 데이터로
Join이 되어야 함
- 여러 사용자가 동시에 질의를 실행할 수 있어야 함
- Ruby에서 SQL을 실행할 수 있어야 함
- 가능하면 표준 SQL을 지원해야 함
- 기존 Hive 보다는 빨라야 함
- 하지만, Large Scale Data 처리는 필요 없음
(적당한 Scale 이면 충분)
기능 검토 항목
17. 가장 큰 고민은?
실무자가 SQL을 사용할 수 있을까?
(대부분의 질의는 Join, Filter, Group by, Order by)
단순히 학습만 하는 것으로는 한계가 있음
개발자와 실무자의 협업을 통해
SQL 사용 능력 향상
Spark 연동이 아닌 협업 도구로 Zeppelin 활용
18. 실무자의 SQL 학습 과정
사용자는 KPI 등 데이터 요청
개발자가 Notebook에 SQL 작성
(상단 Paragraph에 Query에 대한 설명)
유사한 패턴은 실무자가
Paragraph의 SQL 복사 후
일부 수정하여 직접 데이터 처리
(6개월 정도하면...)
19. Zeppelin에 추가 기능 필요
Presto Interpreter
질의 Progress, Kill 기능
리소스를 많이 사용하는 질의 실행 제한
Notebook에 대한 생성, 수정, 실행 권한
특정 기능에 대한 접근 제한
데이터의 접근 제한
21. Presto Interpreter: Data ACL
Presto 권한 관리는 각 Connector의 ACL 기능 이용
But, Kafka 등은 지원하지 않음
각 스토리지에 권한관리 별도 설정 해야 함
Presto Zeppelin Interpreter의 권한관리
. Catalog, Schema, Table, Column 단위로 권한 관리
. Read/Write는 schema 레벨로 관리
. Operation(INSERT, SELECT 등)별로 권한 관리는
지원하지 않음
22. Presto Interpreter: Data ACL
접근 제안 관리 설정
. {ZEPPELIN_HOME}/conf/presto-acl.properties
. {group}.{catalog}.{schema}.{table}.{columns}=allow|deny
국가별 사용자 Schema 접근 제한 예
. ko_emp.hive.korea.*=allow (한국 사용자만 접근)
컬럼 접근 제한
. ko_dev.hive.korea.logs.*=allow
(한국 개발자 logs 테이블 모든 컬럼 접근 권한 허용)
. ko_emp.mysql.korea.users.id,created_at=allow
(한국 일반 사용자에게 users 테이블의 id, created_at 컬럼만 허용)
23. Presto Interpreter: Query 검증
다음과 같은 잘못된 질의 실행 요청에 대한 검증
Partition column 반드시 사용
. Fact 테이블(logs) 질의 시 Where 절에 반드시
Partition column 존재 해야 함
. Join, Sub query 등 복잡한 질의도 검증 가능
Limit 절이 없는 경우 불필요한 데이터가 조회
. Plugin 설정에서 max limit 수 설정 가능
. 해당 설정 초과되는 데이터는 개발팀으로 요청
24. Zeppelin Improvement
Paragraph 결과 데이터 다운로드 기능이 없어서
. Paragraph 결과 데이터가 많은 경우 사용자 브라우저 속도 저하
. Copy & Paste 시 번거롭고, Excel Cell이 잘 깨짐
개선 사항
. 최대 1000개 레코드만 브라우저에 표시
. 1000개 이상의 데이터는 서버에 파일로 저장(retention 설정)
. Paragraph Download 버튼 추가
25. Zeppelin Improvement
Authentication
. Zeppelin 기본 기능 이용(Apache Shiro 기반)
. Presto Interpreter의권한관리에서 user, group 으로 사용
Authorization
. Zeppelin 커뮤니티 내에서도 꾸준히 개선 작업하고 있지만
바로 사용하기 위해 소스 코드내 권한 제어 코드 임의 추가
. Group 명 수정: User1, User2, User3 -> dev, emp, emp_writer
. 화면 특정 기능에 대한 접근 제한 기능
. Admin, Dev 계정만 Notebook 생성 가능
. Admin 계정만 Interpreter, Configuration 메뉴 사용 가능 등