基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(一)案例需求

news2024/11/25 3:07:17

文章目录

  • Flume+Kafka+Hbase+Flink+FineBI的实时综合案例
    • 01:课程回顾
    • 02:课程目标
    • 03:案例需求

Flume+Kafka+Hbase+Flink+FineBI的实时综合案例

01:课程回顾

  1. Hbase如何解决非索引查询速度慢的问题?

    • 原因:Hbase以Rowkey作为唯一索引

    • 现象:只要查询条件不是Rowkey前缀,不走索引

    • 解决:构建二级索引

      • 思想:自己建rowkey索引表,通过走两次索引来代替全表扫描

      • 步骤

        • step1:根据自己查询条件找到符合条件的原表的rowkey
        • step2:根据原表rowkey去原表检索
      • 问题:不同查询条件需要不同索引表,维护原表数据与索引数据同步问题

      • 解决

        • 方案一:手动管理:自己建表、自己写入数据【原表、索引表】

        • 方案二:自己开发协处理器:协处理器的开发成本非常高

        • 方案三:第三方工具:Phoenix

          create [local] index indexName on tbname(Col) [include(col)]
          
          • a.自动构建索引表/列族
          • b.自动对原表中的数据构建索引,自动把索引数据同步到索引表
          • c.自动维护中间所有过程
  2. Phoenix支持哪几种索引,各自的区别和实现原理是什么?

    • 索引设计:加快查询的效率

    • 全局索引

      create index 
      
      • 索引表来实现
        • rowkey:查询条件+原表rowkey
        • col:x【占位】
      • 过程:先查询索引表,从索引中查找满足条件的rowkey,再拿rowkey到原表查询结果
      • 场景:写少读多
      • 实现:先拦截写原表的请求,先写索引表,再去写原表
      • 问题:查询的数据都在原表中,必须到原表拿数据,性能相对比较差
    • 覆盖索引:基于全局索引

      create index …… include
      
      • 索引表来实现
        • rowkey:查询条件+原表rowkey
        • col:x【占位】
        • col……:经常作为查询结果要返回的列
      • 过程:根据查询条件,直接从索引表返回,不再查询原表
      • 场景:写少读多
      • 实现:先拦截写原表的请求,先写索引表,再去写原表
      • 问题:写的性能受到了较大影响
    • 本地索引

      create local index 
      
      • 将索引与数据存储在原表中,索引用一个单独的列族来存储
        • rowkey:这条数据所在Region的StartKey + 查询条件 + 数据的rowey
      • 过程:必须加载全部索引来进行索引查询,牺牲了一定读的性能
      • 场景:写多读多
      • 实现:在写入数据时,直接通过协处理器将数据和数据的索引写入原表的同一个region中
      • 特点:数据侵入性比较高,所有读写都基于Phoenix进行读写,盐表不能使用本地索引
    • 函数索引:一般不用

02:课程目标

  • 目标
    • 每种存储对应的应用场景:MySQL、HDFS、HIve、Redis、Hbase、Kafka
    • 如何实现不同存储设计和开发
      • Hbase设计 + Hbase Java API
      • Kafka API
  • 架构
    • 实时采集:Flume + Kafka
    • 实时存储:Kafka
    • 离线存储:Hbase
    • 离线计算:Hive 、Phoenix
    • 实时计算:Flink
    • 实时报表:FineBI
  • 要求
    • 所有环节自己实现一遍
    • 自己设计,自己写代码

03:案例需求

  • 目标:了解案例的背景及需求

  • 路径

    • step1:案例背景
    • step2:整体目标
    • step3:具体需求
  • 实施

    • 案例背景

      image-20210905125503124

      社交软件每天都有数千万的用户进行聊天, 陌陌、微信、脸书等公司想要对这些用户的聊天记录进行存储,满足用户的所有查询浏览以及后台需要对每天的消息量进行实时统计分析, 请设计如何实现数据的存储以及实时的数据统计分析工作。
      
    • 整体目标

      • 选择合理的存储容器进行数据存储, 并让其支持即席查询与离线分析工作
    • 具体需求

      • 离线分析:满足离线统计分析与即时查询
        • 根据发件人id + 收件人id + 消息日期 查询聊天记录
        • |
        • Rowkey设计
      • 实时分析
        • 实时统计消息总量
        • 实时统计各个地区发送消息的总量
        • 实时统计各个地区接收消息的总量
        • 实时统计每个用户发送消息的总量
        • 实时统计每个用户接收消息的总量
        • |
        • 指标:消息总个数
        • 维度:时间 、地区、用户、消息类型
  • 小结

    • 了解案例的背景及需求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1089969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

采集EtherNET/IP转Profinet在西门子plc中的应用

远创智控网关YC-EIPM-PN,让你的设备和云平台实时连接! 远创智控YC-EIPM-PN网关产品支持各种数据接口,无论是工业领域的仪表、PLC、计量设备,还是设备数据,都能实时采集并整合。它将这些设备中的运行数据、状态数据等信…

2023年中国工业控制漏洞数量及发展展望分析:工业控制系统逐渐走向智能化[图]

随着工业4.0、智能制造、工业互联网等概念的产生和发展,全球工控产业体系迅速扩大,工控系统的独立性日益降低,理论上来说对工控系统的攻击实现将更加简单,近两年的工控安全漏洞数量呈逐年下降的趋势。2021年开始工控漏洞数量呈逐年…

Explain执行计划字段解释说明---extra字段说明

1、Extra字段含义 包含不适合在其他列中显示但十分重要的额外信息。 2、Extra字段类型— Using filesort 说明mysql会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。 MySQL中无法利用索引完成的排序操作称为“文件排序”。 出现filesort的情…

