漫谈工业大数据9:开源工业大数据软件简介(上)

漫谈工业大数据9:开源工业大数据软件简介(上),第1张

今天真是一个美好的时代,有无数的开源系统可以为我们提供服务,现在有许多开发软件可以用到工业大数据中,当然很多系统还不成熟,应用到工业中还需要小心,并且需要开发人员对其进行一定的优化和调整。下面就简单介绍一些开源的大数据工具软件,看看有哪些能够应用到工业大数据领域。

下面这张图是我根据网上流传的一张开源大数据软件分类图整理的:

我们可以把开源大数据软件分成几类,有一些可以逐步应用到工业大数据领域,下面就一一介绍一下这些软件。(以下系统介绍大都来源于网络)

1、数据存储类

(1)关系数据库MySQL

这个就不用太多介绍了吧,关系型数据库领域应用最广泛的开源软件,目前属于 Oracle 旗下产品。

(2)文件数据库Hadoop

Hadoop是大数据时代的明星产品,它最大的成就在于实现了一个分布式文件系统(Hadoop Distributed FileSystem),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上,而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。

Hadoop可以在工业大数据应用中用来作为底层的基础数据库,由于它采用了分布式部署的方式,如果是私有云部署,适用于大型企业集团。如果是公有云的话,可以用来存储文档、视频、图像等资料。

(3)列数据库Hbase

HBase是一个分布式的、面向列的开源数据库,HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

基于Hbase开发的OpenTSDB,可以存储所有的时序(无须采样)来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易的接入到现有的报警系统里。

这样的话,它就可以替代在工业领域用得最多的实时数据库。

(4)文档数据库MongoDB

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

MongoDB适合于存储工业大数据中的各类文档,包括各类图纸、文档等。

(5)图数据库Neo4j/OrientDB

图数据库不是存放的,是基于图的形式构建的数据系统。

Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、 企业级 的数据库的所有好处。

OrientDB是兼具文档数据库的灵活性和图形数据库管理 链接 能力的可深层次扩展的文档-图形数据库管理系统。可选无模式、全模式或混合模式下。支持许多高级特性,诸如ACID事务、快速索引,原生和SQL查询功能。可以JSON格式导入、导出文档。若不执行昂贵的JOIN *** 作的话,如同关系数据库可在几毫秒内可检索数以百记的链接文档图。

这些数据库都可以用来存储非结构化数据。

2、数据分析类

(1)批处理MapReduce/Spark

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(归约)",是它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。

这些大数据的明星产品可以用来做工业大数据的处理。

(2)流处理Storm

Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。Storm有很多使用场景:如实时分析,在线机器学习,持续计算,分布式RPC,ETL等等。Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个结点每秒可以处理数以百万计的消息)。Storm的部署和运维都很便捷,而且更为重要的是可以使用任意编程语言来开发应用。

(3)图处理Giraph

Giraph是什么?Giraph是Apache基金会开源项目之一,被定义为迭代式图处理系统。他架构在Hadoop之上,提供了图处理接口,专门处理大数据的图问题。

Giraph的存在很有必要,现在的大数据的图问题又很多,例如表达人与人之间的关系的有社交网络,搜索引擎需要经常计算网页与网页之间的关系,而map-reduce接口不太适合实现图算法。

Giraph主要用于分析用户或者内容之间的联系或重要性。

(4)并行计算MPI/OpenCL

OpenCL(全称Open Computing Language,开放运算语言)是第一个面向 异构系统 通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算 服务器 、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在 游戏 、 娱乐 、科研、医疗等各种领域都有广阔的发展前景。

(5)分析框架Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

(6)分析框架Pig

Apache Pig 是apache平台下的一个免费开源项目,Pig为大型数据集的处理提供了更高层次的抽象,很多时候数据的处理需要多个MapReduce过程才能实现,使得数据处理过程与该模式匹配可能很困难。有了Pig就能够使用更丰富的数据结构。[2]

Pig LatinPig Latin 是一个相对简单的语言,一条语句 就是一个 *** 作,与数据库的表类似,可以在关系数据库中找到它(其中,元组代表行,并且每个元组都由字段组成)。

