-
AWS EMR Prestosql(Trino) + Redash 업그레이드etc. 2021. 10. 9. 19:22
기존 환경
- EMR 6.2.0 + PrestoSql 343
- Re:dash 8.0.0
1. Terraform을 통한 EMR Trino 업그레이드 + File Access Control 설정
- EMR 6.4.0 + Trino 359 업그레이드를 위한 Terraform Configuration 파일 수정사항
- Classification의 'prestosql'을 'trino'로 변경
- 일부 설정값 호환 여부 확인
---- 변경 전 { "Classification": "prestosql-connector-hive", "Properties": { "hive.metastore": "glue", "hive.metastore.glue.datacatalog.enabled": "true", "hive.s3-file-system-type": "PRESTO" } } ----변경 후 { "Classification": "trino-connector-hive", "Properties": { "hive.metastore": "glue", "hive.s3-file-system-type": "TRINO" } }
- File Access Control 설정
# Ubuntu -> /usr/lib/trino/etc 경로에 access-control.properties 생성 access-control.name=file security.config-file=etc/rules.json security.refresh-period=1s
- rules.json 파일 예시# 실제 json 파일 작성 시 주석 모두 제거 { "catalogs": [ { # guest 유저의 system 카탈로그 접근을 거부한다 "user": "guest", "catalog": "(system)", "allow": "none" }, { # guest, general_user 유저에게 읽기 전용으로 모든 카탈로그 접근을 허용한다. "user": "guest|general_users", "catalog": ".*", "allow": "read-only" }, { # admin 유저에게 모든 카탈로그의 전체 권한을 허용한다. "user": "admin", "catalog": ".*", "allow": "all" } ], "tables": [ # 테이블 단위 권한 관리 { # admin 유저에게 모든 테이블의 전체 권한을 부여한다. "user": "admin", "privileges": ["SELECT", "DELETE", "INSERT", "OWNERSHIP"] }, { # 전체 유저에게 customers가 포함된 테이블, users 테이블, shipping으로 시작하는 테이블의 select 권한만 부여하고, # 지정된 컬럼을 block 처리한다. "table": ".*customers.*|users|shipping.*", "privileges": ["SELECT"], "columns": [ { "name": "name", "mask": "'blocked'" }, { "name": "email", "mask": "'blocked'" }, { "name": "phone", "mask": "'blocked'" }, { "name": "address", "mask": "'blocked'" } ] } ] }
2. Redash V8 -> V10 Upgrade
- Re:dash V10 업그레이드 이유
- UX 개선
- Trino Data Connector 추가
<https://redash.io/help/open-source/setup Redash V8 AWS instance AMI 기준>
# Redash V8 인스턴스 접속 후 아래 경로에서 도커 컴포즈 파일 편집 /opt/redash/docker-compose.yaml
1. service / scheduler / environment의 QUEUES와 WORKERS_COUNT 항목 삭제 (environment 항목이 비어있으면 함께 삭제)
2. service 항목에 아래 RQ job 추가
worker: <<: *redash-service command: worker environment: QUEUES: "periodic emails default" WORKERS_COUNT: 1
3. docker-compose run --rm server manage db upgrade 명령어로 DB 업그레이드
4. docker-compose up --force-recreate --build 명령어로 전체 업그레이드
* References
- https://github.com/getredash/redash/blob/release/10.0.x/CHANGELOG.md
- https://github.com/getredash/redash/issues/5531
'etc.' 카테고리의 다른 글
웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 1. 환경 구축 (0) 2022.09.10 웹알못의 데이터 어드민 사이트 만들기(feat. Streamlit) 0.Prologue (0) 2022.09.10 Git 작업을 위한 airflow Dag 관리 (0) 2021.10.09 Github Auth 정책 업데이트 : Personal Access Token 사용하기 (1) 2021.08.16 Airflow, Jupyterhub에 Google OAuth 적용하기 (0) 2021.06.09