热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:flink一分钟入门篇

 1.  

 

1. 

 

业务说:“…… bulabula……,这个需求很简单,怎么实现我不管?”

 

面对霸气侧漏的业务需求,由于没有大数据知识储备,咱心里没底,咱也不敢问,咱也不敢说,只能静下来默默储备、默默寻觅解决方案。

 

关注“一猿小讲”公众号的小伙伴们,今天有福啦,因为今天我们将一起跳出系统之外,共同迈入大数据之 flink 的大门。

 

flink 是啥?flink 干啥用的?……

 

我相信,你心中肯定有类似千万种这样疑问,但是你花两分钟坚持读到最后,我想想能扑灭你心中的疑问的 99.99%。

 

好了,请准备好小板凳,我们的故事开始。

 

2. 

 

上来理论先不谈,一言不合就实践。环顾了一下四周,90% 的同事都用 Mac 本,本次演示也是基于 Mac 系统。

 

磨刀不误砍柴工,准备环境。确保本机安装了JDK,因为 flink 编译和运行要求 Java 版本至少是 JDK 1.8,来输入命令检查一下

java -version

技术图片

 

如果没有安装 JDK 1.8,请按照内心的指引安装一下。我相信这步过了之后,后面将会顺风顺水,大鹏一日同风起,扶摇直上九万里(捂嘴笑)。

 

版本千千万,总有一款你喜欢。这里我们选择最新版本 1.8.1 进行入门学习,不要问为什么,就因为王八看绿豆,看对眼了。

http://mirrors.tuna.tsinghua.edu.cn/apache/flink/flink-1.8.1/flink-1.8.1-bin-scala_2.12.tgz

选好版本下载完,来个全局看一看。其中 bin 为启动停止脚本,conf 为配置文件目录,examples 为小样例,lib 所依赖的类库,log 为日志目录。

技术图片

本次我们重点关注bin、examples、log 三个目录。

 

一切准备就绪,小试牛刀。单机方式运行 flink,在 flink 的主目录下,输入命令闹铃响起,呼唤 flink 要去工作啦。

./bin/start-cluster.sh

技术图片

 

纵然他人夸你千万遍,让我看看好看不好看。输入 http://127.0.0.1:8081/ 一览容颜。

技术图片

 

 

画龙画虎难画骨,知人知面不知心。看完表面,猜背后。深入了解又何妨?输入 jps 命令一探究竟。

技术图片

 

哦,原来背后主要是两个进程在默默的付出:一个是 JobManager 进程, 另一个是 TaskManager 进程。其实我最喜欢背后默默付出的人,给两位默默付出的进程打 Call,点赞。

 

flink 已经从睡梦中苏醒,并准备就绪,就等咱们下发任务啦。HelloWorld 跑跑看。

 

3. 

 

有界的数据处理(装文艺书生了有没有)。我这定义了一些 WORDS,麻烦 flink 你帮忙统计一下每个单词出现的次数呗?

 

第一步:准备数据。数据来自 flink 自带的 example 源码,找个时间咱们从源码上再深入聊一次。数据贴出来,目的就是为了让大家看一下,要知道咱们要让 flink 干啥就行了,数据来源本次无需特别关注。

技术图片

 

第二步:提交 WordCount.jar 给 flink。不得不说 flink 毫秒级处理,还未等片刻,就给咱们反馈了。

输入命令:

./bin/flink run examples/streaming/WordCount.jar

结果如下:

技术图片

 

第三步:打开页面看一看 flink 留下的轨迹。

技术图片

 

技术图片

 

第四步:结果在哪里?关注点在哪里,结果就在哪里。

技术图片

 

4. 

 

无界的数据处理(再次装文艺书生有没有)。我这定义了一个端口 9000,麻烦 flink 你连上我,这样咱俩就可以秘密通讯了,我时不时会给你暗送秋波,但是你一定要每隔 5 秒统计一下,当前我给你说的每个词出现的数量,因为词词珠玑(捂嘴笑)。

 

第一步:启动本地服务。我们通过 netcat 命令来启动本地服务,然后就可以不停的说出对 flink 的热爱。

技术图片

 

如果报错,根据报错进行提示安装 nc,我相信一猿小讲的粉丝肯定秒秒钟都能搞定。

 

第二步:提交 SocketWindowWordCount.jar 程序。其实 flink 早已按捺不住啦,尽管放马过去吧。

 

打开新的窗口,键入如下命令:

./bin/flink run examples/streaming/SocketWindowWordCount.jar --port 9000

  

看一看 flink 羞涩的反应。

技术图片

 

第三步:看看效果,一睹芳容。

技术图片

 

第四步:千万别矜持,说出你对 flink 的热爱,来点真情看看 flink 的反应?

在 nc 打开的窗口写一些文本,回车一行就发送一行输入给Flink。

技术图片

 

不错不错,统计效果杠杠的。

技术图片

 

能否再浪漫一些,再多真情吐露一些。

技术图片

 

在控制台看看 flink 的娇羞的样子。新开一个窗口,执行

