Add analytics zoo cluster serving demo
This commit is contained in:
		
							parent
							
								
									eaf47d1662
								
							
						
					
					
						commit
						b82072a9b6
					
				
							
								
								
									
										25
									
								
								.github/workflows/demo_test.yml
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										25
									
								
								.github/workflows/demo_test.yml
									
									
									
									
										vendored
									
									
								
							| @ -509,6 +509,31 @@ jobs: | |||||||
|         sleep ${{ env.nap_time }}; |         sleep ${{ env.nap_time }}; | ||||||
|         docker exec flink_test bash -c "cd /root/occlum/demos/flink && SGX_MODE=SIM ./run_flink_on_occlum_glibc.sh task" |         docker exec flink_test bash -c "cd /root/occlum/demos/flink && SGX_MODE=SIM ./run_flink_on_occlum_glibc.sh task" | ||||||
| 
 | 
 | ||||||
|  |   Cluster_serving_test: | ||||||
|  |     runs-on: ubuntu-18.04 | ||||||
|  |     steps: | ||||||
|  |     - uses: actions/checkout@v1 | ||||||
|  |       with: | ||||||
|  |         submodules: true | ||||||
|  | 
 | ||||||
|  |     - name: Get occlum version | ||||||
|  |       run: echo "OCCLUM_VERSION=$(grep "Version =" src/pal/include/occlum_version.h |  awk '{print $4}')" >> $GITHUB_ENV | ||||||
|  | 
 | ||||||
|  |     - name: Create container | ||||||
|  |       run: docker run -itd --name=cluster_serving_test -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:${{ env.OCCLUM_VERSION }}-ubuntu18.04 | ||||||
|  | 
 | ||||||
|  |     - name: Build dependencies | ||||||
|  |       run: docker exec cluster_serving_test bash -c "cd /root/occlum; make submodule" | ||||||
|  | 
 | ||||||
|  |     - name: Make install | ||||||
|  |       run: docker exec cluster_serving_test bash -c "source /opt/intel/sgxsdk/environment; cd /root/occlum; OCCLUM_RELEASE_BUILD=1 make install" | ||||||
|  | 
 | ||||||
|  |     - name: Set up environment | ||||||
|  |       run: docker exec cluster_serving_test bash -c "cd /root/occlum/demos/cluster_serving; source ./environment.sh; ./install-dependencies.sh" | ||||||
|  | 
 | ||||||
|  |     - name: Run cluster serving test | ||||||
|  |       run: docker exec cluster_serving_test bash -c "cd /root/occlum/demos/cluster_serving; source ./environment.sh; SGX_MODE=SIM ./start-all.sh; ./push-image.sh" | ||||||
|  | 
 | ||||||
|   enclave_ra_tls_test: |   enclave_ra_tls_test: | ||||||
|     runs-on: ubuntu-18.04 |     runs-on: ubuntu-18.04 | ||||||
|     steps: |     steps: | ||||||
|  | |||||||
| @ -14,6 +14,7 @@ This set of demos shows how the Occlum toolchain can be used with different buil | |||||||
| 
 | 
 | ||||||
| This set of demos shows how real-world apps can be easily run inside SGX enclaves with Occlum. | This set of demos shows how real-world apps can be easily run inside SGX enclaves with Occlum. | ||||||
| 
 | 
 | ||||||
