【数据仓库】hadoop生态圈与数据仓库

文章目录

  • 1.大数据定义
  • 2. Hadoop与数据仓库
  • 3. 关系数据库的可扩展性瓶颈
  • 4. CAP理论
  • 5. Hadoop数据仓库工具
    • 5.1. RDS和TDS
    • 5.2. 抽取过程
    • 5.3. 转换与装载过程
    • 5.4. 过程管理和自动化调度
    • 5.5.数据目录(或者称为元数据管理)
    • 5.6.查询引擎和SQL层
    • 5.7.用户界面

本文主要讨论:

  • 关系型数据库拓展的瓶颈
  • cap理论
  • 想了解数仓需要哪些能力以及这些能力靠哪些大数据技术实现。

1.大数据定义

大数据是具有4V,即Volume、Velocity、Variety、Veracity特征的数据集合,用中文简单描述就是大、快、多、真。

  1. Volume——生成和存储的数据量大
    随着技术的发展,人们收集信息的能力越来越强,随之获取的数据量也呈爆炸式增长。例如百度每日处理的数据量达上百PB,总的数据量规模已经到达EP级。
  2. Velocity——数据产生和处理速度快
    指的是销售、交易、计量等人们关心的事件发生的频率。例如,2015年双十一当天,支付宝的峰值交易数为每秒8.59万笔。
  3. Variety——数据源和数据种类多样
    现在要处理的数据源包括各种各样的关系数据库、NoSQL、平面文件、XML文件、机器日志、图片、音视频流等,而且每天都会产生新的数据格式和数据源。
  4. Veracity——数据的真实性和高质量
    诸如软硬件异常、应用系统bug、人为错误等都会使数据不正确。大数据处理中应该分析并过滤掉这些有偏差的、伪造的、异常的部分,防止脏数据损害到数据分析结果的准确性。

 

2. Hadoop与数据仓库

hadoop处理数据的能力

关系数据库主要的问题是不好扩展,或者说扩展的成本非常高,因此面对当前4Vs的大数据问题时显得能力不足。在大多数情况下,Hadoop生态圈的工具能够比关系数据库处理更多的数据,因为数据和计算都是分布式的。

通过MapReduce时的那个例子进行说明:

在一个10TB的Web日志文件中,找出单词‘ERROR’的个数。解决这个问题最直接的方法就是查找日志文件中的每个单词,并对单词‘ERROR’的出现进行计数。做这样的计算会将整个数据集读入内存。

 
假设系统从磁盘到内存的数据传输速率为每秒100MB,这意味着在单一计算机上要将10TB数据读入内存需要27.7个小时。如果我们把数据分散到10台计算机上,每台计算机只需要处理1TB的数据。它们彼此独立,可以对自己的数据分片中出现的‘ERROR’计数,最后再将每台计算机的计数相加。
在此场景下,每台计算机需要2.7个小时读取1TB数据。因为所有计算机并行工作,所以总的时间也近似是2.7个小时。
 
这种方式即为线性扩展——可以通过增加机器数量来减少处理数据花费的时间。以此类推,使用100台计算机,做这个任务只需0.27个小时。
Hadoop背后的核心观点是:如果一个计算可以被分成小的部分,每一部分工作在独立的数据子集上,并且计算的全局结果是独立部分结果的联合,那么此计算就可以分布在多台计算机中并行执行。

 

3. 关系数据库的可扩展性瓶颈

可扩展性就是能够通过增加资源来提升容量,并保持系统性能的能力。可扩展性可分为向上扩展(Scale up)和向外扩展(Scale out)。

  1. 向上扩展有时也称为垂直扩展,比如通过增加CPU、内存、磁盘等方式提高处理能力。
  2. 向外扩展有时也称为横向扩展或水平扩展,由多台廉价的通用服务器实现分布式计算,分担某一应用的负载。关系数据库的向外扩展主要有Shared Disk和Shared Nothing两种实现方式。
  • Shared Disk的各个处理单元使用自己的私有CPU和内存,共享磁盘系统,典型的代表是Oracle RAC
  • Shared Nothing的各个处理单元都有自己私有的CPU、内存和硬盘,不存在共享资源,各处理单元之间通过协议通信,并行处理和扩展能力更好,MySQL Fabric采用的就是Shared Nothing架构。

关系型数据拓展的瓶颈在哪里?

Oracle RAC是Oracle的集群解决方案。

其架构的最大特点是共享存储架构(Shareddisk),整个RAC集群建立在一个共享的存储设备之上,节点之间采用高速网络互连。Oracle RAC提供了较好的高可用特性,比如负载均衡和透明应用切换。

