Add the flink demo
Signed-off-by: yuanwu <yuan.wu@intel.com>
This commit is contained in:
		
							parent
							
								
									d1edb0e218
								
							
						
					
					
						commit
						dcd673615d
					
				
							
								
								
									
										34
									
								
								.github/workflows/demo_test.yml
									
									
									
									
										vendored
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										34
									
								
								.github/workflows/demo_test.yml
									
									
									
									
										vendored
									
									
								
							| @ -416,3 +416,37 @@ jobs: | |||||||
| 
 | 
 | ||||||
|     - name: Run redis benchmark |     - name: Run redis benchmark | ||||||
|       run: docker exec redis_support_test bash -c "cd /root/occlum/demos/redis; SGX_MODE=SIM ./benchmark_glibc.sh" |       run: docker exec redis_support_test bash -c "cd /root/occlum/demos/redis; SGX_MODE=SIM ./benchmark_glibc.sh" | ||||||
|  | 
 | ||||||
|  |   flink_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=flink_test -v $GITHUB_WORKSPACE:/root/occlum occlum/occlum:${{ env.OCCLUM_VERSION }}-ubuntu18.04 | ||||||
|  | 
 | ||||||
|  |     - name: Build dependencies | ||||||
|  |       run: docker exec flink_test bash -c "cd /root/occlum; make submodule" | ||||||
|  | 
 | ||||||
|  |     - name: Make install | ||||||
|  |       run: docker exec flink_test bash -c "cd /root/occlum; OCCLUM_RELEASE_BUILD=y make install" | ||||||
|  | 
 | ||||||
|  |     - name: Download flink | ||||||
|  |       run: docker exec flink_test bash -c "cd /root/occlum/demos/flink && ./download_flink.sh" | ||||||
|  | 
 | ||||||
|  |     - name: Run jobmanager on host | ||||||
|  |       run: docker exec flink_test bash -c "cd /root/occlum/demos/flink && SGX_MODE=SIM ./run_flink_jobmanager_on_host.sh" | ||||||
|  | 
 | ||||||
|  |     - name: Run flink taskmanager | ||||||
|  |       run: docker exec flink_test bash -c "cd /root/occlum/demos/flink && SGX_MODE=SIM ./run_flink_on_occlum_glibc.sh tm" | ||||||
|  | 
 | ||||||
|  |     - name: Run flink task | ||||||
|  |       run: | | ||||||
|  |         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" | ||||||
|  | 
 | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								demos/flink/README.txt
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										8
									
								
								demos/flink/README.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,8 @@ | |||||||
|  | 1. Run the flink jobmanager | ||||||
|  |     ./run_flink_jobmanager_on_host.sh | ||||||
|  | 2. Run the taskManager | ||||||
|  |     ./run_flink_on_occlum_glibc.sh tm | ||||||
|  | 3. Run flink jobs example | ||||||
|  |     ./run_flink_on_occlum.sh task | ||||||
|  | 
 | ||||||
|  | Note: If running the jobmanager in docker, please export the port 8081 and 6123 | ||||||
							
								
								
									
										4
									
								
								demos/flink/download_flink.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										4
									
								
								demos/flink/download_flink.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | apt-get update | ||||||
|  | apt-get install -y openjdk-11-jdk | ||||||
|  | wget https://archive.apache.org/dist/flink/flink-1.10.1/flink-1.10.1-bin-scala_2.11.tgz | ||||||
|  | tar -xvzf flink-1.10.1-bin-scala_2.11.tgz | ||||||
							
								
								
									
										4
									
								
								demos/flink/hosts
									
									
									
									
									
										Normal file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										4
									
								
								demos/flink/hosts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | |||||||
|  | 127.0.0.1 occlum-node | ||||||
|  | 127.0.0.1 localhost | ||||||
|  | ::1 occlum-node | ||||||
|  | ::1 localhost | ||||||
							
								
								
									
										3
									
								
								demos/flink/run_flink_jobmanager_on_host.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										3
									
								
								demos/flink/run_flink_jobmanager_on_host.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,3 @@ | |||||||
