数据中台开源解决方案(一)

news/2024/5/21 15:37:00/文章来源:https://www.cnblogs.com/tiduyun/p/16785514.html

数据中台商业的解决方案有很多,开源框架种类繁多,每一个模块都有很多开源的套件。以查询引擎为例,可以使用的开源工具有MySQL、Redis、Impala、MongoDB、PgSQL等。可以根据实际业务需要,选择合适的开源套件。

可供选择的解决方案太多,重点推荐开源解决方案,框架图如下图所示。企业的数据应用主要有离线计算和实时计算。建议离线计算优先选择Hive和Spark。Spark是基于内存的。实时计算目前主流的选择是Flink框架。

 

1.数据存储

互联网行业大数据的主流存储框架是基于Hadoop的分布式文件系统HDFS。由于其具有高容错性和适合批处理数据的特点,适合部署在低廉的PC服务器上存储海量的数据,数据存储的性价比较高。

2.离线计算

在HDFS的基础上,Hadoop生态又开发了离线数据仓库计算引擎Hive。Hive 基于MapReduce技术支持分布式批处理计算,同时支持以SQL操作的方式对存储在HDFS上的数据进行「类数据库」的操作、计算和统计分析。Hive 适合海量数据的批处理操作场景,操作简单,容错性和扩展性好,缺点是高延迟、查询和计算都比较慢,因此Hive被广泛应用在离线计算场景中,尤其是对海量数据的批处理操作和分析场景中。

因为基于MapReduce技术涉及磁盘间高频的I/O操作,所以Hive的计算效率较低,时效很长。为了提高计算的效率,Hive社区增加了新的计算引擎,即Spark。与MapReduce相比,Spark的RDD计算引擎基于内存进行计算,计算和查询效率显著提升。

目前,主流的离线计算框架采用Hive和Spark结合的方式。在100 个节点以下时,可以选用Hive作为数据仓库、Spark作为计算引擎。另外,对于海量数据场景(如节点数需要几百个甚至上千个时),Hive的优势是稳定性和容错性好,可以用于处理海量数据的复杂计算。Spark的优势是计算速度快,缺点是容易出现内存泄漏和不足,从而导致计算缓慢或者任务失败。在海量数据场景中,出于稳定的要求,Spark一般用于处理数据仓库上层的查询、计算和分析操作,而底层的操作由Hive完成。重点推荐使用Hive和Spark工具。

3.实时计算

开源的实时计算框架比较多,如Spark、Storm和Flink等。与Storm 相比,Spark的优势是用一个统一的框架和引擎支持批处理、流计算、查询、机器学习等功能。由于Spark的微批处理的设计机制,在处理流数据的时候,效率比Storm要低。整体而言, Spark 体系更加成熟, 易用性较好、社区文档和案例更加丰富,如果对于数据延迟要求是秒级,那么 Spark 更容易上手且能满足性能要求。

4.查询引擎

为了提高数据交互性查询的效率,在大数据时代根据不同的业务要求诞生了很多新的查询引擎,常见的查询引擎有HBase、Redis、MongoDB 等。按照大类划分,查询引擎可以分为SQL交互式查询引擎和NoSQL交互式查询引擎。HBase、Redis、MongoDB都属于NoSQL交互式查询引擎。

1)SQL交互式查询引擎

常用的SQL交互式查询引擎有Impala、Presto、ClickHouse、Kylin 等。Impala和Presto基于MPP架构,通过分布式查询引擎提高查询效率。ClickHouse、Kylin是目前主流的联机分析处理OLAP计算和查询引擎。Kylin 通过预计算机制,提前将客户经常查询的维度和指标设计好并进行预处理操作,以数据立方体模型(Cube)形式缓存,以便加快聚合操作和查询的速度,特别适合对海量数据的OLAP场景。由于需要提前将数据预处理好,Kylin需要消耗额外的空间,且无法高效支持随机的计算和查询。

ClickHouse 适合海量数据的大宽表(维度和指标较多的表)的灵活和随机的查询、过滤和聚合计算,写入和查询性能很好,而多表关联操作性能一般,尤其是多个数据量较大的表(即大表)关联的情况。其劣势是不擅长高频的修改和删除操作,在多用户高并发场景中性能一般。

Presto由Facebook开源,支持基于内存的并行计算,支持多个外部数据源和跨数据源的级联查询,在对单表的简单查询和多表关联方面性能较好,擅长进行实时的数据分析。在处理海量数据时,Presto对内存容量要求高,多个大表关联容易出现内存溢出。

Impala由Cloudera推出,是一个SQLon Hadoop的查询工具,也基于内存进行并行计算,目标是提供HDFS、HBase数据源复杂的高性能交互式查询。

2)NoSQL交互式查询引擎

