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