Skip to content

Commit

Permalink
optimize_e2e
Browse files Browse the repository at this point in the history
  • Loading branch information
zackyoungh committed Jan 15, 2025
1 parent 2ca6b0d commit 40fedad
Show file tree
Hide file tree
Showing 20 changed files with 803 additions and 114 deletions.
86 changes: 74 additions & 12 deletions .github/workflows/backend.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ on:
pull_request:
branches:
- dev
- 1.2
paths-ignore:
- 'docs/**'
- '**/*.md'
Expand Down Expand Up @@ -156,7 +155,7 @@ jobs:
strategy:
fail-fast: true
matrix:
flink: [ '1.14', '1.15', '1.16', '1.17', '1.18', '1.19', '1.20' ]
flink: [ '1.15', '1.16', '1.17', '1.18', '1.19', '1.20' ]
runs-on: ubuntu-latest
services:
registry:
Expand All @@ -166,6 +165,9 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Init Docker Network
run: |
docker network create -d bridge --subnet 172.28.0.0/16 --gateway 172.28.0.1 dinky_net
- name: Download artifact
uses: actions/download-artifact@v4
with:
Expand All @@ -190,18 +192,41 @@ jobs:
FLINK_VERSION=${{ matrix.flink }}
tags: |
localhost:5000/dinky/dinky-test:flink
- name: Build Flink Image
uses: docker/build-push-action@v5
with:
context: .
file: ./e2e_test/docker-compose-env/FlinkDockerfile
# 是否 docker push
push: true
build-args: |
FLINK_VERSION=${{ matrix.flink }}
tags: |
localhost:5000/dinky/flink:flink
- name: Init Env Jar
run: |
mkdir O e2e_test/docker-compose-env/dinky/jars
wget -O e2e_test/docker-compose-env/dinky/mysql-connector-java-8.0.30.jar https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar &&
wget -O e2e_test/docker-compose-env/flink/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar https://repo1.maven.org/maven2/org/apache/flink/flink-shaded-hadoop-2-uber/2.8.3-10.0/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar &&
wget -O e2e_test/docker-compose-env/dinky/javax.ws.rs-api-2.1.1.jar https://repo1.maven.org/maven2/javax/ws/rs/javax.ws.rs-api/2.1.1/javax.ws.rs-api-2.1.1.jar
- name: Init Docker Network
run: |
docker network create -d bridge dinky_net
wget -O e2e_test/docker-compose-env/dinky/jars/flink-doris-connector.jar https://repo1.maven.org/maven2/org/apache/doris/flink-doris-connector-${{ matrix.flink }}/24.0.1/flink-doris-connector-${{ matrix.flink }}-24.0.1.jar
wget -O e2e_test/docker-compose-env/dinky/jars/flink-sql-connector-mysql-cdc.jar https://repo1.maven.org/maven2/org/apache/flink/flink-sql-connector-mysql-cdc/3.2.0/flink-sql-connector-mysql-cdc-3.2.0.jar
cp e2e_test/docker-compose-env/dinky/mysql-connector-java-8.0.30.jar e2e_test/docker-compose-env/dinky/jars/mysql-connector-java.jar
- name: Init Run Docker MySQL
uses: hoverkraft-tech/compose-action@v2.0.2
with:
compose-file: ./e2e_test/docker-compose-env/mysql/docker-compose.yml
# - name: Init System Env And Clear Docker Build Cache
# run: |
# echo y | docker builder prune
# df -h
# ulimit -a
# sudo swapoff -a
# sudo sysctl -w vm.max_map_count=2000000
# - name: Init Run Docker Doris
# uses: hoverkraft-tech/compose-action@v2.0.2
# with:
# compose-file: ./e2e_test/docker-compose-env/doris/docker-compose.yml
- name: Init Run Docker Dinky
uses: hoverkraft-tech/compose-action@v2.0.2
with:
Expand All @@ -210,16 +235,53 @@ jobs:
uses: hoverkraft-tech/compose-action@v2.0.2
with:
compose-file: ./e2e_test/docker-compose-env/hadoop/docker-compose.yml
- name: Replace Flink docker-compose yml
run: |
export FLINK_VERSION=${{ matrix.flink }} && envsubst < ./e2e_test/docker-compose-env/flink/docker-compose.yml > ./e2e_test/docker-compose-env/flink/docker-compose-${{ matrix.flink }}.yml
- name: Init Run Docker Flink
uses: hoverkraft-tech/compose-action@v2.0.2
with:
compose-file: ./e2e_test/docker-compose-env/flink/docker-compose-${{ matrix.flink }}.yml

