Automatic Open Source-based Data Pipelines? Openshift To the Rescue! -번역

자동 오픈 소스 기반 데이터 파이프 라인?구조로 openshift!

Image for post

Photo by Stephen Dawson on Unsplash
Image for post

데모 아키텍처

전제 조건

  • 실행중인 Ceph 클러스터 (& gt; rrcs4)
  • 실행중인 OpenShift 4 클러스터 (& gt; 4.6.8)
  • 외부 모드에서 OCS 클러스터, 오브젝트 및 블록 저장소 모두 제공

설치

모든 리소스를 배포 해야하는 OpenShift 클러스터에서 새 프로젝트를 만듭니다.

$ OC NEW-PROJECT 데이터 - 엔지니어 데모
Image for post

생성 된 프로젝트에 설치된 운영자가 설치됩니다
$ git clone.https://github.com/shonpaz123/cephdemos.git
$ CD Cephdemos / 데이터 - 엔지니어링 파이프 라인 - 데모 - OCP

Data Services Preparation

Preparing our S3 environment

이제 모든 전제 조건이 준비되어 있으므로 필요한 S3 리소스를 만들어 시작하겠습니다.우리가 외부 Ceph 클러스터를 사용하는 것처럼 클러스터와 상호 작용하기 위해 필요한 S3 사용자를 만들어야합니다.또한 KAFKA가 이벤트를 데이터 호수로 내보낼 수 있도록 S3 버킷을 만들어야합니다.이러한 리소스를 작성해 봅시다.