tail -f log/flink*.out

  

效果确实杠杠滴

技术图片

 

 

也可以在页面一睹 flink 那羞涩的反应。

技术图片

 

第五步:真情吐露完成,退出 nc,flink 还有点不舍。

技术图片

 

视力不好,我们把上面的图拆开放大了看。退出 nc 的效果如下。

技术图片

 

当我们断开 nc 时,flink 的反应流露出有点不舍,效果如下。

技术图片

 

5.

好了,收工!到这两个 flink 的 HelloWorld 都完事了,我们也一起入门了。flink 你释放资源吧,你也休息一会儿吧。

输入命令:

./bin/stop-cluster.sh

  

效果如下:

技术图片

 

6.

 

先实践再理论,HelloWorld 实践完,不妨抛俩概念玩一玩。

 

概念一:流?

 

注意,这里说的可不是流氓的流。咱们想指的是信用卡交易、传感器测量、机器日志、网站或移动应用程序上的用户交互记录,等等所有这些数据都形成的一种流。不过任何类型的数据,都可以形成一种事件流。

 

概念二:无界流 vs 有界流?

 

技术图片

无界流有定义流的开始,但没有定义流的结束。它们会无休止地产生数据。无界流的数据必须持续处理,即数据被摄取后需要立刻处理。我们不能等到所有数据都到达再处理,因为输入是无限的,在任何时候输入都不会完成。处理无界数据通常要求以特定顺序摄取事件,例如事件发生的顺序,以便能够推断结果的完整性。

 

有界流有定义流的开始,也有定义流的结束。有界流可以在摄取所有数据后再进行计算。有界流所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理。

 

概念三:那话说回来 flink 到底是啥东东?

 

Apache Flink 擅长处理无界和有界数据集。精确的时间控制和状态化使得 Flink 的运行时(runtime)能够运行任何处理无界流的应用。有界流则由一些专为固定大小数据集特殊设计的算法和数据结构进行内部处理,产生了出色的性能。

 

概念四:流式技术哪家强?

技术图片

 

从网上邂逅到这张图(若侵、速删),并摘了个结论:如图中蓝色柱形为单线程 Storm 作业的吞吐,橙色柱形为单线程 Flink 作业的吞吐,可以看出,Flink 吞吐约为 Storm 的 3-5 倍。至于 Flink vs Spark 的事情就交给你去问度娘或者谷哥吧,搜之会一大堆。

 

7.

好了,今天的分享就带你成功迈入大数据之 flink 的大门,希望对你有收获。

最后,还是那句话:跳出舒适区、持续不断的学习;跳出系统之外,会别有一番滋味涌上心头

技术图片

 

 


推荐阅读
  • 目录浏览漏洞与目录遍历漏洞的危害及修复方法
    本文讨论了目录浏览漏洞与目录遍历漏洞的危害,包括网站结构暴露、隐秘文件访问等。同时介绍了检测方法,如使用漏洞扫描器和搜索关键词。最后提供了针对常见中间件的修复方式,包括关闭目录浏览功能。对于保护网站安全具有一定的参考价值。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了禅道作为一款国产开源免费的测试管理工具的特点和功能,并提供了禅道的搭建和调试方法。禅道是一款B/S结构的项目管理工具,可以实现组织管理、后台管理、产品管理、项目管理和测试管理等功能。同时,本文还介绍了其他软件测试相关工具,如功能自动化工具和性能自动化工具,以及白盒测试工具的使用。通过本文的阅读,读者可以了解禅道的基本使用方法和优势,从而更好地进行测试管理工作。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • Tomcat安装与配置教程及常见问题解决方法
    本文介绍了Tomcat的安装与配置教程,包括jdk版本的选择、域名解析、war文件的部署和访问、常见问题的解决方法等。其中涉及到的问题包括403问题、数据库连接问题、1130错误、2003错误、Java Runtime版本不兼容问题以及502错误等。最后还提到了项目的前后端连接代码的配置。通过本文的指导,读者可以顺利完成Tomcat的安装与配置,并解决常见的问题。 ... [详细]
  • SparkOnYarn在YARN上启动Spark应用有两种模式。在cluster模式下,Spark驱动器(driver)在YARNApp ... [详细]
  • 开发笔记:大三上寒假15天第5天
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了大三上寒假15天--第5天相关的知识,希望对你有一定的参考价值。昨天的下载完成后运行报错,应该是下载的spark版本和教 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • JavaScript设计模式之策略模式(Strategy Pattern)的优势及应用
    本文介绍了JavaScript设计模式之策略模式(Strategy Pattern)的定义和优势,策略模式可以避免代码中的多重判断条件,体现了开放-封闭原则。同时,策略模式的应用可以使系统的算法重复利用,避免复制粘贴。然而,策略模式也会增加策略类的数量,违反最少知识原则,需要了解各种策略类才能更好地应用于业务中。本文还以员工年终奖的计算为例,说明了策略模式的应用场景和实现方式。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
author-avatar
打酱油的伦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有