Apache Flink

【译】How To Size Your Apache Flink® Cluster: A Back-of-the-Envelope Calculation

落爺英雄遲暮 提交于 2019-11-29 15:09:07
来自Flink Forward Berlin 2017的最受欢迎的会议是Robert Metzger的“坚持下去:如何可靠,高效地操作Apache Flink”。 Robert所涉及的主题之一是如何粗略地确定Apache Flink集群的大小。 Flink Forward的与会者提到他的群集大小调整指南对他们有帮助,因此我们将他的谈话部分转换为博客文章。 请享用! Flink社区中最常见的问题之一是如何在从开发阶段转向生产阶段时确定群集的大小。 对这个问题的明确答案当然是“它取决于”,但这不是一个有用的答案。 这篇文章概述了一系列问题,要求您提供一些可用作指导的数字。 做计算并建立基线 第一步是仔细考虑应用程序的运营指标,以获得所需资源的基线。 要考虑的关键指标是: 每秒记录数和每条记录的大小 您拥有的不同key的数量以及每个key的状态大小 状态更新的数量和状态后端的访问模式 最后,更实际的问题是您的服务水平协议(SLA)与客户的停机时间,延迟和最大吞吐量有关,因为这些直接影响您的容量规划。 接下来,根据您的预算查看您可用的资源。例如: 网络容量,考虑到也使用网络的任何外部服务,如Kafka,HDFS等。 您的磁盘带宽,如果您依赖于基于磁盘的状态后端(如RocksDB)(并考虑其他磁盘使用,如Kafka或HDFS) 机器的数量以及它们可用的CPU和内存 基于所有这些因素

剑谱总纲 | 大数据方向学习面试知识图谱

谁说我不能喝 提交于 2019-11-29 11:57:48
<u> 关注我的公众号,后台回复【JAVAPDF】获取200页面试题! </u> 5万人关注的大数据成神之路,不来了解一下吗? 5万人关注的大数据成神之路,真的不来了解一下吗? 5万人关注的大数据成神之路,确定真的不来了解一下吗? 欢迎您关注 《大数据成神之路》 愿读到这篇文章的技术人早日明白并且脱离技术本身,早登彼岸。 一切技术最终只是雕虫小技。 大纲 本系列主题是大数据开发面试指南,旨在为大家提供一个大数据学习的基本路线,完善数据开发的技术栈,以及我们面试一个大数据开发岗位的时候,哪些东西是重点考察的,这些公司更希望面试者具备哪些技能。 本文不会对某一个知识点进行详细的展开,后续会陆续出专题文章,希望读者能当成一个学习或者复习的大纲,用以查漏补缺。 语言基础篇 Java基础篇 整个大数据开发技术栈我们从实时性的角度来看,主要包含了离线计算和实时计算两大部分,而整个大数据生态中的框架绝大部分都是用 Java 开发或者兼容了 Java 的 API 调用,那么作为基于 JVM 的第一语言 Java 就是我们绕不过去的坎,Java 语言的基础也是我们阅读源码和进行代码调优的基础。 Java 基础主要包含以下部分: 语言基础 锁 多线程 并发包中常用的并发容器(J.U.C) 语言基础 Java 的面向对象 Java 语言的三大特征:封装、继承和多态 Java 语言数据类型 Java

读透《阿里巴巴数据中台实践》,其到底有什么高明之处?

