Apache Flink 1.9.0 为什么将支持 Python API ?

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 众所周知,Apache Flink(以下简称 Flink)的 Runtime 是用 Java 编写的,而即将发布的 Apache Flink 1.9.0 版本则会开启新的 ML 接口和新的 flink-python 模块,Flink 为什么要增加对 Python 的支持,想必大家一定好奇。

作者:孙金城(金竹)

本文目录:
1.最流行的编程语言
2.互联网最火热的领域
2.1大数据时代,数据量与日俱增
2.2数据的价值来源于数据分析
2.3数据价值最大化,时效性
3.阿尔法与人工智能
4.总结

众所周知,Apache Flink(以下简称 Flink)的 Runtime 是用 Java 编写的,而即将发布的 Apache Flink 1.9.0 版本则会开启新的 ML 接口和新的 flink-python 模块,Flink 为什么要增加对 Python 的支持,想必大家一定好奇。

也许大家都很清楚,目前很多著名的开源项目都支持 Python,比如 Beam,Spark,Kafka 等,Flink 自然也需要增加对 Python 的支持,这个角度分析也许很好,但我们想想为啥这些非常火热的项目都纷纷支持 Python 呢?Python 语言有怎样的“魔力”让这些著名的项目都青睐于他?我们看一下统计数据。

1.最流行的编程语言

行业分析公司 RedMonk 最新的最受欢迎的语言排名数据如下:

image

上图从 Github 和 StackOverflow 两个维度进行分析的前十名如下:

  • JavaScript
  • Java
  • Python
  • PHP
  • C++
  • C#
  • CSS
  • Ruby
  • C
  • TypeScript

Pytnon 名列第三,目前也非常流行的 R 和 Go 语言排在了 15 和 16 名。这个很客观的排名足以证明 Python 的受众是多么的庞大,任何项目对 Python 的支持就是在无形的扩大项目的受众用户!

2.互联网最火热的领域

就目前而言互联网最热的领域应该是大数据计算,以前单机的计算时代已经过去了,单机处理能力的提高速度远远落后于数据的与日俱增的速度,以下几方面将分析为何大数据时代最炽热的互联网领域是大数据计算。

2.1 大数据时代,数据量与日俱增

随着云计算、物联网、人工智能等信息技术的快速发展,数据量呈现几何级增长,我们先看一份预测数据,全球数据总量在短暂的 10 年时间会由 16.1 ZB增长到 163 ZB,数据量的快速增长已经远远超越单个计算机存储和处理能力,如下:

image

上图我们数据量的单位是 ZB,我们简单介绍一下数据量的统计单位,基本单位是 bit,按顺序给出所有单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。他们之间的转换关系是:

  • 1 Byte =8 bit
  • 1 KB = 1,024 Bytes
  • 1 MB = 1,024 KB
  • 1 GB = 1,024 MB
  • 1 TB = 1,024 GB
  • 1 PB = 1,024 TB
  • 1 EB = 1,024 PB
  • 1 ZB = 1,024 EB
  • 1 YB = 1,024 ZB
  • 1 BB = 1,024 YB
  • 1 NB = 1,024 BB
  • 1 DB = 1,024 NB

看到上面的数据量也许我们会质疑全球数据真的有这么恐怖吗,数据都从何而来? 其实我看到这个数据也深表质疑,但是仔细查阅了一下资料,发现全球数据的确在快速的增长着,比如 Facebook 社交平台每天有几百亿,上千亿的照片数据,纽约证券交易每天有几 TB 的交易数据,再说说刚刚发生的阿里巴巴 2018 年双 11 数据,从交易额上创造了 2135 亿的奇迹,从数据量上看仅仅是阿里巴巴内部的监控日志处理看就达到了 162 GB/秒。所以阿里巴巴为代表的互联网行业,也促使了数据量的急速增长,同样以阿里巴巴双 11 近 10 年来的成交额来用数字证明数据的增长,如下:

image

2.2 数据的价值来源于数据分析

