Skip to main content

moregeek program

详解数据计算能力的四种类型_枫叶飘飘的博客-多极客编程

我们将计算能力根据场景抽象分成四大类:批计算、流计算、在线查询和即席分析。不同场景配合不同的存储和计算框架来实现,以满足业务的复杂需求。

1、批计算

随着数据量的不断增加,原有的计算框架已经无法支撑TB、PB甚至EB级规模的数据处理,在这种大数据场景下,提供成本低廉且可水平扩容的计算能力,采用分而治之的方法是必然的。传统的数据处理方式通常是将数据导入至专门的数据分析工具中,这样会面临两个问题:

  • 源数据非常大时,往往数据的移动就要花费较长时间。
  • 传统的数据处理工具往往是单机的,或系统架构无法快速扩容,面对海量数据时,数据处理的时间也是一个很大的问题。

MapReduce是一种分布式编程模型,采用“分而治之”的思想,将一个大规模数据集分解为多个小规模数据,然后分发给集群中多个节点共同完成计算。这样可以有效降低每一部分的运算复杂度,达到提高运算效率的目的。

MapReduce模型将计算分为两个阶段:Map阶段和Reduce阶段。Hadoop将MapReduce的输入数据划分为等长的数据块,称为输入分片(Input Split),为每一个分片构建一个Map任务,并且由该任务来运行用户自定义的Map函数,以处理分片中的每条记录。Map任务输出时要按照Reduce任务的数量进行分区,即为每一个Reduce任务新建一个分区,同时对每个分区进行排序。Reduce任务启动后,会向所有Map任务拉取数据并在Reduce端合并,Map任务和Reduce任务之间的数据流称为混洗(Shuffle)。最后由用户自定义的Reduce函数处理,其输出通常存储在HDFS上,以实现可靠存储。

MapReduce由于设计上的一些限制,导致处理性能较慢,针对这个问题,业界也有很多优化方案及替代产品,但真正发展起来的,目前主要有Spark。Spark也是一个批量计算框架,它将数据抽象成RDD、DataFrame,这是一种分布式的内存抽象,允许在大型集群上执行基于内存的计算,大大减少了迭代计算所需的开销。相比MapReduce,Spark在以下几方面具有优势:

  • 数据处理技术:Spark将执行模型抽象为通用的有向无环图(DAG)执行计划,这可以将多个Stage串联或者并行执行,而无须将Stage的中间结果输出到HDFS中。
  • 数据格式和内存布局:Spark RDD能支持粗粒度写操作,而对于读操作,RDD可以精确到每条记录,这使得RDD可以用来作为分布式索引。
  • 执行策略:MapReduce在数据Shuffle之前花费了大量的时间来排序,Spark支持基于Hash的分布式聚合,调度中采用更为通用的任务执行DAG,每一轮的输出结果都可以缓存在内存中。

2、流计算

批计算已经能满足多数大数据计算场景,然而要更快速、高效地获取数据中的价值,批计算已经无法满足需求。此时,一些优秀的实时处理框架,如Storm、Flink、Spark Streaming等逐渐发展起来,被广泛使用。 流计算的常见应用场景如下:

  • 流式ETL:集成流计算现有的诸多数据通道和SQL灵活的加工能力,对流式数据进行实时清洗、归并、结构化处理。同时,对离线数仓进行有效补充和优化,为数据的实时传输提供可计算通道。
  • 流式报表:实时采集、加工流式数据,实时监控和展现业务和客户的各类指标,让数据化运营实时化。
  • 监控预警:对系统和用户的行为进行实时检测和分析,实时监测和发现危险行为。
  • 在线系统:实时计算各类数据指标,并利用实时结果及时调整在线系统的相关策略,在内容投放、无线智能推送等领域有大量的应用。

3、在线查询

