Hive进阶Day06

目录

一、MapReduce的计算过程

二、Yarn的资源调度

1、yarn的资源调度策略

三、Hive的语法树

四、数据开发

五、数据仓库

六、数据仓库开发流程

七、数仓分层

八、ETL和ELT


一、MapReduce的计算过程

分布式计算框架

需要编写代码执行,执行时会数据所在服务器上运行相同的计算代码

计算过程分为map 和reduce过程

map对多份数据进行拆分计算

reduce将分开的map结果合并一起计算

map的计算程序数量由文件块个数据决定,每个map计算一个块的数据

reduce的个数默认是一个;在进行数据拆分存储时,reduce个数由分区数和分桶数决定

map将数据传递给reduce过程称为shuffle过程

包含 分区,排序,合并

Map阶段

1-按照块数量进行split的块数据读取

2-split切割后的数据传递给对应的map进行处理,会对数据转为kv (张三,1) (张三,1),(李四,1)

3-map将处理的后的数据写入buffer缓存区

4-对缓冲区内的数据进行spill溢出(读取缓冲区内的数据)

5-对读取的数据进行分区,将数据拆分多份

6-对每份拆分的数据进行排序 sort

7-将拆分的数据写入不同的文件

8-在将每次溢出的数据合并merge在一起,保存同一文件,文件是临时文件,计算后会删除

Reduce阶段

1-根据的分区数创建出多个reduce

2-每个reduce从不同的map中fetch获取相同分区的文件数据

3-在将fetch后的文件合并,对合并后的数据进行排序

4-reduce对合并后的文件数据进行计算

5-reduce对结果输出到hdfs的目录下

二、Yarn的资源调度

分布式资源调度,管理整个hadoop集群的所有服务器资源

6.7章节

  • ResourceManger

    • 负责处理所有计算资源申请

  • NodeManager

    • 负责资源空间(container)的创建

  • ApplicationMaster

    • 管理计算任务,只有产生了mapreduce计算才会运行ApplicationMaster

    • 负责具体的资源分配

      • map使用多少

      • reduce使用多少

1-mapreduce提交计算任务给RM(ResourceManager)

2-RM中的applicationmanager负责创建applicationMaster进程

3-applicationMaster和applicationmanager保持通讯

4-applicationMaster找RM中的ResourceScheduler(资源调度器)申请计算需要的资源

5-applicationMaster通知对应的NodeManger创建资源空间container

6-在资源空间中先运行map阶段的计算,先运行reduce阶段的计算

7-map和reduce运行期间会将自身状态信息汇报给applicationMaster

8-计算完成后,applicationMaster通知NodeManger释放资源

9-资源释放后再通知applicationmanager把自身(applicationMaster)关闭释放资源

1、yarn的资源调度策略

当有多个计算任务同时请求yarn进行计算,如何分配资源给每个计算任务?

  • 先进先出

    • 谁先抢到资源谁使用所有资源

    • 资源利用效率低

    • 如果遇到一个计算时间较长的任务,保资源占用后。其他的任务就无法计算

  • 容量调度

    • 将资源分成多份

      • 不同计算任务使用不同的资源大小

  • 公平调度

    • 资源全部给一个计算任务使用,但是当计算任务中的某个map或reduce计算完成后,可以将自身资源释放掉给其他计算任务使用

      • 5个map,其中有两个map计算完成,就可以先释放掉两个资源,给他任务使用,不同等待所有任务计算完成在释放

三、Hive的语法树

  • 解析器

    • 解析sql关键词转为语法数据

  • 分析器

    • 分析语法格式,字段类型等是否正确

  • 优化器

    • 谓词下推

      • 调整jion和where执行顺序

    • 列值裁剪

  • 执行器

    • 将语法中的逻辑转为mapreduce的计算java代码交给MR执行

四、数据开发