|  | export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/ | ||||||
|  | ./flink-1.10.1/bin/jobmanager.sh start | ||||||
|  | echo -e "${BLUE}Flink jobmanager${NC}" | ||||||
							
								
								
									
										83
									
								
								demos/flink/run_flink_on_occlum_glibc.sh
									
									
									
									
									
										Executable file
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										83
									
								
								demos/flink/run_flink_on_occlum_glibc.sh
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,83 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | set -e | ||||||
|  | 
 | ||||||
|  | BLUE='\033[1;34m' | ||||||
|  | NC='\033[0m' | ||||||
|  | occlum_glibc=/opt/occlum/glibc/lib/ | ||||||
|  | 
 | ||||||
|  | init_instance() { | ||||||
|  |     # Init Occlum instance | ||||||
|  |     postfix=$1 | ||||||
|  |     FLINK_LOG_PREFIX="/host/flink--$postfix-${id}" | ||||||
|  |     log="${FLINK_LOG_PREFIX}.log" | ||||||
|  |     out="./flink--$postfix-${id}.out" | ||||||
|  | 
 | ||||||
|  |     rm -rf occlum_instance_$postfix && mkdir occlum_instance_$postfix | ||||||
|  |     cd occlum_instance_$postfix | ||||||
|  |     occlum init | ||||||
|  |     new_json="$(jq '.resource_limits.user_space_size = "5500MB" | | ||||||
|  |         .resource_limits.max_num_of_threads = 64 | | ||||||
|  |         .process.default_heap_size = "128MB" | | ||||||
|  |         .resource_limits.kernel_space_heap_size="64MB" | | ||||||
|  |         .process.default_mmap_size = "5000MB" | | ||||||
|  |         .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" ]' 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 | ||||||
|  |     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-1.10.1/* image/bin/ | ||||||
|  |     cp -rf ../hosts image/etc/ | ||||||
|  |     occlum build | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | run_taskmanager() { | ||||||
|  |     init_instance taskmanager | ||||||
|  |     build_flink | ||||||
|  |     echo -e "${BLUE}occlum run JVM taskmanager${NC}" | ||||||
|  |     echo -e "${BLUE}logfile=$log${NC}" | ||||||
|  |     occlum run /usr/lib/jvm/java-11-openjdk-amd64/bin/java \ | ||||||
|  | 	-Xmx800m -XX:-UseCompressedOops -XX:MaxMetaspaceSize=256m \ | ||||||
|  | 	-XX:ActiveProcessorCount=2 \ | ||||||
|  | 	-Dlog.file=$log \ | ||||||
|  | 	-Dos.name=Linux \ | ||||||
|  | 	-Dlog4j.configuration=file:/bin/conf/log4j.properties \ | ||||||
|  | 	-Dlogback.configurationFile=file:/bin/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 \ | ||||||
|  | 	--configDir /bin/conf \ | ||||||
|  | 	-D taskmanager.memory.network.max=64mb \ | ||||||
|  | 	-D taskmanager.memory.network.min=64mb \ | ||||||
|  | 	-D taskmanager.memory.managed.size=128mb \ | ||||||
|  | 	-D taskmanager.cpu.cores=1.0 \ | ||||||
|  | 	-D taskmanager.memory.task.heap.size=256mb \ | ||||||
|  |     & | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | run_task() { | ||||||
|  |      | ||||||
|  |     export FLINK_CONF_DIR=$PWD/flink-1.10.1/conf && \ | ||||||
|  |         ./flink-1.10.1/bin/flink run ./flink-1.10.1/examples/streaming/WordCount.jar | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | id=$([ -f "$pid" ] && echo $(wc -l < "$pid") || echo "0") | ||||||
|  | 
 | ||||||
|  | arg=$1 | ||||||
|  | case "$arg" in | ||||||
|  |     tm) | ||||||
|  |         run_taskmanager | ||||||
|  | 	cd ../ | ||||||
|  |         ;; | ||||||
|  |     task) | ||||||
|  |         run_task | ||||||
|  | 	cd ../ | ||||||
|  |         ;; | ||||||
|  | esac | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user