关于flink:30万奖金等你拿Apache-Flink-极客挑战赛入门指南附Demo

3次阅读

共计 5108 个字符,预计需要花费 13 分钟才能阅读完成。

最近在加入第二届 Apache Flink 极客挑战赛,较量要求各队利用大数据 + AI 技术来帮忙解决疫情防控的挑战,官网提供的计算框架是 Apache Flink + Analytics Zoo。

因为本次大赛既要用到大数据技术,又要用到 AI 技术,这使得只有繁多技术背景的同学在搭建本地调试环境时遇到了不少问题。所以我把本人配置本地环境的流程和须要留神的中央记录下来,以供各位参赛同学参考,心愿大家能将本人的精力更多集中在算法开发和迭代上。

注:心愿大家在参考环境搭建流程时,不要间接照搬照抄;多了解其中的原理,针对本人的机器,要能做出一些细节上的调整。

环境搭建

Linux 18.04

官网要求的操作系统是 Linux 18.04,我本地配置环境用的是 Linux 16.04,亲测也能胜利。

注:千万不要在 macOS 或者 windows 上间接配置环境,因为本次较量依赖的 pyproxima 只提供了 linux 的安装包。如果只有 macOS 或者 windows,能够搭一个 linux 18.04 的虚拟机,或者应用 docker。

Java 1.8+

倡议装置 java1.8 (java 8)。

java 1.8+ 包含 java 8,java 9,······,java 14,我开始装的是 java 14,呈现了 kafka 2.3 不能启动等异样,最初换成了 java 8。

  • 从 java 官网下载 jdk-8u261-linux-x64.tar.gz
  • 解压下面下载的压缩包:tar xzf jdk-8u261-linux-x64.tar.gz
  • 配置环境变量:
export JAVA_HOME=/data/gaohongjie1/usr/local/jdk1.8.0_261  # jdk-8u261-linux-x64.tar.gz 解压后的门路
export PATH=$JAVA_HOME/bin:$PATH
  • 运行 java -version 测试是否装置胜利

Python 3.7

如果零碎中的 Python 恰好为 3.7,间接应用零碎中的 Python 即可。

如果零碎默认 Python 不是 3.7,则须要搭建本人的 Python 环境。我这里用的是 Anaconda。

  • 装置 Anaconda:https://docs.anaconda.com/ana…
  • 创立一个名为 Flink 的 Python 虚拟环境:conda create -n flink python=3.7 -y
  • 激活虚拟环境:conda activate flink
  • 运行 which python 测试是否激活胜利

Flink 1.11.0

  • 下载压缩包并解压
wget https://archive.apache.org/dist/flink/flink-1.11.0/flink-1.11.0-bin-scala_2.11.tgz
tar xzf flink-1.11.0-bin-scala_2.11.tgz
  • 配置环境变量
export FLINK_HOME=/data/gaohongjie1/usr/local/flink-1.11.0
export PATH=$PATH:$FLINK_HOME/bin
  • 依据本机的资源(CPU、内存大小)批改 flink-1.11.0/conf/flink-conf.yaml
taskmanager.numberOfTaskSlots: 120
jobmanager.memory.process.size: 4096m
taskmanager.memory.process.size: 409600m 
taskmanager.memory.task.off-heap.size: 204800m
  • 测试

    • Start: 运行 start-cluster.sh
    • Stop: 运行 stop-cluster.sh

Pyflink 1.11.0

pip install apache-flink==1.11.0

如果下载速度太慢,能够思考应用清华源或者阿里源等。应用清华源装置:
pip install -i https://pypi.tuna.tsinghua.ed… apache-flink==1.11.0

Kafka 2.x

  • 下载压缩包并解压
wget https://archive.apache.org/dist/kafka/2.3.0/kafka_2.11-2.3.0.tgz
tar xzf kafka_2.11-2.3.0.tgz
  • 配置环境变量
export KAFKA_HOME=/data/gaohongjie1/usr/local/kafka_2.11-2.3.0
export PATH=$PATH:$KAFKA_HOME/bin
  • 测试

    • 启动 zookeeper
    • 选做:批改 kafka_2.11-2.3.0/config/zookeeper.properties 中的 dataDir
    • 运行 zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties

  • 启动 Kafka

    • 不要敞开 Zookeeper,另开一个 terminal 进行以下操作
    • 选做:批改 kafka_2.11-2.3.0/config/server.properties 中的 log.dirs
    • 运行:
kafka-server-start.sh $KAFKA_HOME/config/server.properties

AI Flow

wget https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531800/ai_flow/ai_flow-0.1-py3-none-any.whl
pip install ai_flow-0.1-py3-none-any.whl 
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ai_flow-0.1-py3-none-any.whl

Pyproxima

wget https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531800/proxima-tianchi-master-668a0a87cb2a4aa1c68443b1ab05ee5a80008cb4.zip

unzip proxima-tianchi-master-668a0a87cb2a4aa1c68443b1ab05ee5a80008cb4.zip

pip install proxima-tianchi-master-668a0a87cb2a4aa1c68443b1ab05ee5a80008cb4/python/pyproxima2-2.2.0_lite-cp37-cp37m-linux_x86_64.whl

■ Redis 5.0.5

  • 装置
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make

  • 选做:make test 运行 redis 的单元测试

  • 配置环境变量
export REDIS_HOME=/data/gaohongjie1/usr/local/redis-5.0.5
export PATH=$PATH:$REDIS_HOME/src
  • 测试:运行 redis-server

■ Flink 1.11.0

见上文「Flink 1.11.0」。

■ cluster serving

  • 装置
wget https://tianchi-competition.oss-cn-hangzhou.aliyuncs.com/531800/analytics_zoo_serving-0.9.0.dev0-py3-none-any.whl
pip install analytics_zoo_serving-0.9.0.dev0-py3-none-any.whl 
# pip install -i https://pypi.tuna.tsinghua.edu.cn/simple analytics_zoo_serving-0.9.0.dev0-py3-none-any.whl
mkdir cluster-serving
cd cluster-serving
cluster-serving-init # 这里会下载两个 jar 文件,生成 config.yaml
  • 批改 config.yaml
# 批改 cluster-serving/config.yaml
model:
    path: /data/gaohongjie1/projects/tianchi-flink/package/python_codes/model
  • 配置环境变量
export CS_PATH=/data/gaohongjie1/usr/local/cluster-serving
export SERVING_HTTP_PATH=$CS_PATH/analytics-zoo-bigdl_0.10.0-spark_2.4.3-0.9.0-20200812.210515-69-http.jar
export CLUSTER_SERVING_PATH=/tmp/cluster_serving

Kafka-python

pip install kafka-python

运行 Demo

  • 下载官网提供的 demo 我的 demo 寄存门路:/data/gaohongjie1/projects/tianchi_ai_flow)
  • 下载数据集 train_data.csv 和 label_file.csv 文件到 data_set 目录(/data/gaohongjie1/projects/tianchi_ai_flow/data_set)
    https://tianchi.aliyun.com/co… 
  • 配置环境变量
export PYTHONPATH=/data/gaohongjie1/projects/tianchi_ai_flow/package/python_codes
export ENV_HOME=/data/gaohongjie1/projects/tianchi_ai_flow
export TASK_ID=000
  • 批改 source.yaml
dataset_uri: /data/gaohongjie1/projects/tianchi_ai_flow/data_set/second_test_data.csv
  • 批改 demo 代码

    • tianchi_main.py: job_1_cluster_serving_channel = af.cluster_serving(model_info=train_model_meta, parallelism=4)
    • tianchi_executor.py: stream_env.set_parallelism(20)
    • demo 中呈现的所有 /usr/bin/python3 都改成本人的 python 门路
  • 启动依赖的服务
redis-server --daemonize yes
start-cluster.sh
zookeeper-server-start.sh -daemon $KAFKA_HOME/config/zookeeper.properties
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
  • python /data/gaohongjie1/projects/tianchi_ai_flow/ai_flow_master.py
  • python /data/gaohongjie1/projects/tianchi_ai_flow/kafka-source.py

    • 这里可能会报错,报错信息蕴含 return ‘<SimpleProducer batch=%s>’ % self.async 字样。这是因为后面在执行 pip install ai_flow-0.1-py3-none-any.whl 的时候,AI Flow 的依赖包有 kafka-1.3.5。而 kafka-1.3.5 与 python 3.7 是不兼容的。

  • 解决方案:先执行 pip uninstall kafka kafka-python,再执行 pip install kafka-python
  • python/data/gaohongjie1/projects/tianchi_ai_flow/package/python_codes/tianchi_main.py

总结

本文次要记录了我搭建本地调试环境的流程,介绍了如何跑通 Demo。心愿本文对大家能有所帮忙,让大家早日投入到算法的开发和迭代中去。

正文完
 0