数据开发主要分两种

  • 操作型处理,叫联机事务处理OLTP(On-Line Transaction Processing)

    • 对数据进行事务操作,保证数据操作的安全性

    • 事务特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

    • 原子性:一个sql语句的执行是不可拆分的,能完整执行得到结果,不被抢占资源

      • select * from (select * from tb2) tb;

    • 一致性

      • 多表数据写入时,数据是一致性

        • 订单表

          • 小米手机 1

        • 商品表

          • 小米手机 99

    • 隔离性

      • 程序员张三 update from order set stock=old_stock-num where id=1

        • 在更新数据之前会先查询剩余库存的

      • 程序员李四 update from order set stock=90 where id=1

      • 保证每个sql执行的任务是独立的,此时任务就要按顺序执行语句

    • 持久性

      • 数据会持久存储在磁盘上

    • 业务开发使用到数据库都属于联机事务处理

      • 业务开发(网站或程序)进行的数据操作对安全性要求比较高,所有采用的数据操作方式是联机事务处理

  • 分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing)

    • 大数据的数据开发主要进行的是联机分析处理

      • 对数据进行查询计算,得到结果进行分析

      • 数据一般是一次写入,多次读取

      • 大数据开发不涉及数据的删除,也不修改数据

五、数据仓库

数据仓库就是对公司的过往历史数据进行计算分析,为公司决策提供数据支撑

历史数据的数据量比较大,就需要采用大数据技术实现数据仓库开发

使用HiveSQL对海量数据采用结构化数据方式进行计算

数仓开发本质就是将文件数据转为了结构化数据进行分析计算的

数仓特征

  • 面向主题的(Subject-Oriented )

    • 根据分析内容采集相关数据进行计算

    • 每个分析方向就是一个主题

  • 集成的(Integrated)

    • 将相关主题的数据收集在一起进行计算,形成一个大的宽表

    • 销售主题开发

      • 订单表,订单商品表,订单评价,退款订单表

  • 非易失的(Non-Volatile)

    • 数仓数据不容易丢失,也不会进行删除和修改

  • 时变的(Time-Variant )

    • 随着分析需求的改变,数仓中的数据也在不断变化,随着时间推移,统计的字段计算数据也在发生变化

    • 用户表 用户名,用户性别,用户年龄,用户地址,用户手机号

六、数据仓库开发流程

  • 设计主题计算需求

    • 数据分析师或者数据产品经理

  • 数据来源

    • Mysql中的业务数据

    • 文件数据 excel文件,csv文件,json,log

  • 采集数据源数据

    • kettle

    • sqoop

    • datax

    • 代码采集

  • 对采集的数据进行清洗转化,将处理的后的数据写入到hdfs中

    • 数据采集时单独岗位

      • ETL开发工程师

  • 数据的计算

    • mapreduce --> hiveSQL

    • spark

    • flink

    • 数据计算和结果保存属于数仓开发岗

  • 将计算的结果数据存储到指定位置

    • hdfs

    • habse

    • es

    • Mysql

    • 数据计算和结果保存属于数仓开发岗

  • 对结果数据进行BI展示

    • fineBI

    • powerBI

    • superset

    • BI工程师

七、数仓分层

将数据的计算过程拆分成多个部分就是数仓分层

分层实现就是创建不同数据库

数仓最基本的三个分层

  • ODS(old data service)

    • 保存原始数据,采集清洗后的数据会被写入ods层

    • create databases ods;

  • DW(Data WareHouse)

    • 数仓开发层,对数据进行计算

    • create databases dw;

  • APP(application)

    • 结果数据层

    • 不同主题下的数据保存在对应表目录下

    • create databases app;

对dw层可以进行分层的拆分

dwb 基础数据 在这一层进行数据的过滤

dwd 数据详情层 进行数据的关联

对数据的计算流程拆分后,形式一个完成数据开发流程,在流程中的每个关节都可以单独进行开发