compose-file: ./e2e_test/docker-compose-env/flink/docker-compose.yml
# k8s env
- name: Init k3s
uses: nolar/setup-k3d-k3s@v1
with:
version: latest
k3d-args: -s 1 --network dinky_net --api-port 172.28.0.1:6550
- name: Get k3s kube config
run: k3d kubeconfig get --all && mkdir ./kube && k3d kubeconfig get --all > ./kube/k3s.yaml && sed -i 's/0.0.0.0/172.28.0.1/g' ./kube/k3s.yaml
- name: Init k8s RBAC and namespace
run: |
kubectl create namespace dinky
kubectl create serviceaccount dinky -n dinky
kubectl create clusterrolebinding flink-role-binding-dinky --clusterrole=edit --serviceaccount=dinky:dinky
- name: Init k3s main images
run: |
docker exec k3d-k3s-default-server-0 crictl pull library/busybox:latest
docker exec k3d-k3s-default-server-0 crictl pull flink:${{ matrix.flink }}-scala_2.12-java8
docker pull localhost:5000/dinky/flink:flink
docker tag localhost:5000/dinky/flink:flink dinky/flink:flink
docker save -o flink.tar dinky/flink:flink
k3d images import ./flink.tar
rm -rf ./flink.tar
- name: Test k3s host
run: |
curl -k https://172.28.0.1:6550
- name: Cp Flink Jar Deps
run: docker cp dinky:/opt/dinky/ ./dinky-release
run: |
docker cp dinky:/opt/dinky/ ./dinky-release
mv ./dinky-release/jar/dinky-app*.jar e2e_test/docker-compose-env/dinky/dinky-app.jar
- name: Run python http server
run: |
mkdir -p logs
ls e2e_test/docker-compose-env/dinky/
nohup python -m http.server -d e2e_test/docker-compose-env/dinky/ 9001 > ./logs/python_http.log &
- name: Run Docker Python Script
run: |
docker run -v ./dinky-release/extends/flink${{ matrix.flink }}:/flink/lib -v ./e2e_test/docker-compose-env/dinky/mysql-connector-java-8.0.30.jar:/flink/lib/mysql-connector-java-8.0.30.jar -v./e2e_test/docker-compose-env/flink/conf:/flink/conf -v ./dinky-release/jar:/dinky/jar -v./e2e_test/tools:/app -w /app --net dinky_net --rm --entrypoint /bin/bash python:3.9 -c 'pip install -r requirements.txt && python main.py dinky:8888'
docker run -v ./e2e_test/tools:/app -w /app -v ./kube:/kube -v ./e2e_test/docker-compose-env/dinky:/dinky/jar -v ./dinky-release/extends/flink${{ matrix.flink }}:/opt/flink/lib -v ./e2e_test/docker-compose-env/dinky/mysql-connector-java-8.0.30.jar:/opt/flink/lib/mysql-connector-java-8.0.30.jar --net dinky_net --rm --entrypoint /bin/bash python:3.9 -c 'pip install -r requirements.txt && python main.py dinky:8888 ${{ matrix.flink }}'
- name: Get k8s pods info and logs
if: ${{ always() }}
run: |
chmod -R 755 ./e2e_test/view_k8s_all_pod_logs.sh
./e2e_test/view_k8s_all_pod_logs.sh dinky
- name: Get Python HttpServer log
if: ${{ always() }}
run: |
cat ./logs/python_http.log
Empty file modified e2e_test/docker-compose-env/Dockerfile
100755 → 100644
Empty file.
5 changes: 5 additions & 0 deletions e2e_test/docker-compose-env/FlinkDockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@

ARG FLINK_VERSION

