Apache Pinot 및 Presto 빌드
Apache Pinot, a real-time distributed OLAP datastore, purpose-built for low-latency high throughput analytics, perfect for user-facing analytical workloads.
그러나 official documents 중 일부는 실제로 누락되어 인터넷에서 정보를 찾고 마침내 몇 가지 실험을 할 수 있었습니다. 당시에는 이러한 프로세스가 문서화되지 않았기 때문에 실제로 어떤 참조 자료가 사용되었는지 잘 모르겠습니다.
현재 전체 실험 인프라는
docker-compose
로 구축되어 있으며 Github 저장소의 전체 코드는 다음과 같습니다.https://github.com/wirelessr/pinot-plus-presto
아파치 피노
먼저 핵심 구성 요소를 설명하기 위해
docker-compose.yml
를 살펴보겠습니다.services:
zookeeper:
image: zookeeper:3.5.6
pinot-controller:
image: apachepinot/pinot:0.9.3
ports:
- "9000:9000"
- "8888"
environment:
JAVA_OPTS: "-javaagent:/opt/pinot/etc/jmx_prometheus_javaagent/jmx_prometheus_javaagent-0.12.0.jar=8888:/opt/pinot/etc/jmx_prometheus_javaagent/configs/pinot.yml -Dplugins.dir=/opt/pinot/plugins -Xms1G -Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xloggc:gc-pinot-controller.log"
pinot-broker:
image: apachepinot/pinot:0.9.3
ports:
- "8099:8099"
- "8888"
environment:
JAVA_OPTS: "-javaagent:/opt/pinot/etc/jmx_prometheus_javaagent/jmx_prometheus_javaagent-0.12.0.jar=8888:/opt/pinot/etc/jmx_prometheus_javaagent/configs/pinot.yml -Dplugins.dir=/opt/pinot/plugins -Xms4G -Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xloggc:gc-pinot-broker.log"
pinot-server:
image: apachepinot/pinot:0.9.3
ports:
- "8098:8098"
- "8888"
environment:
JAVA_OPTS: "-javaagent:/opt/pinot/etc/jmx_prometheus_javaagent/jmx_prometheus_javaagent-0.12.0.jar=8888:/opt/pinot/etc/jmx_prometheus_javaagent/configs/pinot.yml -Dplugins.dir=/opt/pinot/plugins -Xms4G -Xmx16G -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xloggc:gc-pinot-server.log"
위의 내용은 피노를 구성하기 위해 필요한 4가지 기본 서비스이며, 공식 문서와 동일한 부분은 대부분 생략하고 제가 수정한 부분만 나열하였습니다. 그런데 이미지 버전을 새 버전으로 변경했지만 예제에서는 공식 버전을 유지하겠습니다.
주요 변경 사항은 세 가지 Pinot 서비스의
ports
및 environment
로, Prometheus에서 Pinot의 메트릭을 사용할 수 있도록 합니다.따라서
ports
는 추가 8888
를 열고 추가 javaagent
매개변수를 JAVA_OPTS
에 추가합니다. javaagent
의 목적은 원래 Pinot JMX 메트릭이 웹 기반이 되고 Prometheus에 노출되도록 하는 것입니다.지금까지 공식 문서의
jmx_prometheus_javaagent.jar
에는 버전 번호가 포함되어 있지 않지만 공식 컨테이너에서 해당 파일을 찾을 수 없으므로 대신 jmx_prometheus_javaagent-0.12.0.jar
를 사용해야 합니다.모니터링
서비스 상태를 관찰하기 위해
Prometheus
및 Grafana
도 빌드해야 합니다. prometheus:
image: prom/prometheus
container_name: monitoring-prometheus
restart: unless-stopped
volumes:
- monitoring-prometheus-data-1:/prometheus
- ./volumes/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana
volumes:
- ./volumes/grafana/provisioning:/etc/grafana/provisioning
- ./volumes/grafana/dashboards:/var/lib/grafana/dashboards
ports:
- "3000:3000"
environment:
GF_SERVER_ROOT_URL: https://localhost:3000
GF_SECURITY_ADMIN_PASSWORD: password
volumes
에서 이 두 서비스에 필요한 구성 파일을 정의합니다.docker-compose
를 실행한 후 https://localhost:3000
에서 대시보드를 볼 수 있습니다. 계정과 비밀번호는 간단하게 admin
와 passowrd
입니다.아파치 프레스토
마지막 서비스는 Presto 입니다.
Presto가 필요한 이유는 무엇입니까? Pinot이 SQL을 지원하기 때문에 실제로는 Pinot이 지원하지 않습니다
JOIN
. 두 개의 테이블을 병합해야 하는 경우 외부 SQL 엔진에서 제공해야 합니다.Presto는 ANSI SQL과 Pinot를 비롯한 여러 데이터 소스를 지원하는 SQL 엔진이므로 실험에 Presto를 사용하기로 했습니다.
presto-coordinator:
image: apachepinot/pinot-presto
restart: unless-stopped
ports:
- "18080:8080"
Presto에는 코디네이터와 작업자의 두 가지 역할이 있습니다. 실험 환경에서는 코디네이터의 내장 작업자를 사용하기만 하면 됩니다.
공식 컨테이너
apachepinot/pinot-presto
는 아무런 설정 없이 기본적으로 코디네이터이며 이미 FQDNpinot-controller:9000
을 사용하고 있으므로 아무것도 변경할 필요가 없으며 바로 사용할 수 있습니다.결론
Github 리포지토리를 복제한 후
docker-compose up -d
를 직접 실행하여 실험 환경을 제대로 실행할 수 있습니다.전체 실험 환경에는 세 가지 핵심 사항이 포함되어 있습니다.
그런데 공식 문서에는 보안이 적용된 Kafka를 사용하는 방법이 소개되어 있지 않고 보안이 없는 Kafka만 예로 들어 설명되어 있습니다.
Confluent 의 경우 카프카에
SASL_SSL
가 내장되어 있는데 이 글을 참고하여 카프카의 계정과 비밀번호를 설정한다.https://dev.startree.ai/docs/pinot/recipes/kafka-sasl
이 실험 환경은 Presto 작업자 추가와 같은 일부 요구 사항에 따라 확장될 수 있습니다.
Reference
이 문제에 관하여(Apache Pinot 및 Presto 빌드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lazypro/building-apache-pinot-and-presto-4il0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)