Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Data engineering
- apache spark
- 블로그
- 빅데이터플랫폼
- cloudera
- 하둡
- eks
- 빅데이터
- redis bloom filter
- mlops
- 데이터엔지니어링
- kafka
- 개발자
- 클라우데라
- Terraform
- 개발자혜성
- 추천시스템
- hadoop
- BigData
- kubernetes
- pyspark
- DataEngineering
- Python
- spark
- 하둡에코시스템
- AWS SageMaker
- 데이터엔지니어
- recommendation system
- dataengineer
- Spark structured streaming
Archives
- Today
- Total
Hyesung Oh
Kubernetes에서 Open Source Redash Helm Chart로 운영하기 본문
Data Engineering/DevOps
Kubernetes에서 Open Source Redash Helm Chart로 운영하기
혜성 Hyesung 2022. 5. 12. 23:07반응형
TroubleShooting
worker failed
# redash.prod.values.yaml
# 워커 수 상향 조정
adhocWorker:
env:
QUEUES: "queries,celery,schemas,default,periodic,scheduled_queries"
WORKERS_COUNT: 6
scheduledWorker:
env:
QUEUES: "scheduled_queries,schemas"
WORKERS_COUNT: 1
browser timeout
# redash.prod.values.yaml
# falsk webserver(gunicorn)의 timeout 값 상향 조정
server:
env:
GUNICORN_CMD_ARGS: "--timeout 600"
scheduling failed
# QUEUES에 schemas 추가
scheduledWorker:
env:
QUEUES: "scheduled_queries,schemas"
WORKERS_COUNT: 1
Architecture
Webserver (UI)
- React Native
- axios로 flask에 요청
- 반환된 결과를 UI에 그려줌
Backend Sever(Flask)
- queue에 job을 push
- 완료된 job에 대한 query_result를 반환 postgres에서 조회하여 client에 반환
Worker
- what is worker? blog
- queue(redis)에서 요청들을 꺼내서 process로 실행시켜주는 application이라고 이해하면 충분
- adhocWorker
- scheduledWorker
- By default every adhoc query (invoked by a user) is using the queries Celery queue while every scheduled queue (invoked by the scheduler) is using the scheduled_queries queue. Celery allows for setting which queue(s) each worker is servicing. Our default production setup is already using a separate…
Redis
- It is used as queue for worker to pulling tasks from. 정확히는 Celery, RQ의 broker.
PostgreSQL
Mechanism
Summary
- client(RN) axios request
- backend(Flask)
- model(PostgreSQL)에서 datasource id에 해당하는 정보 불러옴
- get_query_runner에서 datasource type별 query_runner class를 동적으로 import
- run_query 호출 -> enqueue_query 호출 -> RQ queue(Redis)에 job push
- RQ Worker
- query를 athena에 요청하는 프로세스 실행
- 반환된 결과를 PostgreSQL DB의 QueryResults라는 테이블에 write
- client에 job id 반환
- client는 job id에 대한 query_result를 다시 flask backend에 요청
- backend(Flask)
- model에서 해당 쿼리 결과를 load
- serialize 후 client에 반환.
- client는 UI에 데이터를 그려줌
endpoint 호출 순서
- https://redash.ridi.io/api/query_results POST → 데이터소스, 쿼리 해쉬값을 이용해 해당 쿼리 결과물이 있는지 확인하고 있으면 반환, 없으면 queue에 job push 후 job id 반환
- https://redash.ridi.io/api/jobs/<job_id> GET → jobs 스케줄링 (reds query에 jobs push) redis 큐를 찔러서 해당 job의 상태를 트래킹. query_result_id가 있을 때 까지 일정 간격을 두고 반복적으로 여러 번 호출
- https://redash.ridi.io/api/event POST → 이벤트가 발생한 이력일 DB에 남기는 것 정도. (건너뛰어도 되는 내용)
- https://redash.ridi.io/api/query_results/<query_result_id> GET → query_result_id가 반환이 되면 해당 id로 DB를 조회하여 query_result 받아옴
redash/redash/handlers/api.py 참고
Quick Start with Helm chart
redash helm chart
redash.yaml
https://artifacthub.io/packages/helm/redash/redash
Deployment
cluster에 대한 인증을 제 로컬 피씨에 설정 후 진행 (aws access key처럼)
# helm repo 추가
helm repo add redash <https://getredash.github.io/contrib-helm-chart/>
helm update repo
# install helm chart
helm upgrade --install -f ./redash.dev.values.yaml redash-10-0-0 redash/redash -n redash --create-namespace
Note
DataSources
Cassandra 연동
- EC2에 docker run시 9042포트 포워딩
- EC2 SG에 9042 port 열기
- EC2 public ip에 회사 ip 열어주기
- EC2 public ip에 Redash ip 열어주기
- (옵션) username: cassandra, password: cassandra
Cross data sources Query
Query Results Data Source (QRDS) (Postgresql 테이블 중 하나임 참고)
- Your other queries are like “tables” to the QRDS. Each one is aliased as query_ followed by its query_idwhich you can see in the URL bar of your browser from the query editor. For example, a query at /queries/49588 has the alias query_49588.
- SELECTb.countJOIN query_456 AS b
- ON a.id = b.id
- FROM query_123 AS a
- a.name,
반응형
'Data Engineering > DevOps' 카테고리의 다른 글
Dockerfile Reference 문서를 읽고 나름대로 정리한 중요한 포인트들 (0) | 2022.09.28 |
---|---|
AWS EKS의 RBAC, IRSA 딥다이브 (0) | 2022.05.31 |
Terraform으로 AWS EKS의 aws-auth configmap 관리하기 (0) | 2022.04.28 |
Terraform 입문하기 (0) | 2021.01.28 |
Comments