FROM flink:${FLINK_VERSION}-scala_2.12-java8 as flink-base
RUN rm -f /opt/flink/lib/flink-table-planner-loader*.jar && cp /opt/flink/opt/flink-python*.jar /opt/flink/lib/ && cp /opt/flink/opt/flink-table-planner*.jar /opt/flink/lib/ 2>/dev/null || :
5 changes: 3 additions & 2 deletions e2e_test/docker-compose-env/dinky/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ services:
- ./mysql-connector-java-8.0.30.jar:/opt/dinky/lib/mysql-connector-java-8.0.30.jar
- ./javax.ws.rs-api-2.1.1.jar:/opt/dinky/lib/javax.ws.rs-api-2.1.1.jar
- ../flink/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar:/opt/dinky/lib/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar
- ../flink/conf/log4j-console.properties:/flink/conf/log4j-console.properties
- ../hadoop:/flink/conf
- ../flink/conf/log4j-console.properties:/opt/flink/conf/log4j-console.properties
- ../hadoop:/opt/flink/conf
- ./jars:/dinky
networks:
- dinky_net
11 changes: 11 additions & 0 deletions e2e_test/docker-compose-env/doris/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
version: "3"
networks:
dinky_net:
external: true
services:
doris:
image: yagagagaga/doris-standalone:2.1.7
hostname: doris
container_name: doris
networks:
- dinky_net
13 changes: 11 additions & 2 deletions e2e_test/docker-compose-env/flink/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,14 @@ services:
hostname: jobmanager
container_name: jobmanager
restart: always
image: flink:${FLINK_VERSION}-scala_2.12-java8
image: localhost:5000/dinky/flink:flink
command: jobmanager
environment:
- HADOOP_CONF_DIR=/opt/flink/conf
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
parallelism.default: 1
volumes:
- ./conf:/opt/flink/conf
- ./flink-shaded-hadoop-2-uber-2.8.3-10.0.jar:/opt/flink/lib/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar
Expand All @@ -19,10 +23,15 @@ services:
taskmanager:
hostname: taskmanager
container_name: taskmanager
image: flink:${FLINK_VERSION}-scala_2.12-java8
image: localhost:5000/dinky/flink:flink
command: taskmanager
environment:
- HADOOP_CONF_DIR=/opt/flink/conf
- |
FLINK_PROPERTIES=
jobmanager.rpc.address: jobmanager
taskmanager.numberOfTaskSlots: 20
parallelism.default: 1
volumes:
- ./conf:/opt/flink/conf
- ./flink-shaded-hadoop-2-uber-2.8.3-10.0.jar:/opt/flink/lib/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar
Expand Down
86 changes: 43 additions & 43 deletions e2e_test/docker-compose-env/hadoop/hadoop.env
Original file line number Diff line number Diff line change
@@ -1,43 +1,43 @@
CORE_CONF_fs_defaultFS=hdfs://namenode:9000
CORE_CONF_hadoop_http_staticuser_user=root
CORE_CONF_hadoop_proxyuser_hue_hosts=*
CORE_CONF_hadoop_proxyuser_hue_groups=*
CORE_CONF_io_compression_codecs=org.apache.hadoop.io.compress.SnappyCodec

HDFS_CONF_dfs_webhdfs_enabled=true
HDFS_CONF_dfs_permissions_enabled=false
HDFS_CONF_dfs_namenode_datanode_registration_ip___hostname___check=false

YARN_CONF_yarn_log___aggregation___enable=true
YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/
YARN_CONF_yarn_resourcemanager_recovery_enabled=true
YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore
YARN_CONF_yarn_resourcemanager_scheduler_class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
YARN_CONF_yarn_scheduler_capacity_root_default_maximum___allocation___mb=8192
YARN_CONF_yarn_scheduler_capacity_root_default_maximum___allocation___vcores=4
YARN_CONF_yarn_resourcemanager_fs_state___store_uri=/rmstate
YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled=true
YARN_CONF_yarn_resourcemanager_hostname=resourcemanager
YARN_CONF_yarn_resourcemanager_address=resourcemanager:8032
YARN_CONF_yarn_resourcemanager_scheduler_address=resourcemanager:8030
YARN_CONF_yarn_resourcemanager_resource__tracker_address=resourcemanager:8031
YARN_CONF_yarn_timeline___service_enabled=true
YARN_CONF_yarn_timeline___service_generic___application___history_enabled=true
YARN_CONF_yarn_timeline___service_hostname=historyserver
YARN_CONF_mapreduce_map_output_compress=true
YARN_CONF_mapred_map_output_compress_codec=org.apache.hadoop.io.compress.SnappyCodec
YARN_CONF_yarn_nodemanager_resource_memory___mb=16384
YARN_CONF_yarn_nodemanager_resource_cpu___vcores=8
YARN_CONF_yarn_nodemanager_disk___health___checker_max___disk___utilization___per___disk___percentage=98.5
YARN_CONF_yarn_nodemanager_remote___app___log___dir=/app-logs
YARN_CONF_yarn_nodemanager_aux___services=mapreduce_shuffle