Pig 拥有大量的数据类型,不仅支持包、元组和映射等高级概念,还支持简单的数据类型,如 int、long、float、double、chararray 和 bytearray。并且,还有一套完整的比较运算符,包括使用正则表达式的丰富匹配模式。

配置完成后,由druid的query节点的8888端口提供可视化页面,可以通过nginx来反向代理103210240:8888和103210241:8888

注意:启动完成后要通过exit退出服务器连接,不能直接关闭窗口或断开连接,不然druid的后台进程也会被关闭

在物联网应用系统中使用NoSQL数据库是一个不错的选择,因为NoSQL数据库可以处理海量、多变的数据,并且拥有优秀的横向扩展性。以下是适合物联网应用系统的几种NoSQL数据库类型:

1 文档型数据库:文档型数据库支持存储和查询结构化和非结构化数据,并且能够轻松地存储和检索复杂的数据类型,例如JSON和XML格式。在物联网应用程序中,文档型数据库可以快速存储传感器数据、日志、警报和配置数据等信息。

2 列族型数据库:列族型数据库适用于需要处理大量数据的应用程序,例如数据聚合和时间序列数据分析。在物联网应用程序中,使用列族型数据库可以存储和查询大量时间序列数据,例如传感器读数、状态数据和其他一些深度数据等信息。

3 Key-Value型数据库:Key-Value型数据库是一种简单易用的NoSQL数据库,每个键都关联着一个值。在物联网应用程序中,使用Key-Value型数据库可以存储和查询对象的属性,以及配置数据和元数据等信息。

以上是应用于物联网应用系统中的几种NoSQL数据库类型,也可以根据应用需求和数据类型选择其他适合的NoSQL数据库类型。

MongoDB 50标志着一个新的发布周期的到来,以更快地交付新特性给到用户。版本化API与在线重新分片相结合,使用户不必担心未来的数据库升级以及业务变化问题;本地原生时间序列数据平台也使MongoDB能支持更广泛的工作负载和业务场景;新的MongoDB Shell能够提升用户体验等均为MongoDB 50的功能。本文主要介绍MongoDB 50的新特性。

MongoDB 50通过原生支持整个时间序列数据的生命周期(从采集、存储、查询、实时分析和可视化,到在线归档或随着数据老化自动失效),使构建和运行时间序列应用程序的速度更快、成本更低。随着MongoDB 50的发布,MongoDB扩展了通用的应用数据平台,使开发能够更容易地处理时间序列数据,进一步扩展其在物联网、金融分析、物流等方面的应用场景。

MongoDB的时间序列集合以高度优化和压缩的格式自动存储时间序列数据,减少了存储大小和I/O,以实现更好的性能和更大的规模。同时也缩短了开发周期,使您能够快速建立一个针对时间序列应用的性能和分析需求而调优的模型。

创建时间序列数据集合的命令示例:

MongoDB可以无缝地调整采集频率,并根据动态生成的时间分区自动处理无序的测量值。最新发布的MongoDB Connector for Apache Kafka实现了在本地支持时间序列,您可以直接从Kafka主题消息中自动创建时间序列集合,使您在收集数据的同时根据需要对数据进行处理和聚合,然后写入到MongoDB的时间序列集合。

时间序列集合自动创建一个按时间排序的数据聚集索引,降低查询数据的延迟。MongoDB查询API还扩展了窗口函数,您可以运行分析性查询(例如移动平均数和累积总和)。在关系型数据库系统中,这些通常被称为SQL分析函数,并支持以行为单位定义的窗口(即三行移动平均线)。MongoDB更进一步,还增加了指数移动平均线、导数和积分等强大的时间序列函数,支持您以时间为单位定义窗口(例如15分钟的移动平均线)。窗口函数可用于查询MongoDB的时间序列和常规集合,为多种应用类型提供了新的分析方式。另外,MongoDB 50也提供了新的时间运算符,包括$dateAdd、$dateSubstract、$dateDiff和$dateTrunc,使您可以通过自定义的时间窗口对数据进行汇总和查询。

