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
- 配置环境变量:
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/anaconda/install/linux/ - 创建一个名为 Flink 的 Python 虚拟环境:
- create -n flink python=3.7 -y
- 激活虚拟环境:
- 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.edu.cn/simple 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/competition/entrance/531800/information - 配置环境变量
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 '' % 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。希望本文对大家能有所帮助,让大家早日投入到算法的开发和迭代中去。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JDBC+MySQL实战
前言 hello我是bigsai,今天咱们进行JDBC+MySQL实战,非常适合初入门的小伙伴打开新的世界。实现一个增删改查(curd)的例子。有用的话先点赞再观看、帅哥靓女养成好习惯!没用再把小赞赞回收也不迟嘿嘿 在这个案例进行之前,你要确保自己电脑上拥有MySQL和IDEA编译器,另外还要安装MySQL数据库连接管理工具Navicat。方能进行以下的操作。 如果以前没见过或者使用过也不要紧,本课程提供傻瓜式教学你只需跟着我的要求来包成功包会。 通过本翩你可以掌握以下内容: MySQL数据库的创建 JDBC+MySQL项目的创建 JDBC成功对MySQL增删改查 案例分析 本次案例到底是个什么结果呢?本案例实现一个学生信息的管理,即学生个人信息的增删改查。 核心思路拆解 我们该如何设计这个项目呢? 别急别急,听我慢慢说道。对于本案例的实战,旨在实现用Java语言(JDBC)操作MySQL,核心的主轴是MySQL的数据,所以我们从MySQL为起始点入手,整个案例实现的流程大致可以分为: 分析设计需求、创建MySQL数据库和表 创建Java项目,添加JDBC以及Junit单元测试的依赖 ...
- 下一篇
MySQL主从复制读写分离,看这篇就够了!
思维导图 微信公众号已开启:【java技术爱好者】,还没关注的记得关注哦~ 文章已收录到我的Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary 前言 在很多项目,特别是互联网项目,在使用MySQL时都会采用主从复制、读写分离的架构。 为什么要采用主从复制读写分离的架构?如何实现?有什么缺点?让我们带着这些问题开始这段学习之旅吧! 为什么使用主从复制、读写分离 主从复制、读写分离一般是一起使用的。目的很简单,就是为了提高数据库的并发性能。你想,假设是单机,读写都在一台MySQL上面完成,性能肯定不高。如果有三台MySQL,一台mater只负责写操作,两台salve只负责读操作,性能不就能大大提高了吗? 所以主从复制、读写分离就是为了数据库能支持更大的并发。 随着业务量的扩展、如果是单机部署的MySQL,会导致I/O频率过高。采用主从复制、读写分离可以提高数据库的可用性。 主从复制的原理 ①当Master节点进行insert、update、delete操作时,会按顺序写入到binlog中。 ②salve从库连接maste...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装