select gender,avg(age) from tb1 join tb2 where dt = 2021-10-10 group by gender
​
​
​
1-数据的过滤
insert into tb1_where select * from tb1 where dt = 2021-10-10
insert into tb2_where select * from tb2 where dt = 2021-10-10
​
insert into tb1_where select * from tb1 where age > 20
insert into tb2_where select * from tb2 where name='张三'
​
2-关联表数据据
-- 新的表中保存了关联后的所有数据
insert into tb1_tb2_where select * from tb1_where join tb2_where 
​
​
3-数据分组计算
select gender,avg(age) from tb1_tb2_where group by gender
select city,avg(age) from tb1_tb2_where group by city

八、ETL和ELT

  • extract 数据抽取

  • transform 数据清洗转化

  • load 数据的导入

ETL 属于数据采集工作 通过采集工具采集的对应的数据内容,对内容清洗转化,在将清洗转化后的数据写入hdfs

ELT是将etl的开发流程进行了调整,使用采集工具采集数据,将数据直接写入hdfs,清洗转化过程可以使用hiveSQL在数仓中执行

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

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

相关文章

如何正确查看容器的CPU使用率

进入容器中top,虽然看到的PID是容器的,但是%Cpu的统计信息却是宿主机的。 如图 原理 进程的cpu使用率是如何计算出来的? 每个进程的状态是放在文件里的,在/proc目录下,每个进程有自己pid命名的文件夹, …

.NET 爬虫从入门到入狱

目录 前言 1.💡使用HttpClient爬取数据 2.🚀模拟User-Agent 3.🤵使用HTML解析库 3.👌前端Price显示 4.🌱运行实例 获取金价Au 5.🧾使用正则表达式解析 6.💫获取BTC价格 7.✨获取CSDN热点…

4.15报错记录

打开文件时出错a bytes-like object is required,notNoneType 确保E:/data/stdata/st- images-1208-json|ST-WT-1.json是一个有效的标签文件。 今天用X-anylabling更改标签目录时出现这个报错 解决方案:图片文件夹中创建同名的一个文件夹把json文件放进去就可以打…

QML语法基础一

import QtQuick QML类型系统 1.基本类型:int bool real double string url list var enum 2.Quick类型:color font matrix4*4 quaternion vector2d vector3d vector4d date point size rect 等 3.javascripte类型:qml支持标准的javascript类型 4.对象类型:用于QML对象实例化 对…

[Qt网络编程]之UDP通讯的简单编程实现

hello!欢迎大家来到我的Qt学习系列之网络编程之UDP通讯的简单编程实现。希望这篇文章能对你有所帮助!!! 本篇文章的相关知识请看我的上篇文章: http://t.csdnimg.cn/UKyeM 目录 UDP通讯 基于主窗口的实现 基于线程的实现 UDP通讯…

【YOLO系列PR、F1绘图】更改v5、v7、v8(附v8训练、验证方式),实现调用val.py或者test.py后生成pr.csv,然后再整合绘制到一张图上(使用matplotlib绘制)

目录 1. 前提 效果图2. 更改步骤2.1 得到PR_curve.csv和F1_curve.csv2.1.1 YOLOv7的更改2.1.1.1 得到PR_curve.csv2.2.1.2 得到F1_curve.csv 2.1.2 YOLOv5的更改(v6.1版本)2.1.3 YOLOv8的更改(附训练、验证方式) 2.2 绘制PR曲线 …

【创建型模式】抽象工厂模式

一、抽象工厂模式概述 抽象工厂模式定义:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。 模式动机: 1.当系统提供的工厂生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构、属于不同类型的…

HiveSql中的函数家族(一)

一.内置函数 1-1 日期类型操作 -- 获取当前日期 select current_date(); -- 获取当前日期时间 select current_timestamp(); -- 获取unix时间(时间戳) 从1970年1月1号0时0分0秒 到现在过去了多少秒 select unix_timestamp();-- unix时间 和日期时间的转…

41、二叉树-二叉树的层序遍历

思路: 层序遍历就是从左到右依次遍历。这个时候就可以使用队列的方式。例如先把头节点入队,然后遍历开始,首先计算队列长度,第一层,长度为了,遍历一次,依次出队,头结点出队&#xff…

