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

本文涉及的产品
实时计算 Flink 版,5000CU*H 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

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
652 13
Apache Flink 2.0-preview released
|
2月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
73 3
|
19天前
|
JSON 安全 API
如何使用Python开发API接口?
在现代软件开发中,API(应用程序编程接口)用于不同软件组件之间的通信和数据交换,实现系统互操作性。Python因其简单易用和强大功能,成为开发API的热门选择。本文详细介绍了Python开发API的基础知识、优势、实现方式(如Flask和Django框架)、实战示例及注意事项,帮助读者掌握高效、安全的API开发技巧。
43 3
如何使用Python开发API接口?
|
22天前
|
监控 负载均衡 API
Apache Apisix轻松打造亿级流量Api网关
Apache APISIX 是一个动态、实时、高性能的 API 网关,提供负载均衡、动态上行、灰度发布、熔断、鉴权、可观测等丰富的流量管理功能。适用于处理传统南北向流量、服务间东西向流量及 k8s 入口控制。Airflow 是一个可编程、调度和监控的工作流平台,基于有向无环图 (DAG) 定义和执行任务,提供丰富的命令行工具和 Web 管理界面,方便系统运维和管理。
Apache Apisix轻松打造亿级流量Api网关
|
7天前
|
存储 API 数据库
使用Python和Flask构建简单的RESTful API
使用Python和Flask构建简单的RESTful API
|
12天前
|
JSON API 数据格式
如何使用Python开发1688商品详情API接口?
本文介绍了如何使用Python开发1688商品详情API接口,获取商品的标题、价格、销量和评价等详细信息。主要内容包括注册1688开放平台账号、安装必要Python模块、了解API接口、生成签名、编写Python代码、解析返回数据以及错误处理和日志记录。通过这些步骤,开发者可以轻松地集成1688商品数据到自己的应用中。
27 1
|
20天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
36 1
|
26天前
|
JSON API 数据格式
如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架
本文介绍了如何使用Python和Flask构建一个简单的RESTful API。Flask是一个轻量级的Web框架,适合小型项目和微服务。文章从环境准备、创建基本Flask应用、定义资源和路由、请求和响应处理、错误处理等方面进行了详细说明,并提供了示例代码。通过这些步骤,读者可以快速上手构建自己的RESTful API。
28 2
|
2月前
|
数据处理 Apache 数据库
将 Python UDF 部署到 Apache IoTDB 的详细步骤与注意事项
【10月更文挑战第21天】将 Python UDF 部署到 Apache IoTDB 中需要一系列的步骤和注意事项。通过仔细的准备、正确的部署和测试,你可以成功地将自定义的 Python UDF 应用到 Apache IoTDB 中,为数据处理和分析提供更灵活和强大的支持。在实际操作过程中,要根据具体情况进行调整和优化,以确保实现最佳的效果。还可以结合具体的代码示例和实际部署经验,进一步深入了解和掌握这一过程。
25 2
|
16天前
|
安全 API 网络架构
Python中哪个框架最适合做API?
本文介绍了Python生态系统中几个流行的API框架,包括Flask、FastAPI、Django Rest Framework(DRF)、Falcon和Tornado。每个框架都有其独特的优势和适用场景。Flask轻量灵活,适合小型项目;FastAPI高性能且自动生成文档,适合需要高吞吐量的API;DRF功能强大,适合复杂应用;Falcon高性能低延迟,适合快速API开发;Tornado异步非阻塞,适合高并发场景。文章通过示例代码和优缺点分析,帮助开发者根据项目需求选择合适的框架。
43 0

相关产品

  • 实时计算 Flink版
  • 下一篇
    无影云桌面