HBase是基于key-value原理的列式查询引擎,适用于频繁进行插入操作且查询字段较多的场景,如统计每分钟每个商品的点击次数、收藏次数、购买次数等。HBase的列式扩展能力较强,理论上硬盘有多大,HBase 的存储能力就有多大。HBase不适用于大量更改(update)操作的场景。HBase的主要缺点是update操作性能较低。

Redis是内存数据库。Redis的原理是基于内存进行计算和查询。Redis 的存储容量与内存容量有关,支持的数据类型比较丰富,有一定的持久化能力,适用于高频 update 操作的场景,读写的速度都非常快。其缺点是内存容量有限,价格较高,一般用于存储非常有价值且需要高频读写的数据。比如,实时统计全站客户累计点击次数、收藏次数、购买次数等用于数据看板(dashboard)的展示。

MongoDB主要以JSON(JavaScript Object Notation)数据串格式存储数据,适用于表结构变化大的海量数据查询和聚合计算的场景,这是其区别于其他数据库的重要特色。比如,构建客户大宽表,客户的有关字段经常发生改变或增删,在这种场景中很适合用MongoDB存储并高效读取客户的单一维度信息或聚合信息。但是其写入操作和多表关联复杂操作性能一般,很少用于复杂的多表关联的计算场景。在实际应用中,一般会综合部署上述NoSQL引擎,满足不同的应用场景。

5.数据采集工具

开源的数据采集工具很多,如Sqoop、DataX、Scrapy、Flume、Logstash和StreamSets等。Sqoop和DataX主要用于采集结构化数据,Flume和Logstash主要用于采集非结构化数据。StreamSets同时支持结构化和非结构化数据的采集。

在结构化数据采集方面,与DataX相比,Sqoop的综合性能更好,社区更活跃,插件更丰富,使用更广泛。Logstash 更轻量,使用更简单,插件丰富,对技术要求不高,运维比较简单。Flume框架更复杂,偏重于数据传输过程中的安全,不会出现丢包的情况, 整体配置更复杂, 入门难度较高, 运维难度更高。StreamSets 通过可视化界面的拖、拽等操作实现数据的采集和传输,支持多种数据源,组件丰富,功能强大,简单易用,且内置监控组件,可以实时监控数据传输情况。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【RCJ-2 AC220V 0.015A静态冲击继电器】

系列型号 RCJ-2/48VDC冲击继电器 RCJ-2/110VDC冲击继电器 RCJ-2/220VDC冲击继电器 RCJ-2/100VAC冲击继电器 RCJ-2/127VAC冲击继电器 RCJ-2/220VAC冲击继电器 RCJ-3/220VAC冲击继电器 RCJ-3/127VAC冲击继电器 RCJ-3/100VAC冲击继电器 RCJ-3/220VDC冲击继电器 RCJ-3/110VDC冲击继…

【论文笔记】CIKM‘22 & Amazon | (Navip) 推荐系统中图神经网络的去偏邻域聚合

目录1. Introduction2. Related Work2.1 基于GNN的推荐2.2 逆倾向评分IPS3. 模型3.1 Navip4. 实验结果本文是亚马逊在CIKM 2022的一篇工作 论文地址:https://arxiv.org/pdf/2208.08847.pdf 问题 图形神经网络(GNN)对于曝光偏差的脆弱性导致模型偏差,产生…

09-Pytorch中的序列化容器

目录 1.梯度消失和梯度爆炸 1.1 梯度消失 1.2 梯度爆炸 1.3 解决梯度消失或梯度爆炸的经验 2.nn.Sequential 3.nn.BatchNorm1d 4.nn.Dropout 1.梯度消失和梯度爆炸 在使用pytorch中的序列化容器之前,我们先来了解一下常见的梯度消失和梯度爆炸的问题。 1.1 …

②、HTML 元素学习

HTML 元素 HTML 文档由 HTML 元素定义。 HTML 元素 *开始标签常被称为起始标签(opening tag),结束标签常称为闭合标签(closing tag)。 HTML 元素语法 HTML 元素以开始标签起始HTML 元素以结束标签终止元素的内容是开始…

Class02