在这里插入图片描述
缺点

  1. RAC的扩展能力有限,32个节点的RAC已算非常庞大了。随着节点数的不断增加,节点间通信的成本也会随之增加,当到达某个限度时,增加节点不会再带来性能上的提高,甚至可能造成性能下降。
  2. RAC的另外一个问题是,整个集群都依赖于底层的共享存储,因此共享存储的I/O能力和可用性决定了整个集群可以提供的能力。

 
2. MySQL Fabric(主要实现了HA和分片)

  • HA:ing
  • 分片:
    当单个MySQL服务器(或HA组)的写性能达到极限时,可以使用Fabric把数据分布到多个MySQL服务器。
    分片键与分片映射:管理员指定每个表上的哪些列作为分片键,MySQL Fabric使用分片键计算(range或hash)一个表的特定行应该存在于哪个分片上。单一事务可以访问一个分片中的所有数据(ing)。

 

4. CAP理论

传统数据库难以拓展的根本原因:

数据库的可扩展性存在很大的局限。虽然这种情况随着分布式数据库技术的出现而有所缓解,但还是无法像Hadoop一样轻松在上千个节点上进行分布式计算。究其原因,就不得不提到CAP理论。

CAP理论指的是:任何一个分布式计算系统都不能同时保证如下三点:

  • Consistency(一致性):所有节点上的数据时刻保持同步。
  • Availability(可用性):每个请求都能接收到一个响应,无论响应成功或失败。
  • Partition tolerance(分区容错性):系统应该能持续提供服务,无论网络中的任何分区失效。

高可用、数据一致是很多系统设计的目标,但是分区又是不可避免的

  • CA without P:如果不要求P(不允许分区,即单机情况,不存在数据同步的问题),则C(强一致性)和 A(可用性)是可以保证的。传统关系型数据库大都是这种模式。但涉及到大数据模式下,分区是一定存在的。
  • CP without A:如果不要求A(高可用),相当于每个请求都需要在节点之间强一致,而P(分区)会导致同步时间无限延长,如此CP也是可以保证的。很多传统的数据库分布式事务都属于这种模式,当处理大数据量时,这种性能会很低。
  • AP wihtout C:要高可用并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。现在众多的NoSQL都属于此类。或者我们保证弱一致性,这样全局数据也会一样,虽然有延迟。

 

5. Hadoop数据仓库工具

当数据仓库应用的规模和数据量大到一定程度,关系数据库已经不再适用,此时Hadoop是开发数据仓库项目的可选方案之一。
如下图,一个常规数据仓库由两类存储和6个主要功能模块组成。下面我们就介绍与这8个部分对应的Hadoop相关组件或产品。

在这里插入图片描述

5.1. RDS和TDS

  • RDS是原始数据存储,其数据是从操作型系统抽取而来。它有两个作用,一是充当操作型系统和数据仓库之间的过渡区,二是作为细节数据查询的数据源。
  • TDS是转换后的数据存储,也就是数据仓库,用于后续的多维分析或即席查询。

这两类数据(只是)逻辑上分开,物理上可以通过在Hive上建立两个不同的数据库来实现,最终所有数据都被分布存储到HDFS上。

 

5.2. 抽取过程

这里的抽取过程指的是把数据从操作型数据源抽取到RDS的过程,这个过程可能会有一些数据集成的操作,但不会做数据转换、清洗、格式化等工作。

Hadoop生态圈中的主要数据摄取工具是Sqoop和Flume。

Sqoop被设计成支持在关系数据库和Hadoop之间传输数据,而Flume被设计成基于流的数据捕获,主要是从日志文件中获取数据。使用这两个工具可以完成数据仓库的抽取。

如果数据源是普通的文本和CSV文件,抽取过程将更加简单,只需用操作系统的scp或ftp命令将文件拉取到Hadoop集群的任一节点,然后使用HDFS的put命令将已在本地的文件上传到HDFS,或者使用Hive的load data将文件装载进表里就可以了。

这里flinkx对文本和csv提供了抽取的能力,简化了数据摄取对工具使用的复杂度。

 

5.3. 转换与装载过程

转换与装载过程是将数据从RDS迁移到TDS的过程,期间会对数据进行一系列的转换和处理。经过了数据抽取步骤,此时数据已经在Hive表中了,因此Hive可以用于转换和装载。

 

5.4. 过程管理和自动化调度

ETL过程自动化是数据仓库成功的重要衡量标准,也是系统易用性的关键。

