30万奖金等你拿!Apache Flink 极客挑战赛入门指南(附Demo)

简介: 由于本次大赛既要用到大数据技术,又要用到 AI 技术,这使得只有单一技术背景的同学在搭建本地调试环境时遇到了不少问题。所以我把自己配置本地环境的流程和需要注意的地方记录下来,以供各位参赛同学参考,希望大家能将自己的精力更多集中在算法开发和迭代上。

最近在参加第二届 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

1.jpg

  • 运行 java -version 测试是否安装成功

Python 3.7

如果系统中的 Python 恰好为 3.7,直接使用系统中的 Python 即可。

如果系统默认 Python 不是 3.7,则需要搭建自己的 Python 环境。我这里用的是 Anaconda。

  1. create -n flink python=3.7 -y
  • 激活虚拟环境:
  1. activate flink
  • 运行 which python 测试是否激活成功

2.jpg

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

3.jpg

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

4.jpg

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

5.jpg

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

6.jpg

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

7.jpg

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

8.jpg

■ 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

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 是不兼容的。

9.jpg

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

总结

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

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
11月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
1629 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
777 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
3670 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
消息中间件 存储 Kafka
Apache Flink错误处理实战手册:2年生产环境调试经验总结
本文由 Ververica 客户成功经理 Naci Simsek 撰写,基于其在多个行业 Flink 项目中的实战经验,总结了 Apache Flink 生产环境中常见的三大典型问题及其解决方案。内容涵盖 Kafka 连接器迁移导致的状态管理问题、任务槽负载不均问题以及 Kryo 序列化引发的性能陷阱,旨在帮助企业开发者避免常见误区,提升实时流处理系统的稳定性与性能。
958 0
Apache Flink错误处理实战手册:2年生产环境调试经验总结
|
运维 数据处理 数据安全/隐私保护
阿里云实时计算Flink版测评报告
该测评报告详细介绍了阿里云实时计算Flink版在用户行为分析与标签画像中的应用实践,展示了其毫秒级的数据处理能力和高效的开发流程。报告还全面评测了该服务在稳定性、性能、开发运维及安全性方面的卓越表现,并对比自建Flink集群的优势。最后,报告评估了其成本效益,强调了其灵活扩展性和高投资回报率,适合各类实时数据处理需求。
|
存储 分布式计算 数据处理
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
阿里云实时计算Flink团队,全球领先的流计算引擎缔造者,支撑双11万亿级数据处理,推动Apache Flink技术发展。现招募Flink执行引擎、存储引擎、数据通道、平台管控及产品经理人才,地点覆盖北京、杭州、上海。技术深度参与开源核心,打造企业级实时计算解决方案,助力全球企业实现毫秒洞察。
1051 0
「48小时极速反馈」阿里云实时计算Flink广招天下英雄
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
4842 74
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
zdl
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
908 56
|
人工智能 Apache 流计算
Flink Forward Asia 2024 上海站|探索实时计算新边界
Flink Forward Asia 2024 即将盛大开幕!11 月 29 至 30 日在上海举行,大会聚焦 Apache Flink 技术演进与未来规划,涵盖流式湖仓、流批一体、Data+AI 融合等前沿话题,提供近百场专业演讲。立即报名,共襄盛举!官网:https://asia.flink-forward.org/shanghai-2024/
1777 33
Flink Forward Asia 2024 上海站|探索实时计算新边界

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多