在线查询需要处理大规模的数据结果集,同时又需要提供一些快速计算的能力,如条件过滤筛选、在线检索等能力,快速从大规模结果中筛选和检索出结果信息,并且支持高并发、低延迟的快速响应。这种能力批计算、流计算都不具备,因此需要提供在线查询的能力,常见的在线计算框架有Elasticsearch、Redis等,其主要应用场景是OLTP类的简单的增、删、改、查、全文检索等相关操作。

在线查询的常见应用场景如下:

  • 画像服务:根据对象标识提供具体的查询服务,如通过Redis可以提供低延迟、高并发的查询服务能力;通过HBase可以提供大规模数据的查询服务能力,征信查询就是类似的服务。
  • 搜索的应用场景:提供搜索引擎的能力,为用户提供模糊匹配、意图识别检索等能力,快速检索需要的内容,如常见的文档搜索、商品搜索等。
  • 圈人场景:通过一些特定的条件规则,可以快速筛选出业务所需要的群体,为后续的运营、营销等工作的开展提供支撑。

4、即席分析

即席分析是指面对大规模的数据集,如何快速进行数据的多维交叉分析,其大部分是聚合型操作,如group by、sum、avg、count等。批计算有足够的灵活性,但耗时比较久,一些传统的关系型数据库以及数仓架构,在一定维度的场景下可以满足响应要求,但数据量受限。在数据应用中,分析类应用的占比一直不低,因此一些优秀的处理框架(如Impala、Kylin、ClickHouse和AnalyticDB等即席计算框架)逐渐发展起来。针对即席分析的复杂场景,通过对时间、空间的权衡,即席分析常见的实现方式有两种: ·

  • ROLAP:以关系数据库为核心,以关系型结构进行多维数据的表示和存储,结合星型模式和雪花模式实现。
  • MOLAP:基于多维数据组织的实现,以多维数据组织为核心,形成“立方块”的结构,通过对“立方块”进行各类处理来产生多维数据报表。

即席分析的常见应用场景如下:

  • 交互式数据分析:企业运营人员在日常工作中经常需要通过SQL从各个维度对当前业务进行分析,提供分析结果以便开展后续工作。离线计算的场景等待时间较久,用户体验不好,即席分析可以比较好地规避这个问题。
  • 群体对比分析场景:在业务中经常会有A/B测试场景,针对不同的群体,从各个维度对比分析也是即席分析经常支撑的场景。

©著作权归作者所有:来自51CTO博客作者key_3_feng的原创作品,请联系作者获取转载授权,否则将追究法律责任

在kubernetes中部署java应用_雍州无名的博客-多极客编程

1.环境准备安装jdk1.8安装maven2.部署java应用首先下载demo:​​https://github.com/lizhenliang/tomcat-java-demo​​解压unzip tomcat-java-demo-master.zip将数据库脚本导入数据库:/root/tomcat-java-demo-master/db/tables_ly_tomcat.sql修改配置文件app

javaweb核心之页面技术_紫轩蝶泪的博客-多极客编程

2 页面技术 2.1 JSP基础 2.1.1 JSP简介 JSP全称是Java Server Page,它和Servlet一样,也是sun公司推出的一套开发动态web资源的技术,称为JSP/Servlet规范。JSP的本质其实就是一个Servlet。 2.1.2 JSP和HTML以及Servlet的适用场景 类别 适用场景 HTML 只能开发静态资源,不能包含java代码,无法添加动

在windows10上通过nomachine连接kali的远程桌面_雍州无名的博客-多极客编程

对于需要经常远程到X windows的网友来说,VNC与Xmanager经常被使用,而NoMachine也是不错的选择之一,该工具简单,易用,尤其是在低带宽、慢速率的网络环境下工作性能良好。本文描述了NoMachine的快速安装与使用。1.NoMachine介绍NoMachien能使用户从另一台计算机访问和控制远程的Windows,Linux PC或Mac电脑,实现工作或娱乐等操作。NoMachi

从东南亚到中东,为什么社交类产品成为游戏出海的突破口?_干货云的博客-多极客编程