MAPRED_CONF_mapreduce_framework_name=yarn
MAPRED_CONF_mapred_child_java_opts=-Xmx4096m
MAPRED_CONF_mapreduce_map_memory_mb=4096
MAPRED_CONF_mapreduce_reduce_memory_mb=8192
MAPRED_CONF_mapreduce_map_java_opts=-Xmx3072m
MAPRED_CONF_mapreduce_reduce_java_opts=-Xmx6144m
MAPRED_CONF_yarn_app_mapreduce_am_env=HADOOP_MAPRED_HOME=/data/docker-compose/hadoop-3.2.1/
MAPRED_CONF_mapreduce_map_env=HADOOP_MAPRED_HOME=/data/docker-compose/hadoop-3.2.1/
MAPRED_CONF_mapreduce_reduce_env=HADOOP_MAPRED_HOME=/data/docker-compose/hadoop-3.2.1/
CORE_CONF_fs_defaultFS=hdfs://namenode:9000
CORE_CONF_hadoop_http_staticuser_user=root
CORE_CONF_hadoop_proxyuser_hue_hosts=*
CORE_CONF_hadoop_proxyuser_hue_groups=*
CORE_CONF_io_compression_codecs=org.apache.hadoop.io.compress.SnappyCodec

HDFS_CONF_dfs_webhdfs_enabled=true
HDFS_CONF_dfs_permissions_enabled=false
HDFS_CONF_dfs_namenode_datanode_registration_ip___hostname___check=false

YARN_CONF_yarn_log___aggregation___enable=true
YARN_CONF_yarn_log_server_url=http://historyserver:8188/applicationhistory/logs/
YARN_CONF_yarn_resourcemanager_recovery_enabled=true
YARN_CONF_yarn_resourcemanager_store_class=org.apache.hadoop.yarn.server.resourcemanager.recovery.FileSystemRMStateStore
YARN_CONF_yarn_resourcemanager_scheduler_class=org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
YARN_CONF_yarn_scheduler_capacity_root_default_maximum___allocation___mb=8192
YARN_CONF_yarn_scheduler_capacity_root_default_maximum___allocation___vcores=4
YARN_CONF_yarn_resourcemanager_fs_state___store_uri=/rmstate
YARN_CONF_yarn_resourcemanager_system___metrics___publisher_enabled=true
YARN_CONF_yarn_resourcemanager_hostname=resourcemanager
YARN_CONF_yarn_resourcemanager_address=resourcemanager:8032
YARN_CONF_yarn_resourcemanager_scheduler_address=resourcemanager:8030
YARN_CONF_yarn_resourcemanager_resource__tracker_address=resourcemanager:8031
YARN_CONF_yarn_timeline___service_enabled=true
YARN_CONF_yarn_timeline___service_generic___application___history_enabled=true
YARN_CONF_yarn_timeline___service_hostname=historyserver
YARN_CONF_mapreduce_map_output_compress=true
YARN_CONF_mapred_map_output_compress_codec=org.apache.hadoop.io.compress.SnappyCodec
YARN_CONF_yarn_nodemanager_resource_memory___mb=163840
YARN_CONF_yarn_nodemanager_resource_cpu___vcores=80
YARN_CONF_yarn_nodemanager_disk___health___checker_max___disk___utilization___per___disk___percentage=98.5
YARN_CONF_yarn_nodemanager_remote___app___log___dir=/app-logs
YARN_CONF_yarn_nodemanager_aux___services=mapreduce_shuffle

MAPRED_CONF_mapreduce_framework_name=yarn
MAPRED_CONF_mapred_child_java_opts=-Xmx4096m
MAPRED_CONF_mapreduce_map_memory_mb=4096
MAPRED_CONF_mapreduce_reduce_memory_mb=8192
MAPRED_CONF_mapreduce_map_java_opts=-Xmx3072m
MAPRED_CONF_mapreduce_reduce_java_opts=-Xmx6144m
MAPRED_CONF_yarn_app_mapreduce_am_env=HADOOP_MAPRED_HOME=/data/docker-compose/hadoop-3.2.1/
MAPRED_CONF_mapreduce_map_env=HADOOP_MAPRED_HOME=/data/docker-compose/hadoop-3.2.1/
MAPRED_CONF_mapreduce_reduce_env=HADOOP_MAPRED_HOME=/data/docker-compose/hadoop-3.2.1/
62 changes: 58 additions & 4 deletions e2e_test/tools/config.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,63 @@
import sys
from logger import log