$ CD 01-OCS - 외부 -PEPH & AMP; & amp;./run.sh & amp; & amp;CD ..
{
"user_id": "데이터 - 엔지니어링 데모",
"display_name": "데이터 - 엔지니어링 - 데모",
"이메일": "",
"일시 중단 된": 0,
"max_buckets": 1000,
"하위저": [],
"키": [
{
"user": "데이터 - 엔지니어링 데모",
"access_key": "hc8v2pt7hx8zfs8nq37r",
"secret_key": "y6cenkxozddikjhqgkblfm38mukbnmwbsa1dxyu"
}
...에
...에
...에
}
make_bucket : 음악 차트 - 노래 - 상점 - 변경

Kafka New-ETL을 배포합니다

이제 S3 준비가되어 있으므로 필요한 모든 KAFKA 리소스를 배포해야합니다.이 섹션에서는 KAFKA 클러스터를 배포하여amq 스트림조작자, 그 사람을 통해 제공됩니다OpenShift 연산자 허브…에또한 기존 주제 이벤트를 S3 버킷으로 내보내려면 KAFKA 주제와 KAFKA 연결을 배포합니다.중대한!Endpoint URL을 변경해야합니다. 그렇지 않으면 Kafka Connect가 성공없이 이벤트를 노출하려고합니다.

$ CD 02-KAFKA & amp; & amp;./run.sh & amp; & amp;CD ..
$ oc 포드 가져 오기
이름 준비 상태가 나이를 다시 시작합니다
amq-streams-cluster-operator-v1.6.2-5B688F757-VHQCQ 1/1 러닝 0 7H35M
My-Cluster-Entity-operator-5dfbdc56bd-75bxj 3/3 러닝 0 92S
my-cluster-kafka-0 1/1 러닝 0 2m10s
my-cluster-kafka-1 1/1 러닝 0 2m10s
my-cluster-kafka-2 1/1 러닝 0 2m9s
my-cluster-zookeeper-0 1/1 러닝 0 2M42S
my-connect-cluster-connect-7BDC77F479-VWDBS 1/1 실행 0 71S
PRESTO-OPERATOR-DBBC6BC6BC6B78F-M6P6L 1/1 러닝 0 7H30M
$ oc kt를 얻으십시오
이름 클러스터 파티션 복제 계수
Connect-Cluster-Configs My-Cluster 1 3
연결 클러스터 - 오프셋 My-Cluster 25 3
연결 클러스터 - 상태 My-Cluster 5 3
소비자 - 오프셋 --- 84E7A678D08F4BD226872E5CDD2EB527FADC1C6A My-Cluster 50 3
음악 차트 - 노래 - 상점 - 변경 로그 내 클러스터 1 1
연주 - 노래 My-Cluster 12 3.
노래 My-Cluster 12 3.

분산 쿼리를 위해 Presto를 실행합니다

이 데모에서는 Presto의 S3 버킷 접두사 (관계형 데이터베이스의 테이블과 유사)를 쿼리하는 Presto의 기능을 사용할 것입니다.PRESTO는 생성 할 스키마가 필요합니다.이 예에서는 S3 버킷으로 내보내는 모든 이벤트를 쿼리 해야하는 파일 구조가 무엇인지 이해하기 위해 다음과 같습니다.

{ "count": 7, "songname": "좋은 나쁜 것과 추악한"}
$ CD 04-PRESTO & AMP; & amp;./run.sh & amp; & amp;CD ..
$ oc get pods |egrep -e "Presto | Postgres"
이름 준비 상태가 나이를 다시 시작합니다
hive-metastore-presto-cluster-576B7BB848-7BTLW 1/1 실행 0 15s
Postgres-68D5445B7C-G9QKJ 1/1 0 77S.
Presto-Coordinator-Presto-Cluster-8F6CFD6DD-G9P4L 1/2 실행 0 15s
PRESTO-OPERATOR-DBBC6BC6B78F-M6P6L 1/1 러닝 0 7H33M
Presto-Worker-Presto-Cluster-5B87F7C988-CG9M6 1/1 0 15S 실행

Visualizing real-time data with Superset

SuperSet은 시각화 도구로 Presto, Postgres 등 많은 JDBC 리소스에서 시각화 및 대시 보드를 제공 할 수 있습니다. Presto는 데이터를 탐색 할 수있는 기능, 사용 권한 및 RBAC를 제어 할 수있는 실제 UI가 없습니다.superset을 사용하십시오.

$ CD 05-superset & amp; & amp;./run.sh & amp; & amp;CD ..
$ oc get pods |그렙 수퍼 세트
superset-1-deploy 0/1 완료 0 72S.
Superset-1-G65XR 1/1 러닝 0 67S.
superset-db-init-6q75s 0/1 완료 0 71S

데이터 논리 준비

모든 인프라 서비스가 준비되면 스트리밍 응용 프로그램 뒤에 데이터 로직을 만들어야합니다.PRESTO는 S3 버킷의 데이터를 쿼리 할 때 PRESTO가 데이터를 쿼리 해야하는 방법을 알 수 있도록 PRESTO가 구조 지식을 제공하는 테이블로서 PRESTO를 만들 수 있습니다.

$ oc rsh $ (oc get pods | grep 코디네이터 | grep 실행 | awk '{$ 1}')
$ presto-cli --catalog hive.
$ schema hive.songs (location = 's3a : //music-chart-songsore-changelog/music-chart-songs-store-changelog.json/');
$ USE HIVE.SONGS;
$ 테이블 곡 (count int, songname varchar)을 사용하여 (format = 'json', external_location = 's3a : //music-chart-songsstore-changelog/music-chart-songsore-changelog.json/');
곡에서 $ 선택 *
카운트 |노래 제목
------- + -------------
(0 행)
쿼리 20210203_162730_00005_7HSQI, 완료, 1 노드
분할 : 17 합계, 17 완료 (100.00 %)
1.01 [0 행, 0b] [0 행 / S, 0b / s]

실시간 이벤트 스트리밍

이제 모든 리소스가 사용할 준비가되었으므로 마침내 스트리밍 응용 프로그램을 배포 할 수 있습니다!우리의 스트리밍 응용 프로그램은 실제로 미디어 플레이어를 시뮬레이션하는 KAFKA 생산자이며, 미디어 플레이어가 무작위로 “재생”되는 노래 목록이 미리 정의 된 목록이 있습니다.사용자가 노래를 재생할 때마다 이벤트가 KAFKA 주제로 보내집니다.

$ CD 03 - 음악 차트 - 앱 및 amp; & amp;./run.sh & amp; & amp;CD ..
$ oc get pods |egrep -e "플레이어 | 음악"
음악 차트 -576857C7F8-7L65X 1/1 러닝 0 18s.
Player-App-79FB9CD54F-BHTL5 1/1 러닝 0 19S
$ oc 로그 플레이어 -POP-79FB9CD54F-BHTL52021-02-03 16 : 28 : 41,970 정보 [org.acm.playsongsgenerator] (RXComputationThreadPool-1) 노래 1 : 나쁜 것과 추악한 연주.
2021-02-03 16 : 28 : 46,970 정보 [org.acm.playsongsGenerator] (RXComputationThreadPool-1) 노래 1 : 나쁜 것이 좋고 추악한 연극.
2021-02-03 16 : 28 : 51,970 정보 [org.acm.playsongsgenerator] (RXComputationThreadPool-1) 노래 2 : 믿어.
2021-02-03 16 : 28 : 56,970 정보 [org.acm.playsongsGenerator] (RXComputationThreadPool-1) 노래 3 : 여전히 당신이 연주했습니다.
2021-02-03 16 : 29 : 01,972 Info [org.acm.playsongsGenerator] (RXComputationThreadPool-1) 노래 2 : 믿어.
2021-02-03 16 : 29 : 06,970 정보 [org.acm.playsongsgenerator] (RxComputationThreadPool-1) 노래 7 : Run에서 Fox가 연주되었습니다.
$ OC 로그 음악 차트 -576857C7F8-7L65X.[KTable-Tostream-0000000006] : 2, PlayedSong [Count = 1, SongName = 믿음]
[KTable-Tostream-0000000006] : 8, PlayedSong [Count = 1, SongName = Perfect]
[KTABLE-TOSTREAM-0000000006] : 3, PlayedSong [Count = 1, SongName = 아직도 당신을 사랑합니다]
[KTABLE-TOSTREAM-0000000006] : 1, PlayedSong [Count = 1, SongName = 좋음 및 추악한 선량]
[KTable-Tostream-0000000006] : 6, PlayedSong [Count = 1, SongName = 알 수 없음]
[KTABLE-TOSTREAM-0000000006] : 3, PlayedSong [Count = 2, SongName = 아직도 당신을 사랑합니다]
[KTable-Tostream-0000000006] : 5, PlayedSong [Count = 1, SongName = 때로는]
[KTable-Tostream-0000000006] : 2, PlayedSong [Count = 2, SongName = 믿음]
[KTABLE-TOSTREAM-0000000006] : 1, PlayedSong [Count = 2, SongName = 나쁜 것과 추악한 선량]
Image for post

생성 된 버킷 접두사의 S3 브라우저
$ PRESTO & GT;PRESTO-CLI --CATALOG HIVE.
$ PRESTO : 노래 & gt;hive.songs를 사용하십시오;
곡에서 $ 선택 *
카운트 |노래 제목
--------------------------------------------------------
1 |보헤미안 랩소디
4 |아직도 너를 사랑해
1 |나쁜 것이 좋고 못생긴 것
3 |믿다
1 |완전한
1 |때때로
2 |나쁜 것이 좋고 못생긴 것
2 |보헤미안 랩소디
3 |아직도 너를 사랑해
4 |때때로
2 |알 수없는 것으로
4 |믿다
4 |알 수없는 것으로
2 |때때로
5 |아직도 너를 사랑해
3 |나쁜 것이 좋고 못생긴 것
$ oc 루트를 얻으십시오이름 호스트 / 포트 경로 서비스 포트 종단 와일드 카드
Superset superset-data-engineering-demo.apps.ocp.spaz.local superset 8088-tcp 없음
Image for post

데이터베이스를 만드는 동안 PRESTO의 연결 테스트
Image for post

시각화에 대한 쿼리 작성
Image for post

실시간 데이터 대시 보드

결론

이 데모에서는 OpenShift에서 예정된 모든 데이터 파이프 라인을 실행하기 위해 오픈 소스 제품을 활용할 수있는 방법을 보았습니다.kubernetes가 채택 기록을 끊으므로 조직은 쿠베르 라이트쪽으로 작업 부하를 움직이는 것을 고려해야하므로 데이터 서비스가 뒤에 남겨지지 않을 것입니다.Red Hat 및 Partner Operators를 사용하여 OpenShift는 Day-1 및 Day-2 관리를 데이터 서비스로 제공합니다.

Leave a Comment