如果说探讨有什么是游戏开发者们永恒关注的话题,且耗费心力深耕的方向,游戏社交应该算得上一个。关注【融云全球互联网通信云】回复白皮书获完整版了解更多从理论而言,游戏中的社交行为是玩家的天然需求。不论何时,因为好的社交系统成就爆款,延长产品生命周期的情况屡见不鲜。近年在疫情的背景下,用户的游戏社交需求增加,且需求也更多元化,而这也带来了一股游戏社交类产品出海的东风。2019 年,凭借多样的休闲小游戏加

catia v5-6r2021软件安装包和安装教程_乐乐软件管家的博客-多极客编程

CATIA V5-6R2021软件简介:CATIA V5-6R2021是一款由法国达索公司发行的CAD/CAE/CAM一休化软件,它集机械设计、工程分析和仿真、数控加工、CATweb网络应用解决方案于一身,包括完整的2D、3D、参数化混合建模及数据管理功能,以及智能化的树结构,可以帮助制造厂商设计他们未来的产品,并支持从项目前阶段、具体的设计、分析、模拟、组装到维护在内的全部工业设计流程。可为用户

数值计算(1) --求解连续微分系统和混沌系统_domi+1的博客-多极客编程

前言微分系统在工程项目中很常见,通过物理建模之后,基本都需要求解微分方程得到其结果,混沌系统属于特殊的一类微分系统,在某些项目上也很常见,同时可以引申出分岔图、李雅普诺夫指数谱、相图、庞加莱截面等,本文探讨通过matlab常见的微分求解函数和simulink求解器来实现计算。关键字:微分系统,混沌系统,Simulink正文1、常微分方程(Lorenze混沌系统)方法1:m文件实现x0=[0;0;1

ansible删除指定目录下所有文件_清晨的博客-多极客编程

1、直接使用shell模块,不过估计会报warning,需要结合warn=false- name: "删除/tmp/test1目录下所有文件" shell: "rm -rf /tmp/test1/* warn=false" 2、使用shell显示路径下所有文件,使用file模块删除#先使用shell模块获取该目录下所有文件名,并且存储到一个变量files_list- name: list th

ansible warn屏蔽命令警告_清晨的博客-多极客编程

"[WARNING]: Consider using the file module with state=directory rather thanrunning 'mkdir'. If you need to use command because file is insufficient you can add 'warn: false' to this command task or s

centos git版本控制系统-本地仓库_白菜的博客-多极客编程

git版本控制系统-本地仓库 分布式版本控制系统 版本控制 不管是在企业中,还是我们个人,我们一定都做过版本控制。 比如: 1.写脚本,一遍一遍的修改 2.大学写论文 3.写技术文档 什么是分布式 分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多

[ linux ] 进程优先级 和 环境变量_小白又菜的博客-多极客编程

在上篇文章我们了解了进程的状态及Linux系统的进程状态,本篇我们主要了解进程优先级及环境变量。1.进程优先级说到优先级,我们首先要清楚什么是优先级,和权限有什么关系呢?优先级是进程获取资源的先后顺序 ,而权限呢?谈的是能不能,比如:您是一名学生,您要去教室食堂吃饭,此时你是不能去的,因为你没有权限。 而优先级指的是您去学生食堂吃饭,但是可能人多,你需要排队,主要指的是先手顺序,但是一定能吃到饭。

ubuntu网络配置及网络测试工具_10965183的博客-多极客编程

1、修改网卡名称#修改配置文件为下面形式root@ubuntu1804:~#vi /etc/default/grubGRUB_CMDLINE_LINUX="net.ifnames=0"#或者sed修改root@ubuntu1804:~# sed -i.bak '/^GRUB_CMDLINE_LINUX=/s#"$#net.ifnames=0"#'/etc/default/grub#生效新的grub

ansible启动/停止tomcat_清晨的博客-多极客编程

1、主程序cat send.yaml---- name: "tomcat发布war包" hosts: tomcat_module vars_files: vars_module/war_module.yaml gather_facts: no tasks: - name: "war包部署" include: war_module/war.yaml when: is