Hadoop生态圈中过程管理和自动化调度工具有:

  • Falcon是数据治理工具,能让用户建立定义好的ETL流水线。
  • Oozie是Hadoop的工作流调度系统,可以使用它将ETL过程封装进工作流自动执行。

其他可参考:
大数据调度平台分类大对比(Oozie/Azkaban/AirFlow/XXL-Job/DolphinScheduler)

 

5.5.数据目录(或者称为元数据管理)

数据目录存储的是数据仓库的元数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。

数据目录管理工具:
HCatalog 提供了一个统一的元数据服务,允许不同的工具如 Pig、MapReduce 等通过 HCatalog 直接访问存储在 HDFS 上的底层文件。

HCatalog 是 Apache 的顶级项目,从 Hive0.11.0 开始,HCatalog 已经合并到 Hive 中。也就是说,如果是通过 binary 安装的 Hive0.11.0 之后的版本,HCatalog 已经自动安装了,不需要再单独部署。

因为 HCatalog 使用的就是 Hive 的元数据,因此对于 Hive 用户来说,不需要使用额外的工具来访问元数据。

其他可参考:六种元数据管理工具。

 

5.6.查询引擎和SQL层

查询引擎和SQL层主要的职责是查询和分析数据仓库里的数据。

Hadoop生态圈中的主要SQL查询引擎有

  • 基于MapReduce的Hive、
  • 基于RDD的SparkSQL
  • Cloudera公司的Impala。
    Hive可以在四种主流计算框架的三种,分别是Tez、MapReduce和Spark(还有一种是Storm)上执行类SQL查询。

 

5.7.用户界面

数据分析的结果最终要以业务语言和形象化的方式展现给用户。数据仓库的最终用户界面通常是一个BI仪表盘或类似的一个数据可视化工具提供的浏览器页面。

Hadoop生态圈中比较知名的数据可视化工具是Hue和Zeppelin。

https://gethue.com/

 
 

参考:
《Hadoop构建数据仓库实战》

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

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

相关文章

9中间件-Redis、MQ---进阶

mq进阶 RabbitMQ 怎么避免消息丢失? 把消息持久化磁盘,保证服务器重启消息不丢失。 每个集群中至少有一个物理磁盘,保证消息落入磁盘。#RabbitMQ 的消息是怎么发送的? 首先客户端必须连接到 RabbitMQ 服务器才能发布和消费消息&…

笙默考试管理系统-MyExamTest----codemirror(33)

笙默考试管理系统-MyExamTest----codemirror(33) 目录 一、 笙默考试管理系统-MyExamTest 二、 笙默考试管理系统-MyExamTest 三、 笙默考试管理系统-MyExamTest 四、 笙默考试管理系统-MyExamTest 五、 笙默考试管理系统-MyExamTest 笙默考试…

数仓建设(三)

4) 累积快照事实表 多个业务过程联合分析而构建的事实表,如采购单的流转环节。用于分析事件时间和时间之间的间隔周期。少量的且当前事务型不支持的,如关闭、发货等相关的统计。 4. DWS公共汇总层设计规范 数据仓库的性能是数据仓库建设是否成功的重要标…

PA2019 Terytoria

洛谷P5987 [PA2019] Terytoria 题目大意 在一个平面直角坐标系上,有一个长度为 X X X,宽度为 Y Y Y的地图,这个地图的左边界和右边界是连通的,下边界和上边界也是连通的。 在地图中,有 X Y X\times Y XY个格子以及…

【vue2高德地图api】03-完善展示页,并且调用poi搜索接口

系列文章目录 文章目录 系列文章目录前言一、编写页面内容样式1.1 html内容1.2 css内容解决报错 二、完善api接口变量方法1.data变量2. methods3. computed4. api接口方法 三、配置api接口方法创建map.jsgetParkList方法 移动端控制台插件四、编写components组件在main.js中引入…

算启新程 智享未来 | 紫光展锐携手中国移动共创数智未来

10月11日-13日,2023年中国移动全球合作伙伴大会在广州举行,此次大会以“算启新程 智享未来”为主题,与合作伙伴一起共商融合创新,共创数智未来。作为中国移动每年规模最大、最具影响力的盛会,吸引了数百家世界500强企业…

[机缘参悟-110] :一个IT人对面具的理解:职业面具戴久了,就会忘记原本真实的自己,一个人是忠于职位,还是忠于内心?

目录 一、职业面具戴久了,就会忘记原本真实的自己 二、霸王别姬 三、没有对错,各走各路 3.1 程蝶衣:戏里戏外,忠于角色 3.2 段小楼:戏里戏外,角色分明 3.3 没有对错,各走各路 四、职场中…

