30 万奖金等你拿!Apache Flink 极客挑战赛入门指南(附 Demo)
最近在参加第二届 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
配置环境变量:
运行 java -version 测试是否安装成功
Python 3.7
如果系统中的 Python 恰好为 3.7,直接使用系统中的 Python 即可。
如果系统默认 Python 不是 3.7,则需要搭建自己的 Python 环境。我这里用的是 Anaconda。
安装 Anaconda:
创建一个名为 Flink 的 Python 虚拟环境:
激活虚拟环境:
运行 which python 测试是否激活成功
Flink 1.11.0
下载压缩包并解压
配置环境变量
根据本机的资源(CPU、内存大小)修改 flink-1.11.0/conf/flink-conf.yaml
测试
Start: 运行 start-cluster.sh
Stop: 运行 stop-cluster.sh
Pyflink 1.11.0
如果下载速度太慢,可以考虑使用清华源或者阿里源等。
使用清华源安装:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple apache-flink==1.11.0
Kafka 2.x
下载压缩包并解压
配置环境变量
测试
启动 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
Pyproxima
■ Redis 5.0.5
安装
选做:make test 运行 redis 的单元测试
配置环境变量
测试:运行 redis-server
■ Flink 1.11.0
见上文「Flink 1.11.0」。
■ cluster serving
安装
修改 config.yaml
配置环境变量
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/competition/entrance/531800/information
配置环境变量
修改 source.yaml
修改 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路径
启动依赖的服务
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,再执行
python/data/gaohongjie1/projects/tianchi_ai_flow/package/python_codes/tianchi_main.py
总结
本文主要记录了我搭建本地调试环境的流程,介绍了如何跑通 Demo。希望本文对大家能有所帮助,让大家早日投入到算法的开发和迭代中去。
评论