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

新一代大数据计算引擎Flink从入门到实战(15)项目实战(1)

1日志统计分析接入的数据类型就是日志离线:FlumeHDFS实时:Kafka流处理引擎ESKibana项目功能1)统计一分钟内
1 日志统计分析

接入的数据类型就是日志

  • 离线:Flume==>HDFS
  • 实时:Kafka==>流处理引擎==>ES==>Kibana


项目功能
1)统计一分钟内每个域名访问产生的流量
Flink接收Kafka的进行处理
2)统计一分钟内每个用户产生的流量
域名和用户是有对应关系的
Flink接收Kafka的进行 + Flink读取域名和用户的配置数据 进行处理

在这里插入图片描述

aliyun CN A E [17/Jul/2018:17:07:50 +0800] 2 223.104.18.110 - 112.
29.213.35:80 0 v2.go2yd.com GET http://v1.go2yd.com/user_upload/1531633977627104fdec
dc68fe7a2c4b96b2226fd3f4c.mp4_bd.mp4 HTTP/1.1 - bytes 13869056-13885439/25136186 TCP_HIT/206 112.29.213.35 video/mp4 17168 16384 -:0 0 0 - - 11451601 - "JSP3/2.0.14" "-" "-" "-" http - 2 v1.g
o2yd.com 0.002 25136186 16384 - - - - - - - 1531818470104-114516
01-112.29.213.66#2705261172 644514568

2 mock 数据

  • Kafka 生产数据

package com.imooc.flink.java.project;import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.Random;/*** @Description mock 数据* @Author tzb* @Date 2020/10/1 22:19* @Version 1.0**/
public class MyKafkaProducer {public static void main(String[] args) throws Exception {Properties properties &#61; new Properties();properties.setProperty("bootstrap.servers", "master:9092");properties.setProperty("key.serializer", StringSerializer.class.getName());properties.setProperty("value.serializer", StringSerializer.class.getName());KafkaProducer<String,String> producer &#61; new KafkaProducer<String, String>(properties);String topic &#61; "tzbtest";// 通过死循环一直不停往Kafka的Broker里面生产数据while (true) {StringBuilder builder &#61; new StringBuilder();builder.append("icu996.com").append("\t").append("CN").append("\t").append(getLevels()).append("\t").append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())).append("\t").append(getIps()).append("\t").append(getDomains()).append("\t").append(getTraffic()).append("\t");System.out.println(builder.toString());producer.send(new ProducerRecord<String, String>(topic, builder.toString()));Thread.sleep(2000);}}private static long getTraffic() {return new Random().nextInt(10000);}private static String getDomains() {String[] domains &#61; new String[]{"v1.go2yd.com","v2.go2yd.com","v3.go2yd.com","v4.go2yd.com","vmi.go2yd.com"};return domains[new Random().nextInt(domains.length)];}private static String getIps() {String[] ips &#61; new String[]{"223.104.18.110","113.101.75.194","27.17.127.135","183.225.139.16","112.1.66.34","175.148.211.190","183.227.58.21","59.83.198.84","117.28.38.28","117.59.39.169"};return ips[new Random().nextInt(ips.length)];}// 生产level数据public static String getLevels(){String[] levels &#61; new String[]{"M","E"};return levels[new Random().nextInt(levels.length)];}
}

2.1 测试生产者


  • 所有节点同时启动 zookeeper
    在这里插入图片描述
    在这里插入图片描述



  • 启动 kafka bin/kafka-server-start.sh config/server.properties &
  • 查看 topic bin/kafka-topics.sh --list --zookeeper localhost:2181
    在这里插入图片描述



  • 创建 消费者 bin/kafka-console-consumer.sh --bootstrap-server master:9092 --topic tzbtest
  • 运行生产者
    在这里插入图片描述

推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
author-avatar
v56158645
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有