视口 css

视口是浏览器上显示网页的一块区域,大小并不局限于浏览器可视区域范围。PC端和移动端视口差别很大。PC端中视口宽度始终与浏览器窗口宽度一致,移动端视口与浏览器窗口宽度完全独立。 PC端 PC端视口大小等于浏览器窗口可视区域大小,无论浏览…

集准测试-架构真题(五十六)

如果数据库单标即可实现业务功能,采用()方式进行数据交换与处理较为合适。如果通过数据库不同表的连接操作获取数据才能实现业务功能,这时候采用()方式进行数据交换与处理合适。 主动记录数据网关包装器数…

RabbitMQ的LazyQueue

在默认情况下,RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟。但在某些特殊情况下,这会导致消息积压,比如: 消费者宕机或出现网络故障消息发送量激增,超过了消费者处理速度消费者处理业务发生阻塞 一旦…

PyQt 小程序

设备管理程序 v0.0.1.0, 终于出了一个基础版本,… … 两个字典的键值判断 辛亏用的是Python 这个编码时间大大缩短了 对已有的命令行进行GUI 化 from typing import Optional import PySide6.QtCore import PySide6.QtWidgets from cmd_ui import Ui_MainWindow from PySide6.…

Qt 视口和窗口的区别

视口和窗口 绘图设备的物理坐标是基本的坐标系,通过QPainter的平移、旋转等变换可以得到更容易操作的逻辑坐标 为了实现更方便的坐标,QPainter还提供了视口(Viewport)和窗口(Window)坐标系,通过QPainter内部的坐标变换矩阵自动转换为绘图设…

Vue2使用定时器和闭包实现防抖和节流函数。将函数放入util.js中,供具体功能在methods中调用

Vue2使用定时器和闭包实现防抖和节流函数。将函数放入util.js中&#xff0c;供具体功能在methods中调用。<br/ 参考文档&#xff1a; 如何在Vue中优雅的使用防抖节流人类高质量JS防抖与节流机制Vue项目中使用防抖和节流vue2使用lodash中的防抖&#xff08;debounce&#xff…

小程序首页搭建

小程序首页搭建 1. Flex布局是什么&#xff1f;2. 容器的属性2.1 flex-direction属性2.2 flex-wrap属性2.3 flex-flow属性2.4 justify-content属性2.5 align-items属性2.6 align-content属性 二.首页布局搭建二.1moke模拟数据实现轮播图4.信息搭建 Flex弹性布局 1. Flex布局是…

未来展望:大型语言模型与 SQL 数据库集成的前景与挑战

一、前言 随着 GPT-3、PaLM 和 Anthropic 的 Claude 等大型语言模型 (LLM) 的出现引发了自然语言在人工智能领域的一场革命。这些模型可以理解复杂的语言、推理概念并生成连贯的文本。这使得各种应用程序都能够使用对话界面。然而&#xff0c;绝大多数企业数据都存储在结构化 …

我的创作纪念日———C/C++之动态内存管理

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.前言 2.为什么要有动态内存分配…

NSS [NISACTF 2022]easyssrf

NSS [NISACTF 2022]easyssrf 先看题目&#xff0c;给了一个输入框 看这提示就知道不是curl了&#xff0c;先file协议读一下flag&#xff0c;file:///flag 不能直接读flag&#xff0c;读个提示文件file:///fl4g 访问一下 <?phphighlight_file(__FILE__); error_reporting(0…

python每日一练(9)

&#x1f308;write in front&#x1f308; &#x1f9f8;大家好&#xff0c;我是Aileen&#x1f9f8;.希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流. &#x1f194;本文由Aileen_0v0&#x1f9f8; 原创 CSDN首发&#x1f412; 如…

mybatisplus 自定义mapper加多表联查结合分页插件查询时出现缺失数据的问题

问题描述 最近做项目时使用了mybatisplus&#xff0c;分页插件也使用的是mybatisplus自带的分页插件&#xff0c;业务需求是查询客户列表&#xff0c;每个客户列表中有一个子列表&#xff0c;在通过分页插件查询后&#xff0c;会出现数量总数为子列表总数、客户列表与子列表不…

oracle库中数据利用datax工具同步至mysql库

查看oracle版本 $sqlplus aaa/aaaa192.168.1.1/lcfaSQL*Plus: Release 19.0.0.0.0 - Production on Tue Oct 17 15:56:46 2023 Version 19.15.0.0.0Copyright (c) 1982, 2022, Oracle. All rights reserved.Last Successful login time: Tue Oct 17 2023 15:56:03 08:00Conne…