隐身守侯 提交于 2019-11-29 10:10:02
最近阿里巴巴分享了《阿里巴巴数据中台实践》这个PPT(自行搜索原始文章),对于数据中台的始作俑者,还是要怀着巨大的敬意去学习的,因此仔细的研读了,希望能发现一些不一样的东西。 读这些专业的PPT,实际是非常耗时的,你需要把这些PPT外表的光鲜扒光,死抠上面的每一个字去理解底下隐藏的含义,然后跟你的已有知识体系去对比,看看是否有助于完善自己的认知,对于自己不理解的,还需要经常去检索相关的文档。 当然,很多写PPT的用词没这么严谨,临时造概念的不少,或者是独特的说法,因此有时候还要做一些揣测,结合自己的实践去理解,这篇PPT的解读有6000多字,因此请做好烧脑的准备,虽然笔者没去现场听演讲,但希望我的“演讲”也能让你学到真功夫。 就让我们开始吧。 1、题目和背景 看到这个片子的出处,阿里云智能事业部,其实是有点奇怪的,记得阿里的中台事业群包括搜索事业部、共享业务平台、数据技术及产品部,阿里云是一个侧重云业务的平台事业部,它来说数据中台合适吗? 有人会问,平台和中台又有什么区别呢?阿里云来讲中台不是很合适吗? 笔者的疑惑是这样:一般意义上的平台具备业务无关性,潜心技术就可以了,而中台是业务的收敛,跟业务的相关性很大,对于数据中台,其核心竞争力不是平台级的技术,而是数据的理解、处理和挖掘。让一个做平台技术的人跑到前端去理解数据诉求沉淀共性是不现实的,而这是当前数据中台创造价值的核心。

Apache Flink 零基础入门(十五)Flink DataStream编程

孤者浪人 提交于 2019-11-29 09:05:31
数据源可以通过StreamExecutionEnvironment.addSource(sourceFunction)方式来创建,Flink也提供了一些内置的数据源方便使用,例如readTextFile(path) readFile(),当然,也可以写一个自定义的数据源(可以通过实现SourceFunction方法,但是无法并行执行。或者实现可以并行实现的接口ParallelSourceFunction或者继承RichParallelSourceFunction) 入门 首先做一个简单入门,建立一个DataStreamSourceApp Scala object DataStreamSourceApp { def main(args: Array[String]): Unit = { val env = StreamExecutionEnvironment.getExecutionEnvironment socketFunction(env) env.execute("DataStreamSourceApp") } def socketFunction(env: StreamExecutionEnvironment): Unit = { val data=env.socketTextStream("192.168.152.45", 9999) data.print() } }

Apache Flink 零基础入门(十二)Flink sink

£可爱£侵袭症+ 提交于 2019-11-29 08:56:06
将DataSet中的数据Sink到哪里去。使用的是对应的OutPutFormat,也可以使用自定义的sink,有可能写到hbase中,hdfs中。 writeAsText() / TextOutputFormat ,以String的形式写入 writeAsCsv(...) / CsvOutputFormat,以CSV的方式写进去 print() / printToErr() / print(String msg) / printToErr(String msg)以标准输出 writeAsText object DataSetSinkApp { def main(args: Array[String]): Unit = { val environment = ExecutionEnvironment.getExecutionEnvironment val data = 1.to(10) val text = environment.fromCollection(data) val filePath = "E:/test" text.writeAsText(filePath) environment.execute("DataSetSinkApp") } } 如果E:/test文件或者文件夹存在,将无法执行成功。除非增加一个WriteMode.OVERWRITE text

Apache Flink 零基础入门(十一)Flink transformation

北城以北 提交于 2019-11-29 07:27:31
前面讲了常用的DataSource的用法,DataSource其实是把数据加载进来,加载进来之后就需要做Transformation操作了。 Data transformations transform one or more DataSets into a new DataSet. Programs can combine multiple transformations into sophisticated assemblies. 数据转化可以将一个或多个DataSets转化到一个新的DataSet。就是一个算法的综合使用。 Map Function Scala 新建一个Object object DataSetTransformationApp { def main(args: Array[String]): Unit = { val environment = ExecutionEnvironment.getExecutionEnvironment } def mapFunction(env: ExecutionEnvironment): Unit = { val data = env.fromCollection(List(1,2,3,4,5,6,7,8,9,10)) } } 这里的数据源是一个1到10的list集合。Map的原理是:假设data数据集中有N个元素

Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL

↘锁芯ラ 提交于 2019-11-29 06:03:05
上周六在深圳分享了《Flink SQL 1.9.0 技术内幕和最佳实践》,会后许多小伙伴对最后演示环节的 Demo 代码非常感兴趣,迫不及待地想尝试下,所以写了这篇文章分享下这份代码。希望对于 Flink SQL 的初学者能有所帮助。完整分享可以观看 Meetup 视频回顾 : https://developer.aliyun.com/live/1416 演示代码已经开源到了 GitHub 上: https://github.com/wuchong/flink-sql-submit 这份代码主要由两部分组成:1) 能用来提交 SQL 文件的 SqlSubmit 实现。2) 用于演示的 SQL 示例、Kafka 启动停止脚本、 一份测试数据集、Kafka 数据源生成器。 通过本实战,你将学到: 如何使用 Blink Planner 一个简单的 SqlSubmit 是如何实现的 如何用 DDL 创建一个 Kafka 源表和 MySQL 结果表 运行一个从 Kafka 读取数据,计算 PVUV,并写入 MySQL 的作业 设置调优参数,观察对作业的影响 SqlSubmit 的实现 笔者一开始是想用 SQL Client 来贯穿整个演示环节,但可惜 1.9 版本 SQL CLI 还不支持处理 CREATE TABLE 语句。所以笔者就只好自己写了个简单的提交脚本。后来想想,也挺好的

阿里巴巴为什么选择Apache Flink?

若如初见. 提交于 2019-11-29 05:59:31
阿里妹导读:伴随着海量增长的数据,数字化时代的未来感扑面而至。不论是结绳记事的小数据时代,还是我们正在经历的大数据时代,计算的边界正在被无限拓宽,而数据的价值再也难以被计算。时下,谈及大数据,不得不提到热门的下一代大数据计算引擎Apache Flink(以下简称Flink)。本文将结合Flink的前世今生,从业务角度出发,向大家娓娓道来:为什么阿里选择了Flink? 本文主要整理自阿里巴巴计算平台事业部资深技术专家莫问在云栖大会的演讲。 合抱之木,生于毫末 随着人工智能时代的降临,数据量的爆发,在典型的大数据的业务场景下数据业务最通用的做法是:选用批处理的技术处理全量数据,采用流式计算处理实时增量数据。在绝大多数的业务场景之下,用户的业务逻辑在批处理和流处理之中往往是相同的。但是,用户用于批处理和流处理的两套计算引擎是不同的。 因此,用户通常需要写两套代码。毫无疑问,这带来了一些额外的负担和成本。阿里巴巴的商品数据处理就经常需要面对增量和全量两套不同的业务流程问题,所以阿里就在想,我们能不能有一套统一的大数据引擎技术,用户只需要根据自己的业务逻辑开发一套代码。这样在各种不同的场景下,不管是全量数据还是增量数据,亦或者实时处理,一套方案即可全部支持,这就是阿里选择Flink的背景和初衷。 目前开源大数据计算引擎有很多选择,流计算如Storm,Samza,Flink,Kafka

结构化数据存储,如何设计才能满足需求?

一曲冷凌霜 提交于 2019-11-29 05:59:28
阿里妹导读 :任何应用系统都离不开对数据的处理,数据也是驱动业务创新以及向智能化发展最核心的东西。数据处理的技术已经是核心竞争力。在一个完备的技术架构中,通常也会由应用系统以及数据系统构成。应用系统负责处理业务逻辑,而数据系统负责处理数据。本篇文章主要面向数据系统的研发工程师和架构师,希望对你有所启发。 前言 传统的数据系统就是所谓的『大数据』技术,这是一个被创造出来的名词,代表着新的技术门槛。近几年得益于产业的发展、业务的创新、数据的爆发式增长以及开源技术的广泛应用,经历多年的磨炼以及在广大开发者的共建下,大数据的核心组件和技术架构日趋成熟。特别是随着云的发展,让『大数据』技术的使用门槛进一步降低,越来越多的业务创新会由数据来驱动完成。 『大数据』技术会逐步向轻量化和智能化方向发展,最终也会成为一个研发工程师的必备技能之一,而这个过程必须是由云计算技术来驱动以及在云平台之上才能完成。应用系统和数据系统也会逐渐融合,数据系统不再隐藏在应用系统之后,而是也会贯穿在整个业务交互逻辑。传统的应用系统,重点在于交互。而现代的应用系统,在与你交互的同时,会慢慢地熟悉你。数据系统的发展驱动了业务系统的发展,从业务化到规模化,再到智能化。 业务化:完成最基本的业务交互逻辑。 规模化:分布式和大数据技术的应用,满足业务规模增长的需求以及数据的积累。 智能化:人工智能技术的应用,挖掘数据的价值