dinky_addr = sys.argv[1]
flink_version = sys.argv[2]
dinky_app_jar = 'dinky-app.jar'

# standalone
standalone_address = "jobmanager:8282"

# yarn
yarn_flink_lib="/flink/lib"
yarn_flink_conf="/flink/conf"
yarn_hadoop_conf="/flink/conf"
yarn_dinky_app_jar="/dinky/jar"
yarn_flink_lib = "/opt/flink/lib"
yarn_flink_conf = "/opt/flink/conf"
yarn_hadoop_conf = "/opt/flink/conf"
yarn_dinky_app_jar = "/dinky/jar"

podTemplate="""
apiVersion: v1
kind: Pod
metadata:
name: jobmanager-pod-template
spec:
initContainers:
- name: artifacts-fetcher-dinky
image: library/busybox:latest
imagePullPolicy: Never
# Use wget or other tools to get user jars from remote storage
command: [ 'wget', 'http://172.28.0.1:9001/dinky-app.jar', '-O', '/flink-usrlib/dinky-app.jar' ]
volumeMounts:
- mountPath: /flink-usrlib
name: flink-usrlib
- name: artifacts-fetcher-mysql
image: library/busybox:latest
imagePullPolicy: Never
# Use wget or other tools to get user jars from remote storage
command: [ 'wget', 'http://172.28.0.1:9001/mysql-connector-java-8.0.30.jar', '-O', '/flink-usrlib/mysql-connector-java-8.0.30.jar' ]
volumeMounts:
- mountPath: /flink-usrlib
name: flink-usrlib
containers:
# Do not change the main container name
- name: flink-main-container
resources:
requests:
ephemeral-storage: 2048Mi
limits:
ephemeral-storage: 2048Mi
volumeMounts:
- mountPath: /opt/flink/usrlib
name: flink-usrlib
volumes:
- name: flink-usrlib
emptyDir: { }
"""

log.info(f"""
====================================================
all config dinky address: {dinky_addr}
flink version: {flink_version}
====================================================
""")
9 changes: 9 additions & 0 deletions e2e_test/tools/dinky_task/flink_jar_sql/mysql2doris.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
set 'execution.checkpointing.interval'='5 s';
ADD CUSTOMJAR 'rs:/flink-sql-connector-mysql-cdc.jar';
ADD CUSTOMJAR 'rs:/mysql-connector-java.jar';
EXECUTE JAR WITH (
'uri'='rs:/flink-doris-connector.jar',
'main-class'='org.apache.doris.flink.tools.cdc.CdcTools',
'args'='base64@bXlzcWwtc3luYy1kYXRhYmFzZSAgICAgLS1kYXRhYmFzZSBkaW5reSAgICAgLS1teXNxbC1jb25mIGhvc3RuYW1lPW15c3FsICAgICAtLW15c3FsLWNvbmYgcG9ydD0zMzA2ICAgICAtLW15c3FsLWNvbmYgdXNlcm5hbWU9cm9vdCAgICAgLS1teXNxbC1jb25mIHBhc3N3b3JkPWRpbmt5ICAgICAtLW15c3FsLWNvbmYgZGF0YWJhc2UtbmFtZT1kaW5reSAgICAgLS1teXNxbC1jb25mIHNlcnZlci10aW1lLXpvbmU9QXNpYS9TaGFuZ2hhaSAgICAgLS1pbmNsdWRpbmctdGFibGVzICJkaW5reV90YXNrIiAgICAgLS1zaW5rLWNvbmYgZmVub2Rlcz1kb3Jpcy1mZTo4MDMwICAgICAtLXNpbmstY29uZiB1c2VybmFtZT1yb290ICAgICAtLXNpbmstY29uZiBqZGJjLXVybD1qZGJjOm15c3FsOi8vZG9yaXMtZmU6OTAzMCAgICAgLS1zaW5rLWNvbmYgc2luay5sYWJlbC1wcmVmaXg9bGFiZWwtMSAgICAgLS10YWJsZS1jb25mIHJlcGxpY2F0aW9uX251bT0xIA==',
'allowNonRestoredState'='false'
);
Loading

0 comments on commit 40fedad

Please sign in to comment.