您可以将MongoDB的时间序列数据与企业的其他数据相结合。时间序列集合可以与同一个数据库中的常规MongoDB集合放在一起,您不必选择一个专门的时间序列数据库(它不能为任何其他类型的应用提供服务),也不需要复杂的集成来混合时间序列和其他数据。MongoDB通过提供一个统一的平台,让您建立高性能和高效的时间序列应用的同时,也为其他用例或工作负载提供支持,从而消除了整合和运行多个不同数据库的成本和复杂性。

从MongoDB 50开始, Write Concern 默认级别为majority,仅当写入 *** 作被应用到Primary节点(主节点)且被持久化到大多数副本节点的日志中的时候,才会提交并返回成功,“开箱即用”地提供了更强的数据可靠性保障。

说明 Write Concern 是完全可调的,您可以自定义配置 Write Concern ,以平衡应用程序对数据库性能和数据持久性的要求。

默认情况下,一个客户端连接对应后端MongoDB服务器上的一个线程( netserviceExecutor 配置为synchronous)。创建、切换和销毁线程都是消耗较大的 *** 作,当连接数过多时,线程会占用MongoDB服务器较多的资源。

连接数较多或创建连接失控的情况称为“连接风暴”,产生该情况的原因可能是多方面的,且经常是在服务已经受到影响的情况下发生。

针对这些情况,MongoDB 50采取了以下措施:

以上措施,加上之前版本在mongos查询路由层的改进,进一步提升了MongoDB承受高并发负载的能力。

长时间运行的快照查询(Long-Running Snapshot Queries)增加了应用程序的通用性和d性。您可以通过该功能运行默认时间为5分钟的查询(或将其调整为自定义持续时间),同时保持与实时事务性数据库一致的快照隔离,也可以在Secondary节点(从节点)上进行快照查询,从而在单个集群中运行不同的工作负载,并将其扩展到不同的分片上。

MongoDB通过底层存储引擎中一个名为Durable history的项目实现了长期运行的快照查询,该项目早在MongoDB 44中就已实现。Durable history将存储自查询开始以来所有变化的字段值的快照。通过使用Durable history,查询可以保持快照隔离,即使在数据发生变化的情况下,Durable history也有助于降低存储引擎的缓存压力,使得业务可以在高写入负载的场景下实现更高的查询吞吐量。

为了提供更好的用户体验,MongoDB 50从头开始重新设计了MongoDB Shell(mongosh),以提供一个更现代化的命令行体验,以及增强可用性的功能和强大的脚本环境。新版MongoDB Shell已经成为MongoDB平台的默认shell。新版MongoDB Shell引入了语法高亮、智能自动完成、上下文帮助和有用的错误信息,为您创造一个直观、互动的体验。

随着新的PyMongoArrow API的发布,您可以在MongoDB上使用Python运行复杂的分析和机器学习。PyMongoArrow可以快速将简单的MongoDB查询结果转换为流行的数据格式(例如Pandas数据框架和NumPy数组),帮助您简化数据科学工作流程。

Schema验证(模式验证)是对MongoDB进行数据应用管理控制的一种方式。MongoDB 50中,模式验证变得更加简单和友好,当 *** 作验证失败时都会产生描述性的错误信息,帮助您了解不符合集合验证器的验证规则的文档及原因,以快速识别和纠正影响验证规则的错误代码。

MongoDB 50支持将正在进行中的索引创建任务在节点重新启动后自动会恢复至原来的位置,减少计划中维护动作对业务的影响。例如:重新启动或升级数据库节点时,您不需要担心当前正在进行的大集合索引创建任务失效。

由于MongoDB支持很多版本和平台,每个发布版本都需在20多个MongoDB支持的平台上进行验证,验证工作量大,降低了MongoDB新功能的交付速度,所以从MongoDB 50开始,MongoDB发布的版本将分为Marjor Release(大版本)和Rapid Releases(快速发布版本),其中Rapid Releases作为开发版本提供下载和测试体验,但不建议用在生产环境。

应用背景:

通过分析序列进行合理预测,做到提前掌握未来的发展趋势,为业务决策提供依据,这也是决策科学化的前提。

时间序列分析:

时间序列就是按时间顺序排列的一组数据序列。

时间序列分析就是发现这组数据的变动规律并用于预测的统计技术。