Tomcat和Spring Boot配置https

生成测试证书 生成证书前,先验证本地是否正确配置jdk环境变量,如果jdk环境变量配置正确,在命令行程序输入生成证书的命令。 keytool -genkey -alias tomcat -keyalg RSA -keystore "F:\job\apache-tomcat-8.5.29\key\freeHttps.keysto…

微信小程序之图片上传并保存在服务器

先将图片上传到服务器,后端接口将保存好的图片地址返回给小程序,再将小程序中添加图像的图片的url替换为服务器中照片的存储地址(使微信小程序中显示出上传的图片)。 1、效果如下: 点击图像后选择图像: 结…

Kafka不仅是消息队列而是一个分布式消息处理平台

目录 1. kafka架构图 2.关键概念解析 2.1 producer 2.2 consumer: 2.3 brkoer 2.4 Topic 与 Partition 2.5 AR (Assigned Replicas) 2.6 ISR(In-Sync Replicas) 2.7 OSR (Out-of-Sync Replicas) 2.8 HW (High Water-mark) 2.9 LEO (Log End Offset)

搜维尔科技:【工业仿真】煤矿机械安全事故VR警示教育系统

产品概述 搜维尔科技 煤矿机械安全事故VR警示教育系统 系统内容: 系统采用虚拟现实技术模拟矿井井下机械安全技术及事故,展现井下常见机械伤害事故,表现伤害事故的隐患点,能够模拟事故发生和发展过程;营造井下灾害发…

如何使用 Node.js 发送电子邮件全解和相关工具推荐

大多数Web应用程序都需要发送电子邮件。它可能用于注册、密码重置、状态报告,甚至是完整的市场营销活动,如新闻和促销。本教程解释了如何在Node.js中发送电子邮件,但其概念和挑战适用于您正在使用的任何系统。 你会在 npm 上找到大量与电子邮…

详细UI色彩搭配方案分享

UI 配色是设计一个成功的用户界面的关键之一。UI 配色需要考虑品牌标志、用户感受、应用程序的使用场景,这样可以帮助你创建一个有吸引力、易于使用的应用程序。本文将分享 UI 配色的相关知识,帮助设计师快速构建 UI 配色方案,以满足企业的需…

windows10小皮安装不同版本composer,实现自由切换使用

1、使用phpstudy小皮面板安装composer1.8.5和composer2.5.8两个版本; 2、打开刚才安装的composer安装目录:D:\phpstudy_pro\Extensions 3、打开composer1.8.5版本,修改composer.bat名称为composer1.8.5.bat: 4、打开composer2.5.8…

隐私计算DataTrust:从产品需求到工程架构实践

继上期介绍了新监管形势下的隐私技术及数据共享合规设计的思考,本期将接着为大家讲解,国内唯一一个获得工信部三项隐私计算测评的产品DataTrust,在隐私计算领域从产品需求到工程架构的实践之路。 随着数据作为第五大生产要素被提出,“数据流通”的社会价值已形成广泛共识,…

Linux命令学习—Apache 服务器(下)

1.7、访问控制、认证授权的综合指令 1.7.1、两种综合情况 1、满足一种条件即可访问 Satisfy any 或者满足访问控制的条件,或者满足认证授权的条件,就可以访问指定页面、目录 2、必须同时满足 2 个条件才能访问 Satisfy all必须同时满足访问控制和认…

vue的实现八股

双向绑定原理 Vue的双向绑定原理是通过数据劫持和观察者模式实现的。 vue使用了响应式的对象,即当数据发生改变的时候,视图也会随之改变 数据劫持: vue2使用了object.definedproperty对数据的每个属性进行劫持,从而逐一对每个…

【报错】Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

在你检查完没有内存溢出等各种各种情况之后,仍然不知道该怎么解决,这里提供一个可能的解决办法。 如果你也用的是Mac M1芯片,在跑numpy的时候出现 Intel MKL Warning; 或在用pytorch训练模型的时候遇到segmentation fault。有可能…