Class02 1.自动类型值转换 隐式类型转换 显式类型转换 隐式类型转换(自动类型转换) 隐式类型转换是小范围向大范围转换 实际上小范围包含在大范围内 整数类型的默认类型为int 浮点数类型的默认类型为double 显式类型转换(强制类型转换&am…

linux 预读机制 (linux4.14)

一、基本概念 设计背景 文件一般是顺序访问的,访问[A, B]范围的数据后,接下来很可能访问[B1, BN]数据。由于访问磁盘、flash等存储器件比较耗时,在访问 [A, B]的时候,如果提前把[B1, BN]数据从存储器件读取到ram中,那…

TTN服务器LoRaWAN网关配置流程

在LoRaWAN物联网网络中,LoRaWAN网关起到了绝对核心的作用,它在整个网络中像是一座桥梁建立起网络服务器与终端节点的通信,下面我们将简单介绍如何使用E890-470LG11网关实现TTN服务器与终端节点的通信。 首先,在LoRaWAN通信中&…

亿佰特LoRaWAN入网TTN并订阅MQTT消息

一、LoRaWAN节点入网 1.注册并登录TTN账号。 2.添加网关。Gateway EUI可自定义。 3.切换到亿百特网关配置网页(http://192.168.10.1/),配置网关。 4.切抱TTN网页,创建app,Application ID可任意取,只要不重复就行&…

MSRN(多尺度超分辨率重建)

目前的研究倾向于使用更深层次的卷积神经网络来提高性能。然而,盲目增加网络深度不能有效改善网络。更糟糕的是,随着网络深度的增加,训练过程中出现了更多的问题,需要更多的训练技巧。在本文中,我们提出了一种新颖的多…

TRC丨艾美捷TRC 1-Hexyl-2-phenyl-4说明书

1-Alkyl-2-aryl-4-(1-naphthoyl)pyrroles 作为大丨麻素 CB1 和 CB2 受体的高亲和力配体。 艾美捷TRC 1-Hexyl-2-phenyl-4化学性质: 目录号H297400 化学名称1-Hexyl-2-phenyl-4-(1-naphthoyl)pyrrole JWH-147 同义词JWH-147;(1-己基-5-苯基-1H-吡咯-3-基…

数据库06-Redis 强化

目录 Redis 强化 缓存使用原则 缓存淘汰策略 缓存穿透 缓存击穿 缓存雪崩 Redis持久化 RDB:(Redis Database Backup) AOF(Append Only File): Redis存储原理 Redis集群 Redis 强化 缓存使用原则 什么时候,什么样的数据能够保存在Redis中? 1.数据量不能太大 2.使…

计算机操作系统:输入输出管理知识点汇总(简化版)

说明 博客作为笔记备份,不定时更新参考内容为王道考研《计算机操作系统考研复习指导2023》简化版仅进行了知识点汇总,详细知识点没有记录,主要用来搭知识体系框架思维导图为文字版导出的,可将文字内容粘贴到思维导图软件自动生成…

DDL-操作表查询和创建

DDL-操作表查询以及创建 操作表 1.C(Create):创建语法:create table 表名(列名1 数据类型1,列名2 数据类型2,......列名n 数据类型n);注意:最后一列不需要加逗号 数据类型:int:整数类型age int,double:小数类型score double(5,2)date:日期类型,只包含年月日,yyyy…

二维数组、可变长数组、多维数组、函数调用

1.二维数组名称也可以代表数组里第一个存储区的地址。 例子: 输出结果:二维数组的名称二维数组第一个数的地址 二维数组的名称也不可以被赋值。 二维数组名称也可以进行sizeof计算,结果是二维数组里所有存储区的总大小。 例子:…

Spring源码深度解析:三、Spring之Bean的生命周期

Bean的生命周期 创建的生命周期 UserService---->推断构造---->普通对象----->依赖注入---->初始化前(PostConstruct)----->初始化(InitializingBean)---->初始化后(AOP)---->代理对象-----> 放入Map单例池中---->Bean对象 创建一个modle: spring…

Android 简单控件 - -4.按钮控件 button

系列文章目录 文章目录系列文章目录前言1.按钮控件Button1.1按钮控件的新增属性2. 点击事件和长按事件2.1 点击事件2.2 长按事件3. 禁用与恢复按钮总结前言 提示:以下是本篇文章正文内容,下面案例可供参考 1.按钮控件Button 按钮控件Button由TextView派…

CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?

这是一个非常好的问题,相信本文能把这个问题讲得清清楚楚 上周我在查阅资料时无意中搜到一篇解释 volatile 用法的博文,这篇博文排得很靠前,不过很遗憾,虽然结论是对的,但分析过程完全错误,而且我发现网上…

网络编程套接字

文章目录一、理解源IP和目的IP二、认识端口号三、理解port端口号和进程ID四、理解IP和port端口号五、理解源端口号和目的端口号六、认识TCP协议七、认识UDP协议八、网络字节序字节处理函数九、socket编程socket的解释socket常见APIsockaddr结构十、UDP套接字通信十一、TCP套接字…

ELK/ELFK日志分析系统部署

一、ELK日志分析系统 ELK是一套完整的日志集中处理解决方案,将Elastic Search、Logstash和Kibana三个开开源工具配置使用,发挥出更强大的用户对日志查询、排序、统计需求(还可以加一个filebeat)。 1、组成 ①Elasticserach El…

什么是 Linux发行版;什么是包;什么是包管理器

一个朴素的常见的GNU/Linux操作系统发行版(如 Ubuntu)内容如下: 1. Linux发行版(也被称为GNU/Linux发行版): 是一个系统,用户无须编译,安装后即可使用 2. Linux发行版一般集成了 &…