分析工具:

SPSS

实践案例:通过历史数据预测未来数据,所涉及的都是最简单的实践,抛砖引玉,重在方法,不论多复杂的数据,方法是一样的。

如已知前几年每月的销售量,预测未来的销售量。

一、时间序列分析简介

时间序列分析有 三个基本特点 :

假设事物发展趋势会延伸到未来

预测所依据的数据具有不规则性

不考虑事物发展之间的因果关系

并不是所有的时间序列都一定包含四种因素,如以年为单位的诗句就可能不包含季节变动因素。

四种因素通常有 两种组合方式:

四种因素相互独立,即时间序列是四种因素直接叠加而成的,可用加法模型表示:  Y=T+S+C+I

四种因素相互影响。即时间序列是四种因素相互综合的结果,可用乘法模型表示: Y=TSCI

其中,原始时间序列值和长期趋势可用绝对数表示;季节变动、循环变动、不规则变动可用相对数(变动百分比)表示。

二、季节分解法

当我们对一个时间序列进行预测时,应该考虑将上述四种因素从时间序列中分解出来。

为什么要分解这四种因素?

分解之后,能够克服其他因素的影响,仅仅考量一种因素对时间序列的影响。

分解之后,也可以分析他们之间的相互作用,以及他们对时间序列的综合影响。

当去掉这些因素后,就可以更好的进行时间序列之间的比较,从而更加客观的反映事物变化发展规律。

分解之后,序列可以用来建立回归模型,从而提高预测精度。

所有的时间序列都要分解这四种因素吗?

通常情况下,我们考虑进行季节因素的分解,也就是将季节变动因素从原时间序列中去除,并生成由剩余三种因素构成的序列来满足后续分析需求。

为什么只进行季节因素的分解?

时间序列中的长期趋势反映了事物发展规律,是重点研究的对象;

循环变动由于周期长,可以看做是长期趋势的反映;

不规则变动由于不容易测量,通常也不单独分析。

季节变动有时会让预测模型误判其为不规则变动,从而降低模型的预测精度

综上所述:当一个时间序列具有季节变动特征时,在预测值钱会先将季节因素进行分解。

步骤:

定义日期标示变量:即先将序列的时间定义好,才能分析其时间特征。

了解序列发展趋势:即序列图,确定乘性还是加性

进行季节因素分解

建模

分析结果解读

预测

1、定义日期标示变量

时间序列的特点就是数据根据时间点的顺序进行排列,因此分析之前,SPSS需要知道序列的时间定义,然后才能进行分析时间特征。

根据源数据的格式进行选择,并输入第一个个案的具体数值。

此时会在源文件中生成三个新的变量。

2、了解序列发展趋势

完成日期标示变量的定义之后,需要先对时间序列的变化趋势有所了解,便于选择合适的模型。即通过序列图,确定模型是乘性还是加性。

变量为”销售数据“,时间轴标签为”DATE–“,也就是我们自定义的时间。

数据销量序列图

如何根据序列图来判断模型的乘性或加性?

如果随着时间的推移,序列的季节波动变得越来越大,则建议使用乘法模型。

如果序列的季节波动能够基本维持恒定,则建议使用加法模型。

本例很明显:随着时间变化,销售数据的季节波动越来越大,那么使用乘法模型会更精确。

3、进行季节因素分解

变量为”销售数据“,且根据序列图我们知道时间序列模型为乘性。

提示您会新生成四个变量

ERR(误差序列): 从时间序列中移除季节因素、长期趋势、和循环变动之后留下的序列,也就是原始序列中的不规则变动构成的序列。

SAS(季节因素校正后序列): 是移除原始序列中的季节因素后的校正序列。

SAF(季节因子): 是从序列中分解出的季节因素。其中的变量值根据季节周期的变动进行重复,如本例中季节周期为12个月,所以这些季节因子没12个月重复一次。

STC(长期趋势和循环变动趋势): 这是原始序列中长期趋势和循环变动构成的序列。

如图,周期为12个月,季节因子12个月循环一次。

完成季节因素分解后的序列和原始序列之间有什么差异?