现货黄金的交易技巧与智慧

许多黄金投资者都孜孜不倦地学习各种的交易技巧,但交易之道,其实与很多自然界中的规律是相通的,如果投资者明白了这些原理,比起单单去学习某一个固定的招式和套路,对交易的帮助和启发也许更大。 自然界中的惯性定律告诉…

Xshell7和Xftp7超详细下载教程(包括安装及连接服务器附安装包)

1.下载 1.官网地址: XSHELL - NetSarang Website 选择学校免费版下载 2.将XSHELL和XFTP全都下载下来 2.安装 安装过程就是选择默认选项,然后无脑下一步 3.连接服务器 1.打开Xshell7,然后新建会话 2.填写相关信息 出现Connection establi…

Ubuntu下安装Python

Ubuntu下安装Python 预备知识一、Python安装Python 二、Anaconda安装Anaconda卸载Anaconda 三、Miniconda安装Miniconda 四、异同比较 预备知识 (1) Python是一种编程语言。 (2) Anaconda是一款包管理工具,用来管理Python及其他语言的安装包,预装了很多…

2.4 设计多线程的程序

并行编程 在现代多核平台上Pthreads十分适用于并行编程,任何需要并行编程的应用领域,都可以用Pthreads进行编程生成相关应用。 设计并行应用程序时需要考虑到多个方面,如下所示: 并行编程模型问题分解负载均衡通信数据依赖同步/竞…

Python —— 特殊场景处理(鼠标、键盘操作文件上传)

1、鼠标操作 1、概述 使用Selenium的ActionChains类来模拟鼠标操作,导入模块如下: # 导入模块 from selenium.webdriver.common.action_chains import ActionChains 通过ActionChains对象可以发起鼠标左键、右键、移动鼠标等操作,最后使用…

保姆级手把手记录Android studio BottomNavigationView +FrameLayout暴力切换Fragment

开发环境: 效果图: 《《《代码在底部》》》 1,新建项目 2,新建若干Fragment,内容一样,改一下显示出来的Text,名字分别为test1Fragment,test2Fragment,test3Fragment,默认TextView的Text属性分别…

自定义数据训练的rknn模型部署 踩坑记录

自己训练了一个只有2种类别的yolov8模型之后,部署到瑞芯微RKNN。 踩坑一:类别的变化 之前用COCO数据集训练的.pt模型转rknn后,output0的shape为8400 x 176. 而把自定义数据集训练的模型转rknn后,output0的shape为8400 x 98. 为什…

法大大举办2023年伙伴大会:AI赋能,建设生态2.0

“数智‘签’引,聚力共赢——法大大2023年伙伴大会”10月13日在深圳隆重举办。包括腾讯、德勤、PWC、安永、金蝶、致远互联、明源云、蓝凌、玄武、甄零科技、北森、司享网络、明道云、企企通等在内的100多家企业服务厂商及企业高层代表齐聚一堂,探讨AI浪…

探索UI设计|栅格系统的深入分析和应用

界面排版太乱了。你知道网格系统的用途吗?网格系统困扰着许多初级网页设计师,就像一个谜。如果您对网格在设计中的应用有任何疑问,本文是为您量身定制的,并深入分析UI设计中网格系统的基本要素和优点。 什么是网格系统 网格系统…

制造企业有了ERP,是否需要MES系统?

导 读 ( 文/ 1656 ) 在制造业的数字化转型中,企业常常会引入企业资源计划(ERP)系统来实现企业级的信息管理和资源规划。然而,对于制造企业而言,是否还需要引入制造执行系统(MES)系统呢&#xf…

【c++源码】老飞飞源码完整v15源码(包含数据库前端后端源文件)

老飞飞源码完整v15源码(包含数据库前端后端源文件)程序来源于国外网站。程序仅供参考学习游戏开发流程。以及框架内容。 测试环境搭建 Visual Studio 2013 SQL Server 2008r Windows 10 和 11 专业版 这些文件已经过测试,搭建,运行…

介绍一款小巧的Excel比对工具-DiffExcel

【缘起:此前找了一通,没有找到免费又好用的Excel比对工具,而ExcelBDD需要把Excel文件存放到Git,因此迫切需要Excel比对工具。 最新升级到V1.3.3,因为git diff有变化,原来是git diff会修改文件名&#xff0…

数字化转型背景下,MES管理系统的新特征是什么

近年来,随着智能制造的快速发展,MES管理系统作为生产过程中的重要管理系统,也越来越受到企业的关注和应用。在实现MES系统的过程中,需要将JIT思想融入其中,实现业务流程管理的自动化;同时,也需要…

c语言练习86:移除元素

移除元素 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额…

EtherCAT转Modbus-TCP协议网关与DCS连接的配置方法

远创智控YC-ECTM-TCP,自主研发的通讯网关,将为你解决以太网通讯难题。YC-ECTM-TCP是一款EtherCAT主站功能的通讯网关,能够将EtherCAT网络和Modbus-TCP网络连接起来。它可以作为EtherCAT网络中的主站使用,同时也可以作为Modbus-TCP…

Django Test

Django--Laboratory drug management and early warning system-CSDN博客 创建项目doinglms django-admin startproject doinglms python manage.py runserver 运行开发服务器(Development Server) 创建一个自定义 App,名称为 lms: python manage.py startapp lms

HJ86 求最大连续bit数

目录 一、题目 二、代码 一、题目 求最大连续bit数_牛客题霸_牛客网 二、代码 #include <iostream> #include<stack> #include<vector> using namespace std; void TEN_to_TWO(int x, vector<int>& data) { //10进制转换成二进制stack<int&…