大型分布式系统监控平台(六)-- 第一个flink应用topN
聊的不止技术。跟着小帅写代码,还原和技术大牛一对一真实对话,剖析真实项目筑成的一砖一瓦,了解最新最及时的资讯信息,还可以学到日常撩妹小技巧哦,让我们开始探索主人公小帅的职场生涯吧!
(PS:本系列文章以幽默风趣风格为主,较真侠和学习怪请绕道~)
小帅:“老胡真忙!”
江华:“他不是忙 ,他只是不想搭理逗比。”
小帅:“......”
小帅:“老胡都不教一下我这个TopN怎样写。”
江华:“难道没有他,你还蠢到生活不能自理了?多难的事,自己上网抄一个不就行了呗。”
小帅:“......好吧。”
江华:“maven 工程会搭建吧,看在你这么蠢的份上,我可以略指点一二。”
小帅:“......”
(明明这么好的人,为什么就不能好好说话。)
1、新建工程。
2、编辑pom文件,增加flink依赖。
<!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-java --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.12</artifactId><version>1.8.1</version><scope>provided</scope></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-core</artifactId><version>1.8.1</version></dependency>
3、新建类FlinkDemo.java,编写代码。
小帅:“我在网上找到一个例子,不过好像是用socket作为输入流的,我不太会欸。”
江华:“你先把代码贴出来看看。”
package com.mmc.flink.demo;import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.common.functions.ReduceFunction;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.windowing.time.Time;
import org.apache.flink.util.Collector;public class FlinkDemo {public static void main(String[] args) throws Exception {// the host and the port to connect tofinal String hostname = "localhost";final int port = 9888;// get the execution environmentfinal StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();// get input data by connecting to the socketDataStream<String> text = env.socketTextStream("localhost", port, "\n");// parse the data, group it, window it, and aggregate the countsDataStream<WordWithCount> windowCounts = text.flatMap(new FlatMapFunction<String, WordWithCount>() {@Overridepublic void flatMap(String value, Collector<WordWithCount> out) {for (String word : value.split("\\s")) {out.collect(new WordWithCount(word, 1L));}}}).keyBy("word").timeWindow(Time.seconds(5), Time.seconds(1)).reduce(new ReduceFunction<WordWithCount>() {@Overridepublic WordWithCount reduce(WordWithCount a, WordWithCount b) {return new WordWithCount(a.word, a.count + b.count);}});System.out.println("bbbbbbbbbbbbbbbbbbbbb");// print the results with a single thread, rather than in parallelwindowCounts.print().setParallelism(1);System.out.println("FlinkDemo.main aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");env.execute("Socket Window WordCount 666");}}
江华:“这个简单,用现成的工具netcat。”
小帅:“netcat 是啥?”
江华:“自己百度去。”
小帅:“netcat下载好了,然后呢?”
江华:“把项目跑起来啊!”
小帅:“在本地能直接跑起来么?”
江华:“......不好意思,我手机只剩下99%的电了,失陪!”
小帅:“别啊,江兄。组织需要你,国家需要你!”
4、运行项目。
小帅:“好像不行啊,报错了。”
江华:“检查下maven依赖,你拷别人的代码,是不是把scope也复制了?去掉了看看。”
小帅:“神了,老江!跑起来了。等等,又报错了。”
江华:“......你脖子上面那个东西是用来装饰的吧。”
小帅:“你说是脖子上戴的吗?那是貔貅,辟邪招财的,嘿嘿嘿。不过这个跟报错有什么关系?”
江华:“......(深呼吸)请你把netcat跑起来。”
小帅:“哦哦。”
江华:“噼里啪啦的,你在玩啥呢?”
小帅:“启动netcat啊,我看网上说,要进入到解压的目录执行,Windows 的cmd不好使,得cd个半天。”
江华:“你直接按着shift,然后点鼠标右键--从此处选择打开命令窗口,这不就行了。”
小帅:“666,厉害了,江爷!真心牛逼。”
(1)执行命令 nc -l -p 9888
(2)Idea右键启动项目。
(3)在netcat窗口随便输入字符。
(4)IDEA 控制台实时输出统计结果。
5、后记。
小帅:“总算跑起来了,不容易啊!对了,老江,刚才那个maven的scope去掉就能跑起来,这是为什么啊?”
<dependencies><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-streaming-java --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-streaming-java_2.12</artifactId><version>1.8.1</version><!--<scope>provided</scope>--></dependency><dependency><groupId>org.apache.flink</groupId><artifactId>flink-core</artifactId><version>1.8.1</version></dependency></dependencies>
江华:“自己去百度啊,你没看到报class not found么?provided的意思就是运行的时候提供的依赖,你没flink集群跑肯定是没有人给你提供这个jar的。”
小帅:“soga。谢谢啦老江。小檬今天来加班,我去陪陪她。告辞。”
江华:“说得这么好听,你这是偷窥吧。”
小帅:“......”
大型分布式系统监控平台(六)-- 第一个flink应用topN相关推荐
- 分布式系统监控平台-Overwatch架构设计(已开源)
作者介绍:张玄,毕业于南京大学软件学院.初中开始自学编程,高中参与上海计算机竞赛,荣获第一名.2016年毕业后就职于达达-京东到家基础架构团队,从事基础组件.系统监控等开发工作. Overwatch是 ...
- 基于java spring框架开发部标1078视频监控平台精华文章索引
部标1078视频监控平台,是一个庞杂的工程,涵盖了多层协议,部标jt808,jt809,jt1078,苏标Adas协议等,多个平台功能标准,部标796标准,部标1077标准和苏标主动安全标准,视频方面 ...
- 如何设计一个监控平台(上篇)
引言 在大型分布式微服务场景下,各个服务版本快速迭代,各类业务规模不断膨胀,同时监控的场景也在不断的发生变化,线上故障随时可能发生,各个平台错综复杂,如何保证线上服务稳定运行,同时提升运维效率,降低运 ...
- 分布式系统监控软件zabbix—— 通过qqmail或第三方报警平台(睿象云)发送告警信息
文章目录 分布式系统监控软件zabbix-- 通过qqmail或第三方报警平台(睿象云)发送告警信息 1.zabbix+ qqmail 报警实现步骤 2.zabbix+ 睿象云报警 实现步骤 分布式系 ...
- java 组件化_(原创)搭建一个组件化的监控平台
最近看到一位同事正在开发一个监控软件,要求就是通过针对服务器现有的一些接口,通过这些接口返回的数据进行分析,如果监控的值到达预先设定的范围则通过短信的方式发送给管理员. 从整个开发的功能上来看是一个比 ...
- GB/T28181国标视频监控平台TINYGBS支持4G执法记录仪接入大型可视指挥调度平台
TinyGBS是基于GB/T28181-2016(公共安全视频监控联网系统信息传输.交换.控制技术要求)开发的成熟的.敏捷的.产品化的视频汇聚平台,支持标准的监控设备的接入和管理,在多个应用场景中成功 ...
- 阿里云使用笔记-第六篇-CentOS搭建Sentry日志监控平台
一,前言 由于前端项目运行在用户各自电脑的浏览器上, 对于浏览器差异所导致的问题,正常情况下是没有办法拿到的 我们可以使用日志监控平台对客户端产生的问题进行收集统计,以便及时处理搭建Sentry(哨兵 ...
- cat全链路监控_谛听全链路监控平台实践与思考
一.项目背景 近几年,信也科技的研发技术伴随着业务的快速增长逐步演化为微服务化的分布式体系架构,但随之带来的系统间的上下游依赖关系的复杂度也呈指数级上升,已有的烟囱式的监控产品(CAT.ELK等)存在 ...
- Linux实战教学笔记49:Zabbix监控平台3.2.4(一)搭建部署与概述
https://www.cnblogs.com/chensiqiqi/p/9162986.html 一,Zabbix架构 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企 ...
最新文章
- 2021-05-09
- 如何在Visual Studio中直接使用示例代码浏览器搜索下载和管理代码示例
- 分割2021PanopticFCN
- python转载[编码问题]
- django 获取环境变量_Django 安装和配置环境变量
- 减小程序规模!稀疏数组Sparsearray,数据结构二维数组与稀疏数组转换,Java实现
- JDBC01 利用JDBC连接数据库【不使用数据库连接池】
- java学习(152):字节缓冲输出流
- Python abs函数 - Python零基础入门教程
- spring整合hibernate的applicationContext.xml文件配置以及web.xml
- (04)FPGA芯片选型原则
- 在php中isset什么意思,php – isset()和__isset()之间有什么区别?
- 三种div居中显示方式
- WinForm系统 -- 系统架构
- Microsoft Office Visio 2007 简体中文专业版
- 祖玛游戏3D版源代码
- SolidWorks中提高大型装配性能Part4— SolidWorks装配工具
- Java基础之《netty(28)—TCP粘包拆包原理》
- c++ opencv 保存视频数据
- Dichotomy二分法学习笔记
热门文章
- jxls操作excel文件
- 【转载】__declspec(dllimport) __declspec(dllexport)
- 牛客-小H和游戏(树的dfs)
- php实现待办事项功能,PHP倒计时和待办事项
- python 计算图像结构张量(Structure_tensor)
- 2023年不参展还可以怎样开发客户?这篇文章告诉你!
- transition的使用方法
- 智慧校园安全通道及视频监控解决方案
- 模仿百度首页页面(附带源码)html+css
- cartographer中的反光板定位