通过回执序列图的方法把原始序列和除去季节因子的三个序列(误差序列、季节因素校正后序列、长期无视和循环变动序列)进行比较。

要做四个序列图,会有四个变量:

原始序列 :使用变量”销售数据“;

误差序列 :使用变量”ERR“;

季节因素校场后序列 :使用变量”SAS“

长期趋势和循环变动序列 :使用变量”STC“

蓝色线:原始序列

紫色线:长期趋势和循环变动序列

浅棕色:季节因素校正后序列

绿色线:误差序列(不规则变动)

因为误差序列数值非常小,所以长期趋势和循环变动序列(长期趋势+循环变动)与季节因素校正后序列(长期趋势+循环变动+不规则变动,即误差)能够基本重合。

在单独做”季节因子SAF“的序列图:

因为是做”季节因子“的序列图,所以只有一个变量”季节因子SAF“

我们看出:季节因素的周期是12个月,先下降,然后上升到第一个顶点,再有略微的下降后,出现明显的上升趋势,到第七个月时达到峰值,然后一路下跌,直到最后一个月份有所回升,之后进入第二个循环周期。

通过对原始序列的季节分解,我们更好的掌握了原始序列所包含的时间特征,从而选用适当的模型进行预测。

三、专家建模法

时间序列的预测步骤有四步:

绘制时间序列图观察趋势

分析序列平稳性并进行平稳化

时间序列建模分析

模型评估与预测

平稳性主要是指时间序列的所有统计性质都不会随着时间的推移而发生变化。

对于一个平稳的时间序列,具备以下特征:

均数和方差不随时间变化

自相关系数只与时间间隔有关,与所处的时间无关

自相关系数是研究序列中不同时期的相关系数,也就是对时间序列计算其当前和不同滞后期的一系列相关系数。

平稳化的方法——差分。

差分就是指序列中相邻的两期数据之差。

一次差分=Yt-Yt-1

二次差分=(Yt-Yt-1)-(Yt-1-Yt-2)

具体的平稳化 *** 作过程会有专家建模法自动处理,我们只需要哼根据模型结果独处序列经过了几阶差分即可。

时间序列分析 *** 作:

要分析所有变量,所以选择”销售数据“。

专家建模器–条件,勾选”专家建模器考虑季节性模型“。

勾选”预测值“,目的是生成预测值,并保存模型。

时间序列分析结果解读

该表显示了经过分析得到的最优时间序列模型及其参数,最优时间U型猎魔性为ARIMA(0,1,1)(0,1,1)

求和自回归移动平均模型ARIMA(p,d,q)(P,D,Q)

p:出去季节性变化之后的序列所滞后的p期,通常为0或1,大于1的情况很少;

d:除去季节性变化之后的序列进行了d阶差分,通常取值为0,1或2;

q:除去季节性变化之后的序列进行了q次移动平均,通常取值0或1,很少会超过2;

P,D,Q分别表示包含季节性变化的序列所做的事情。

因此本例可解读为: 对除去季节性变化的序列和包含季节性变化的序列分别进行了一阶差分和一次移动平均,综合两个模型而建立出来的时间序列模型。

该表主要通过R方或平稳R方来评估模型拟合度,以及在多个模型时,通过比较统计量找到最优模型。

由于原始变量具有季节性变动因素,所以平稳的R方更具有参考意义,等于321%,拟合效果一般。

该表提供了更多的统计量可以用来评估时间序列模型的拟合效果。

虽然平稳R方仅仅是321%,但是”杨-博克斯Q(18)“统计量的显著性P=0706,大于005(此处P>005是期望得到的结果),所以接受原假设,认为这个序列的残差符合随机分布,同时没有离群值出现,也都反映出数据的拟合效果还可以接受。

时间序列应用预测:

未来一年是到2016年12月,手动输入即可。

这是未来一年的销售趋势。

如果想从全局来观察预测趋势,可以在把这一年的趋势和以前的数据连接起来

此时的变量应该是”原始的销售数量“和”2016年的预测销售数量“。

结果如下:

也可以在表中查看具体的数值:

实时数据库主要用于收集运动系统(如工业现场)中大量的、快速变化的数据。实时数据库就是要对这样的数据进行采集、处理、记录、共享。实时数据以时间为主坐标轴,所以实时数据库对时间字段做了大量优化以适应快速存储与检索。实时数据库是数据库系统发展的一个分支,它适于处理不断快速变化的时间序列数据,实时数据库技术是实时系统和数据库技术相结合的产物。

实时数据库就是要针对实时数据的特点,运用各种手段,对数据更高效的处理、让有限存储空间容纳更多的历史数据,更快的检索速度。实时数据库是工业领域信息化的核心基础软件,是大数据、云计算和物联网等产业的核心支撑软件。

随着信息安全备受关注,国家已将自主可控提升到国家战略高度。实时数据库作为一种基础软件,是工业领域信息化的核心组成部分,是智能制造的支撑软件之一,是新一代信息技术应用产业中的关键环节之一。

我国核心软硬件技术经过近几年的快速发展已较为成熟,国产处理器方面如飞腾、龙芯、鲲鹏和兆芯等已完成产业化并实现批量采购,国产 *** 作系统方面如银河麒麟和统信UOS等已广泛应用于各行业及国家重点部门,基础软件和芯片的国产化正在加速落地。紫金桥跨平台实时数据库(RealHistorian)由紫金桥公司自主开发,具有完全自主知识产权,已成功应用于石油、石化、冶金、医药、民船和军工等多个国家重点领域且得到用户的一致认可和好评。

大家都知道Hadoop是一个数据库,其实说的的就是Hbase。它和我们平常理解的关系型数据库有什么区别呢?

1它是NoSQL的,它没有SQL的接口,有自己的一套API。

2关系型数据库可以做汇总,可以进行常规的分析,但是Hbase不可以,它不能做汇总。那么Hbase *** 作不方便,不能做汇总,不能做分析,有什么作用呢?它的随机读写效率很高,可以存储海量数据,基于某个网点,某个城市,某个机器随机去查询速度快。或者去存储基于时间序列的数据,比如微信、微博、日志的数据,效率很高。

3它的存储是列式的,平常我们接触的MySQL,Oracle,RDBMS都是行存储。行存储和列存储的区别是:行存储适合在线事务的场景,适合随机的访问,比如去银行修改账户记录,修改个人信息,这个修改就是从数据库中找到你信息所在的行。列存储就是以列为单位进行连续存储,如果以列存储放到银行这个场景中会是怎样的一种效果呢?如果想要修改信息,那么定义到用户所在行信息,就会扫描到整个表,所以行存储主要用于在线事务处理,而列存储适用于数据分析。因为在大数据的数据库场景中,我们会构建很宽的事实表,通过信息模型有个中心,围绕这个中心扩散出很多维度,这个中间表是一个很宽的表,在我们进行特定业务分析的时候,比如分析广告业务推广的情况,可能只需要从很多资料中选取一部分变量进行分析,如果使用行存储,那么就是全表扫描,而使用列存储会选取特定部分,效率很高。

HBase vs RDBMS

通过以上描述,我们分析一下hbase的特点:

(1)存储海量数据:Pb+

(2)高吞吐:每秒每个节点上千次写

(3)适合处理稀疏数据(半结构化数据):存储一行的空列没有空间浪费。因为半结构化数据有大量的空存在,那么使用结构化数据存储到关系型数据库,就会有大量的空间浪费,而且不适合做分析。

但是hbase访问模式是受到限制的,它对基于行键的查找做了优化,而不是全文查询;没有事务,只支持单行 *** 作。

说了这么多,那么我们为什么使用Hbase呢?这里我们做一个对比:

(1)使用HDFS

你只需要追加到数据集(没有随机写)

通常读取整个数据集(没有随机读)

(2)使用HBase

你需要随机写或读

每秒对TB级的数据执行上千次 *** 作

(3)使用RDBMS

数据放在一个大节点上

需要全部的事务支持

需要实时查询的能力

以上就是关于漫谈工业大数据9:开源工业大数据软件简介(上)全部的内容,包括:漫谈工业大数据9:开源工业大数据软件简介(上)、apache druid(时序数据库)集群搭建、什么类型的nosql数据库比较适合应用在物联网应用系统中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9356947.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存