|  | * [cluster_serving](cluster_serving/): A demo of [Analytics Zoo Cluster Serving](https://analytics-zoo.github.io/master/#ClusterServingGuide/ProgrammingGuide/) inference solution. | ||||||
| * [fish](fish/): A demo of [FISH](https://fishshell.com) shell script. | * [fish](fish/): A demo of [FISH](https://fishshell.com) shell script. | ||||||
| * [flink](flink/): A demo of [Apache Flink](https://flink.apache.org). | * [flink](flink/): A demo of [Apache Flink](https://flink.apache.org). | ||||||
| * [font](font/font_support_for_java): A demo of supporting font with Java. | * [font](font/font_support_for_java): A demo of supporting font with Java. | ||||||
|  | |||||||
							
								
								
									
										57
									
								
								demos/cluster_serving/README.md
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										57
									
								
								demos/cluster_serving/README.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,57 @@ | |||||||
|  | # Analytics Zoo Cluster Serving Inference in SGX with Occlum # | ||||||
|  | 
 | ||||||
|  | This example demonstrates how to use Analytics Zoo Cluster Serving for real-time inference in SGX.  | ||||||
|  | [Analytics Zoo](https://github.com/intel-analytics/analytics-zoo) is an open source Big Data AI platform, [Cluster Serving](https://www.usenix.org/conference/opml20/presentation/song) is a real-time serving solution that enables automatic model inference on Flink cluster. | ||||||
|  | 
 | ||||||
|  | Note that in this example all components are run on single machine within one container. For running cluster serving with SGX on multi-nodes, please refer to [distributed mode guide](https://github.com/intel-analytics/analytics-zoo/tree/master/ppml/trusted-realtime-ml/scala/docker-occlum#distributed-mode-multi-containersmulti-nodes) from Analytics Zoo.  | ||||||
|  | 
 | ||||||
|  | Besides following steps in this demo, user can also choose to directly use the docker image provided by Analytics Zoo for cluster serving with Occlum which has all dependencies pre-installed. For detailed guide using the docker image,  please refer to [Analytics Zoo guide](https://analytics-zoo.readthedocs.io/en/latest/doc/PPML/Overview/ppml.html#trusted-realtime-compute-and-ml). | ||||||
|  | 
 | ||||||
|  | ## Set up environment ## | ||||||
|  | Set environment variables and install dependencies (Redis, Flink, Analytics Zoo, models) | ||||||
|  | 
 | ||||||
|  | 	source ./environment.sh | ||||||
|  |     ./install-dependencies.sh | ||||||
|  | ## Start Cluster Serving ## | ||||||
|  | Start Redis, Flink and cluster serving | ||||||
|  | 
 | ||||||
|  | 	./start-all.sh | ||||||
|  | Or you can start components separately: | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 1. **Start Redis Server** | ||||||
|  | 
 | ||||||
|  |     `./start-redis.sh &` | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 2. **Start Flink** | ||||||
|  | 
 | ||||||
|  | 	Start Flink Jobmanager on host | ||||||
|  | 
 | ||||||
|  | 	`./start-flink-jobmanager.sh` | ||||||
|  | 
 | ||||||
|  | 	Initialize and start Flink Taskmanager with Occlum | ||||||
|  | 	 | ||||||
|  | 	```  | ||||||
|  | 	./init-occlum-taskmanager.sh  			 | ||||||
|  | 	./start-flink-taskmanager.sh | ||||||
|  | 	``` | ||||||
|  |     | ||||||
|  | 3. **Start Cluster Serving job** | ||||||
|  | 
 | ||||||
|  | 	Start HTTP frontend | ||||||
|  | 	 | ||||||
|  | 	`./start-http-frontend.sh &` | ||||||
|  |      | ||||||
|  | 	Start cluster serving job | ||||||
|  | 	 | ||||||
|  | 	`./start-cluster-serving-job.sh` | ||||||
|  | 
 | ||||||
|  | ## Push inference image ## | ||||||
|  | Push image into queue via Restful API for inference. Users can modify the script with base64 of inference image (note that the image size must match model input size, e.g. 224*224 for resnet50 in this demo). Users can also use python API to directly push the image file, see [guide](https://analytics-zoo.github.io/master/#ClusterServingGuide/ProgrammingGuide/#4-model-inference) for details. | ||||||
|  | 
 | ||||||
|  |     ./push-image.sh | ||||||
|  | ## Stop Cluster Serving ## | ||||||
|  | Stop cluster serving job and all components | ||||||
|  | 	 | ||||||
|  | 	./stop-all.sh | ||||||
							
								
								
									
										59
									
								
								demos/cluster_serving/config.yaml
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										59
									
								
								demos/cluster_serving/config.yaml
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,59 @@ | |||||||
|  | ## Analytics-zoo Cluster Serving Config | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # model path must be provided | ||||||
|  |   modelPath: resnet50 | ||||||
|  | 
 | ||||||
|  | # name, default is serving_stream, you need to specify if running multiple servings | ||||||
|  | # jobName: | ||||||
|  | 
 | ||||||
|  | # default, None | ||||||
|  | # postProcessing: | ||||||
|  | 
 | ||||||
|  | # default, false, if input is already batched NdArray, set true | ||||||
|  | # inputAlreadyBatched: | ||||||
|  | 
 | ||||||
|  | ######## Performance Configuration | ||||||
|  | # default, number of cores per machine | ||||||
|  | # if you set coreNumberPerMachine, Cluster Serving will auto config modelParallelism and threadPerModel | ||||||
|  | # if you need to set modelParallelism and threadPerModel manually, do not set coreNumberPerMachine | ||||||
|  |  coreNumberPerMachine: 1 | ||||||
|  | 
 | ||||||
|  | # default: number of models used in serving | ||||||
|  | # modelParallelism: | ||||||
|  | 
 | ||||||
|  | # default: number of cores (or threads) used per model in serving | ||||||
|  | # threadPerModel | ||||||
|  | 
 | ||||||
|  | # default: OFF | ||||||
|  | # performance_mode: | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ######## Specific Configuration | ||||||
|  | # default: localhost:8081 | ||||||
|  | # flinkRestUrl: | ||||||
|  | 
 | ||||||
|  | # default: localhost:6379 | ||||||
|  | # redisUrl: | ||||||
|  | 
 | ||||||
|  | # default: 8g | ||||||
|  | # redisMaxmemory: | ||||||
|  | 
 | ||||||
|  | # default: 5000 | ||||||
|  | # redisTimeout: | ||||||
|  | 
 | ||||||
|  | ######## Secure Configuration | ||||||
|  | # default: false | ||||||
|  | # secureEnabled: | ||||||
|  | 
 | ||||||
|  | # default: | ||||||
|  | #  secureTrustStorePath: /opt/keys/keystore.jks | ||||||
|  | 
 | ||||||
|  | # default: | ||||||
|  | # secureStructStorePassword: | ||||||
|  | 
 | ||||||
|  | # default: false | ||||||
|  | # modelEncrypted: | ||||||
|  | 
 | ||||||
|  | # default: false | ||||||
|  | #recordEncrypted:  | ||||||
							
								
								
									
										12
									
								
								demos/cluster_serving/environment.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										12
									
								
								demos/cluster_serving/environment.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | # Environment variables | ||||||
|  | export CORE_NUM=`nproc` | ||||||
|  | export REDIS_VERSION=6.0.6 | ||||||
|  | export REDIS_HOME=redis-${REDIS_VERSION} | ||||||
|  | export FLINK_VERSION=1.10.1 | ||||||
|  | export FLINK_HOME=flink-${FLINK_VERSION} | ||||||
|  | export ANALYTICS_ZOO_VERSION=0.10.0 | ||||||
|  | export BIGDL_VERSION=0.12.2 | ||||||
|  | export SPARK_VERSION=2.4.3 | ||||||
|  | 
 | ||||||
							
								
								
									
										4
									
								
								demos/cluster_serving/hosts
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										4
									
								
								demos/cluster_serving/hosts
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | 127.0.0.1 occlum-node | ||||||
|  | 127.0.0.1 localhost | ||||||
|  | ::1 occlum-node | ||||||
|  | ::1 localhost | ||||||
							
								
								
									
										42
									
								
								demos/cluster_serving/init-occlum-taskmanager.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										42
									
								
								demos/cluster_serving/init-occlum-taskmanager.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,42 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # set -x | ||||||
|  | 
 | ||||||
|  | FLINK_VERSION=$FLINK_VERSION | ||||||
|  | occlum_glibc=/opt/occlum/glibc/lib/ | ||||||
|  | init_instance() { | ||||||
|  |     # Remove older instance | ||||||
|  |     rm -rf flink && mkdir flink | ||||||
|  |     cd flink | ||||||
|  |     # Init Occlum instance | ||||||
|  |     occlum init | ||||||
|  |     new_json="$(jq '.resource_limits.user_space_size = "7000MB" | | ||||||
|  |                 .resource_limits.kernel_space_heap_size="64MB" | | ||||||
|  |                 .resource_limits.max_num_of_threads = 72 | | ||||||
|  |                 .process.default_heap_size = "128MB" | | ||||||
|  |                 .process.default_mmap_size = "6600MB" | | ||||||
|  |                 .entry_points = [ "/usr/lib/jvm/java-11-openjdk-amd64/bin" ] | | ||||||
|  |                 .env.default = [ "LD_LIBRARY_PATH=/usr/lib/jvm/java-11-openjdk-amd64/lib/server:/usr/lib/jvm/java-11-openjdk-amd64/lib:/usr/lib/jvm/java-11-openjdk-amd64/../lib:/lib:/opt/occlum/glibc/lib/", "OMP_NUM_THREADS=1", "KMP_AFFINITY=verbose,granularity=fine,compact,1,0", "KMP_BLOCKTIME=20" ]' Occlum.json)" && \ | ||||||
|  |     echo "${new_json}" > Occlum.json | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  | build_flink() { | ||||||
|  |     # Copy JVM and class file into Occlum instance and build | ||||||
|  |     mkdir -p image/usr/lib/jvm | ||||||
|  |     cp -r /usr/lib/jvm/java-11-openjdk-amd64 image/usr/lib/jvm | ||||||
|  |     cp /lib/x86_64-linux-gnu/libz.so.1 image/lib | ||||||
|  |     unzip -j ../analytics-zoo-bigdl_${BIGDL_VERSION}-spark_${SPARK_VERSION}-${ANALYTICS_ZOO_VERSION}-serving.jar linux-x86_64/openvino/* -d image/lib | ||||||
|  |     cp $occlum_glibc/libdl.so.2 image/$occlum_glibc | ||||||
|  |     cp $occlum_glibc/librt.so.1 image/$occlum_glibc | ||||||
|  |     cp $occlum_glibc/libm.so.6 image/$occlum_glibc | ||||||
|  |     cp $occlum_glibc/libnss_files.so.2 image/$occlum_glibc | ||||||
|  |     cp -rf ../flink-${FLINK_VERSION}/* image/bin/ | ||||||
|  |     cp -rf ../flink-${FLINK_VERSION}/conf image/opt/ | ||||||
|  |     cp -rf /etc/java-11-openjdk image/etc/ | ||||||
|  |     cp -rf ../hosts image/etc/ | ||||||
|  |     # build occlum | ||||||
|  |     occlum build | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #Build the flink occlum instance | ||||||
|  | init_instance | ||||||
|  | build_flink | ||||||
							
								
								
									
										30
									
								
								demos/cluster_serving/install-dependencies.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										30
									
								
								demos/cluster_serving/install-dependencies.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | apt-get update | ||||||
|  | apt-get install -y openjdk-11-jdk | ||||||
|  | apt-get install -y netcat | ||||||
|  | 
 | ||||||
|  | # Redis | ||||||
|  | wget http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz && \ | ||||||
|  | tar -zxvf redis-${REDIS_VERSION}.tar.gz | ||||||
|  | rm redis-${REDIS_VERSION}.tar.gz | ||||||
|  | cd redis-${REDIS_VERSION} | ||||||
|  | make | ||||||
|  | cd ../ | ||||||
|  | 
 | ||||||
|  | # Flink | ||||||
|  | wget https://archive.apache.org/dist/flink/flink-${FLINK_VERSION}/flink-${FLINK_VERSION}-bin-scala_2.11.tgz | ||||||
|  | tar -zxvf flink-${FLINK_VERSION}-bin-scala_2.11.tgz | ||||||
|  | rm flink-${FLINK_VERSION}-bin-scala_2.11.tgz | ||||||
|  | 
 | ||||||
|  | # Analytics Zoo | ||||||
|  | wget https://repo1.maven.org/maven2/com/intel/analytics/zoo/analytics-zoo-bigdl_$BIGDL_VERSION-spark_$SPARK_VERSION/$ANALYTICS_ZOO_VERSION/analytics-zoo-bigdl_$BIGDL_VERSION-spark_$SPARK_VERSION-$ANALYTICS_ZOO_VERSION-serving.jar | ||||||
|  | wget https://repo1.maven.org/maven2/com/intel/analytics/zoo/analytics-zoo-bigdl_$BIGDL_VERSION-spark_$SPARK_VERSION/$ANALYTICS_ZOO_VERSION/analytics-zoo-bigdl_$BIGDL_VERSION-spark_$SPARK_VERSION-$ANALYTICS_ZOO_VERSION-http.jar | ||||||
|  | 
 | ||||||
|  | # models | ||||||
|  | mkdir resnet50 && \ | ||||||
|  | cd resnet50 && \ | ||||||
|  | wget -c "https://sourceforge.net/projects/analytics-zoo/files/analytics-zoo-models/openvino/2018_R5/resnet_v1_50.bin/download" -O resnet_v1_50.bin && \ | ||||||
|  | wget -c "https://sourceforge.net/projects/analytics-zoo/files/analytics-zoo-models/openvino/2018_R5/resnet_v1_50.xml/download" -O resnet_v1_50.xml | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
							
								
								
									
										11
									
								
								demos/cluster_serving/push-image.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										11
									
								
								demos/cluster_serving/push-image.sh
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										35
									
								
								demos/cluster_serving/start-all.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										35
									
								
								demos/cluster_serving/start-all.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,35 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -x | ||||||
|  | 
 | ||||||
|  | REDIS_HOST=127.0.0.1 | ||||||
|  | REDIS_PORT=6379 | ||||||
|  | FLINK_TASK_MANAGER_IP=127.0.0.1 | ||||||
|  | FLINK_JOB_MANAGER_REST_PORT=8081 | ||||||
|  | FLINK_TASK_MANAGER_DATA_PORT=6124 | ||||||
|  | 
 | ||||||
|  | ./start-redis.sh & | ||||||
|  | echo "redis started" | ||||||
|  | 
 | ||||||
|  | ./start-flink-jobmanager.sh & | ||||||
|  | echo "flink-jobmanager started" | ||||||
|  | 
 | ||||||
|  | ./init-occlum-taskmanager.sh | ||||||
|  | echo "occlum flink taskmanager image built" | ||||||
|  | while ! nc -z $FLINK_TASK_MANAGER_IP $FLINK_JOB_MANAGER_REST_PORT; do | ||||||
|  |   sleep 1 | ||||||
|  | done | ||||||
|  | ./start-flink-taskmanager.sh & | ||||||
|  | echo "flink-taskmanager started" | ||||||
|  | 
 | ||||||
|  | while ! nc -z $REDIS_HOST $REDIS_PORT; do | ||||||
|  |   sleep 1 | ||||||
|  | done | ||||||
|  | ./start-http-frontend.sh & | ||||||
|  | echo "http-frontend started" | ||||||
|  | 
 | ||||||
|  | while ! nc -z $FLINK_TASK_MANAGER_IP $FLINK_TASK_MANAGER_DATA_PORT; do | ||||||
|  |   sleep 1 | ||||||
|  | done | ||||||
|  | ./start-cluster-serving-job.sh & | ||||||
|  | echo "cluster-serving-job started" | ||||||
|  | 
 | ||||||
							
								
								
									
										15
									
								
								demos/cluster_serving/start-cluster-serving-job.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										15
									
								
								demos/cluster_serving/start-cluster-serving-job.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,15 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | set -x | ||||||
|  | 
 | ||||||
|  | flink_home=$FLINK_HOME | ||||||
|  | flink_job_manager_ip=127.0.0.1 | ||||||
|  | flink_job_manager_port=8081 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | echo "### Launching Cluster Serving Job ###" | ||||||
|  | 
 | ||||||
|  | export FLINK_CONF_DIR=${flink_home}/conf && \ | ||||||
|  |     ${flink_home}/bin/flink run \ | ||||||
|  |     -c com.intel.analytics.zoo.serving.ClusterServing -p 1 -m $flink_job_manager_ip:$flink_job_manager_port \ | ||||||
|  |     analytics-zoo-bigdl_${BIGDL_VERSION}-spark_${SPARK_VERSION}-${ANALYTICS_ZOO_VERSION}-serving.jar | tee ./cluster-serving-job-sgx.log | ||||||
							
								
								
									
										32
									
								
								demos/cluster_serving/start-flink-jobmanager.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										32
									
								
								demos/cluster_serving/start-flink-jobmanager.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | set -x | ||||||
|  | 
 | ||||||
|  | core_num=$CORE_NUM | ||||||
|  | job_manager_host=127.0.0.1 | ||||||
|  | job_manager_rest_port=8081 | ||||||
|  | job_manager_rpc_port=6123 | ||||||
|  | flink_home=$FLINK_HOME | ||||||
|  | flink_version=$FLINK_VERSION | ||||||
|  | 
 | ||||||
|  | echo "### Launching Flink Jobmanager ###" | ||||||
|  | 
 | ||||||
|  | java \ | ||||||
|  |     -Xms5g \ | ||||||
|  |     -Xmx10g \ | ||||||
|  |     -XX:ActiveProcessorCount=${core_num} \ | ||||||
|  |     -Dorg.apache.flink.shaded.netty4.io.netty.tryReflectionSetAccessible=true \ | ||||||
|  |     -Dorg.apache.flink.shaded.netty4.io.netty.eventLoopThreads=${core_num} \ | ||||||
|  |     -Dcom.intel.analytics.zoo.shaded.io.netty.tryReflectionSetAccessible=true \ | ||||||
|  |     -Dlog.file=${flink_home}/log/flink-sgx-standalonesession-1-sgx-ICX-LCC.log \ | ||||||
|  |     -Dlog4j.configuration=file:${flink_home}/conf/log4j.properties \ | ||||||
|  |     -Dlogback.configurationFile=file:${flink_home}/conf/logback.xml \ | ||||||
|  |     -classpath ${flink_home}/lib/flink-table_2.11-${flink_version}.jar:${flink_home}/lib/flink-table-blink_2.11-${flink_version}.jar:${flink_home}/lib/log4j-1.2.17.jar:${flink_home}/lib/slf4j-log4j12-1.7.15.jar:${flink_home}/lib/flink-dist_2.11-${flink_version}.jar::: org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint \ | ||||||
|  |     --configDir ${flink_home}/conf \ | ||||||
|  |     -D rest.bind-address=${job_manager_host} \ | ||||||
|  |     -D rest.bind-port=${job_manager_rest_port} \ | ||||||
|  |     -D jobmanager.rpc.address=${job_manager_host} \ | ||||||
|  |     -D jobmanager.rpc.port=${job_manager_rpc_port} \ | ||||||
|  |     -D jobmanager.heap.size=5g \ | ||||||
|  |     --executionMode cluster | tee ./flink-jobmanager-sgx.log | ||||||
|  | 
 | ||||||
							
								
								
									
										71
									
								
								demos/cluster_serving/start-flink-taskmanager.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										71
									
								
								demos/cluster_serving/start-flink-taskmanager.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,71 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | BLUE='\033[1;34m' | ||||||
|  | NC='\033[0m' | ||||||
|  | conf_dir=conf | ||||||
|  | 
 | ||||||
|  | id=$([ -f "$pid" ] && echo $(wc -l < "$pid") || echo "0") | ||||||
|  | FLINK_LOG_PREFIX="/host/flink--$postfix-${id}" | ||||||
|  | log="${FLINK_LOG_PREFIX}.log" | ||||||
|  | out="./flink--$postfix-${id}.out" | ||||||
|  | 
 | ||||||
|  | core_num=1 | ||||||
|  | job_manager_host=127.0.0.1 | ||||||
|  | job_manager_rest_port=8081 | ||||||
|  | job_manager_rpc_port=6123 | ||||||
|  | 
 | ||||||
|  | task_manager_host=127.0.0.1 | ||||||
|  | task_manager_data_port=6124 | ||||||
|  | task_manager_rpc_port=6125 | ||||||
|  | task_manager_taskslots_num=1 | ||||||
|  | 
 | ||||||
|  | flink_home=$FLINK_HOME | ||||||
|  | flink_version=$FLINK_VERSION | ||||||
|  | 
 | ||||||
|  | run_taskmanager() { | ||||||
|  |     # enter occlum image | ||||||
|  |     cd flink | ||||||
|  | 
 | ||||||
|  |     #if conf_dir exists, use the new configurations. | ||||||
|  |     if [[ -d $conf_dir && "$(ls -A $conf_dir)" ]]; then | ||||||
|  |         cp -r $conf_dir/* image/opt/conf/ | ||||||
|  |         occlum build | ||||||
|  |     fi | ||||||
|  | 
 | ||||||
|  |     echo -e "${BLUE}occlum run JVM taskmanager${NC}" | ||||||
|  |     echo -e "${BLUE}logfile=$log${NC}" | ||||||
|  |     # start task manager in occlum | ||||||
|  |     occlum run /usr/lib/jvm/java-11-openjdk-amd64/bin/java \ | ||||||
|  |     -XX:+UseG1GC -Xmx1152m -Xms1152m -XX:MaxDirectMemorySize=512m -XX:MaxMetaspaceSize=256m \ | ||||||
|  |     -Dos.name=Linux \ | ||||||
|  |     -XX:ActiveProcessorCount=${core_num} \ | ||||||
|  |     -Dlog.file=$log \ | ||||||
|  |     -Dlog4j.configuration=file:/opt/conf/log4j.properties \ | ||||||
|  |     -Dlogback.configurationFile=file:/opt/conf/logback.xml \ | ||||||
|  |     -classpath /bin/lib/flink-table-blink_2.11-1.10.1.jar:/bin/lib/flink-table_2.11-1.10.1.jar:/bin/lib/log4j-1.2.17.jar:/bin/lib/slf4j-log4j12-1.7.15.jar:/bin/lib/flink-dist_2.11-1.10.1.jar org.apache.flink.runtime.taskexecutor.TaskManagerRunner \ | ||||||
|  |     -Dorg.apache.flink.shaded.netty4.io.netty.tryReflectionSetAccessible=true \ | ||||||
|  |     -Dorg.apache.flink.shaded.netty4.io.netty.eventLoopThreads=${core_num} \ | ||||||
|  |     -Dcom.intel.analytics.zoo.shaded.io.netty.tryReflectionSetAccessible=true \ | ||||||
|  |     --configDir /opt/conf \ | ||||||
|  |     -D rest.bind-address=${job_manager_host} \ | ||||||
|  |     -D rest.bind-port=${job_manager_rest_port} \ | ||||||
|  |     -D jobmanager.rpc.address=${job_manager_host} \ | ||||||
|  |     -D jobmanager.rpc.port=${job_manager_rpc_port} \ | ||||||
|  |     -D jobmanager.heap.size=5g \ | ||||||
|  |     -D taskmanager.host=${task_manager_host} \ | ||||||
|  |     -D taskmanager.data.port=${task_manager_data_port} \ | ||||||
|  |     -D taskmanager.rpc.port=${task_manager_rpc_port} \ | ||||||
|  |     -D taskmanager.numberOfTaskSlots=${task_manager_taskslots_num} \ | ||||||
|  |     -D taskmanager.cpu.cores=${core_num} \ | ||||||
|  |     -D taskmanager.memory.framework.off-heap.size=256mb \ | ||||||
|  |     -D taskmanager.memory.network.max=256mb \ | ||||||
|  |     -D taskmanager.memory.network.min=256mb \ | ||||||
|  |     -D taskmanager.memory.framework.heap.size=128mb \ | ||||||
|  |     -D taskmanager.memory.managed.size=800mb \ | ||||||
|  |     -D taskmanager.cpu.cores=1.0 \ | ||||||
|  |     -D taskmanager.memory.task.heap.size=1024mb \ | ||||||
|  |     -D taskmanager.memory.task.off-heap.size=0mb 2>&1 | tee $out & | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | run_taskmanager | ||||||
							
								
								
									
										24
									
								
								demos/cluster_serving/start-http-frontend.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										24
									
								
								demos/cluster_serving/start-http-frontend.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,24 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | 
 | ||||||
|  | set -x | ||||||
|  | 
 | ||||||
|  | echo "### Launching HTTP Frontend ###" | ||||||
|  | 
 | ||||||
|  | redis_host=127.0.0.1 | ||||||
|  | core_num=$CORE_NUM | ||||||
|  | 
 | ||||||
|  | java \ | ||||||
|  |     -Xms2g \ | ||||||
|  |     -Xmx8g \ | ||||||
|  |     -XX:ActiveProcessorCount=${core_num} \ | ||||||
|  |     -Dcom.intel.analytics.zoo.shaded.io.netty.tryReflectionSetAccessible=true \ | ||||||
|  |     -Dakka.http.host-connection-pool.max-connections=100 \ | ||||||
|  |     -Dakka.http.host-connection-pool.max-open-requests=128 \ | ||||||
|  |     -Dakka.actor.default-dispatcher.fork-join-executor.parallelism-min=100 \ | ||||||
|  |     -Dakka.actor.default-dispatcher.fork-join-executor.parallelism-max=120 \ | ||||||
|  |     -Dakka.actor.default-dispatcher.fork-join-executor.parallelism-factor=1 \ | ||||||
|  |     -jar analytics-zoo-bigdl_${BIGDL_VERSION}-spark_${SPARK_VERSION}-${ANALYTICS_ZOO_VERSION}-http.jar \ | ||||||
|  |     --redisHost "${redis_host}" \ | ||||||
|  |     --tokensPerSecond 30 \ | ||||||
|  |     --tokenBucketEnabled true \ | ||||||
|  |     --parallelism ${core_num} | tee ./http-frontend-sgx.log | ||||||
							
								
								
									
										8
									
								
								demos/cluster_serving/start-redis.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										8
									
								
								demos/cluster_serving/start-redis.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # set -x | ||||||
|  | 
 | ||||||
|  | echo "### Launching Redis ###" | ||||||
|  | REDIS_PORT=6379 | ||||||
|  | 
 | ||||||
|  | $REDIS_HOME/src/redis-server --port $REDIS_PORT \ | ||||||
|  |     --protected-mode no --maxmemory 10g | tee ./redis-sgx.log | ||||||
							
								
								
									
										12
									
								
								demos/cluster_serving/stop-all.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										12
									
								
								demos/cluster_serving/stop-all.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,12 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | #set -x | ||||||
|  | 
 | ||||||
|  | # Stop cluster serving | ||||||
|  | ${FLINK_HOME}/bin/flink list | grep RUNNING | awk '{print $4}' | xargs ${FLINK_HOME}/bin/flink cancel | ||||||
|  | ps -ef | grep http.jar | grep -v grep | awk '{print $2}' | xargs kill -9 | ||||||
|  | 
 | ||||||
|  | # Stop Flink | ||||||
|  | ps -ef | grep -e TaskManagerRunner -e StandaloneSessionClusterEntrypoint | grep -v grep | awk '{print $2}' | xargs kill -9 | ||||||
|  | 
 | ||||||
|  | # Stop Redis | ||||||
|  | ${REDIS_HOME}/src/redis-cli shutdown | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user