如何让大数据产生价值呢?毋庸置疑,对大数据进行统计分析,让统计分析的结果帮助我们进行决策。比如推荐系统,我们可以根据一个用户长期的购买习惯,购买记录来分析其兴趣爱好,进而可以准确的进行有效推荐。那么面对上面的海量数据,在一台计算机上无法处理,那么我们如何在有限的时间内对全部数据进行统计分析呢?提及这个问题,我们不得不感谢 Google 发布的三大论文:

  • GFS - 2003年,Google 发布 Google File System 论文,这是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。
  • MapReduce - 2004 年,Google 发布了 MapReduce 论文,论文描述了大数据的分布式计算方式,主要思想是将任务分解然后在多台处理能力较弱的计算节点中同时处理,然后将结果合并从而完成大数据处理。MapReduce 是针对分布式并行计算的一套编程模型,如下图所示:

image

  • BigTable - 2006 年,Google 发布了 BigTable 论文,是一款典型是 NoSQL 分布式数据库。

受益于 Google 的三大论文,Apache 开源社区迅速开发了 Hadoop 生态系统,HDFS,MapReduce 编程模型,NoSQL 数据库 HBase。并很快得到了全球学术界和工业界的普遍关注,并得到推广和普及应用。其中阿里巴巴在 2008 年就启动了基于 Hadoop 的云梯项目,Hadoop 就成为了阿里巴巴分布式计算的核心技术体系,并在 2010 年就达到了千台机器的集群,Hadoop在阿里巴巴的集群发展如下:

image

但利用 Hadoop 进行 MapReduce 的开发,需要开发人员精通 Java 语言,并要对 MapReduce 的运行原理有一定的了解,这样在一定程度上提高了 MapReduce 的开发门槛,所以在开源社区又不断涌现了一些为了简化 MapReduce 开发的开源框架,其中 Hive 就是典型的代表。HSQL 可以让用户以类 SQL 的方式描述 MapReduce 计算,比如原本需要几十行,甚至上百行才能完成的 wordCount,用户一条 SQL语句就能完成了,这样极大的降低了 MapReduce 的开发门槛。这样 Hadoop 技术生态不断发展,基于 Hadoop 的分布式的大数据计算逐渐普及在业界家喻户晓!

2.3 数据价值最大化,时效性

每一条数据都是一条信息,信息的时效性是指从信息源发送信息后经过接收、加工、传递、利用的时间间隔及其效率。时间间隔越短,时效性越强。一般时效性越强,信息所带来的价值越大,比如一个偏好推荐场景,用户在购买了一个“蒸箱”,如果能在秒级时间间隔给用户推荐一个“烤箱”的优惠产品,那么用户购买“烤箱”的概率会很高,那么在1天之后根据用户购买“蒸箱”的数据,分析出用户可能需要购买“烤箱”,那么我想这条推荐信息被用户采纳的可能性将大大降低。基于这样数据时效性问题,也暴露了 Hadoop 批量计算的弊端,就是实时性不高。基于这样的时代需求,典型的实时计算平台也应时而生,2009 年 Spark 诞生于 UCBerkeley 的 AMP 实验室, 2010 年 Storm 的核心概念 BackType 被 Nathan 提出。Flink 也以一个研究性的项目于 2010 年开始于德国柏林。

3.阿尔法与人工智能

在 2016 谷歌阿尔法围棋以 4:1 战胜围棋世界冠军、职业九段棋手李世石之后,人们逐渐用新的眼光审视让深度学习,而且掀起了人工智能的“狂热”。百度百科对人工智能(Artificial Intelligence),英文缩写为 AI 的定义是: 人工智能是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新技术科学。

image

而机器学习是进行人工智能的一种方法或者工具。机器学习在以 Spark,Flink 为首的大数据技术平台中具有较高的地位,尤其 Spark 近些年在 ML 方面做了巨大的努力,同时 PySpark 集成了很多优秀的机器学习类库,如典型的 Pandas,在这方面远远超过了 Flink,所以 Flink 正面面对自己的不足,在 Flink 1.9 中开启了新的 ML 接口和新的 flink-python 模块!

那么机器学习的重要和 Python 又有什么关系?我们看一下统计数据,看什么语言是最流行的机器学习语言。

IBM 的数据科学家 Jean-Francois Puget 曾经做过一个有趣的分析。他爬取了著名的求职网站 indeed 上雇主的岗位要求变动趋势,来评估当下市场上最受欢迎的岗位语言。其中当他单独搜索”machine learning”时候,也可以得到一个近似的结果:

image

其结构发现 Python 是与热的”machine learning”,虽然这是 2016 年的调查,但是也足以证明 Python 在”machine learning”方面的地位,同时上面我们提到的 RedMonk 的统计数据也足以证明这一点!

不仅仅是各种调查,我们也可以从 Python 的特点和现有的 Python 生态来说说为什么 Python 是机器学习的最好语言。

Python 是一种面向对象的解释型程序语言,由荷兰人(Guido van Rossum)于 1989 年发明,并于 1991 年发布了第一个版。Python 作为解释型语言,虽然跑得比谁都慢,但 Python 设计者的哲学是“用一种方法并且只有一种方法来做一件事”。在开发新的 Python 语法时,如果面临多种选择,Python 开发者一般会选择明确的没有或者很少有歧义的语法。简单易学的特点促使了 Python 有庞大的用户群体,进而很多机器学习的类库也是由 Python 开发的,比如:NumPy、SciPy 和结构化数据操作可以通过 Pandas 等等。所以 Python 这种丰富的生态系统为机器学习提供了一定程度的便利性,也必然成为了最受欢迎的机器学习语言!

4.总结

本篇重点描述了 Apache Flink 为什么需要支持 Python API。以实际数字说明目前我们处于一个大数据时代,数据的价值要依靠大数据分析,而由于数据的时效性的重要性而催生了著名的 Apache Flink 流式计算平台。

目前在大数据计算时代,AI 是炙手可热的发展方向,机器学习是 AI 的重要手段之一,而恰恰由于语言的特点和生态的优势,Python 成为了机器学习最重要的语言,进而表明了 Apache Flink 着手发力 Flink API 的动机!所谓时势造英雄,Apache Flink Python API 是时代的产物,是水顺自然而得之的必然!

Tips:

本文节选自金竹的博客【Apache Flink 说道系列】,点击「阅读原文」可查看作者特色说道系列原版文章~

/ Apache Flink 极客挑战赛,10 万奖金等你拿 /

详情链接:https://tianchi.aliyun.com/markets/tianchi/flink2019

image

相关实践学习
基于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日以线上峰会的形式与大家见面。
目录
相关文章
uniapp组件库uview1的u-button的问题,u-button多次点击只触发事件一次
uniapp组件库uview1的u-button的问题,u-button多次点击只触发事件一次
627 0
|
消息中间件 存储 Kafka
Kafka日志处理:深入了解偏移量查找与切分文件
**摘要:** 本文介绍了如何在Kafka中查找偏移量为23的消息,涉及ConcurrentSkipListMap的查询、索引文件的二分查找及日志分段的物理位置搜索。还探讨了Kafka日志分段的切分策略,包括大小、时间、索引大小和偏移量达到特定阈值时的切分条件。理解这些对于优化Kafka的性能和管理日志至关重要。
495 2
|
11月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
352 3
|
SQL 关系型数据库 MySQL
MySQL数据库——视图-检查选项(cascaded、local)
MySQL数据库——视图-检查选项(cascaded、local)
683 0
|
负载均衡 监控 网络协议
使用haproxy实现负载均衡集群
【4月更文挑战第14天】HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,快速并且可靠的一种解决方案。
671 1
|
网络协议 应用服务中间件 Linux
【Nginx】在线安装与离线安装
【Nginx】在线安装与离线安装
660 0
|
机器学习/深度学习 数据挖掘 PyTorch
PyTorch深度学习实战 | 预测工资——线性回归
通过员工工作年限与工资的对应关系表,找出二者之间的关系,并预测在指定的年限时,工资会有多少。
1415 0
PyTorch深度学习实战 | 预测工资——线性回归
|
机器学习/深度学习 人工智能 安全
【网安AIGC专题】46篇前沿代码大模型论文、24篇论文阅读笔记汇总
【网安AIGC专题】46篇前沿代码大模型论文、24篇论文阅读笔记汇总
558 0
|
前端开发 JavaScript 开发者
Vue3.0商店后台管理系统项目实战-vue3搭配Element Plus框架使用
Vue3.0商店后台管理系统项目实战-vue3搭配Element Plus框架使用
458 0
|
机器学习/深度学习 算法 开发工具
视觉智能平台常见问题之其他算法定制化开发如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
213 1