数分-理论-大数据6-Hive

数分-理论-大数据6-Hive,第1张

数分-理论-大数据6-Hive 数分-理论-大数据6-Hive(数据仓库

(数据分析系列)

文章目录

数分-理论-大数据6-Hive(数据仓库)

1知识点2具体内容

2.1数据仓库

2.1.1起源2.1.2数仓概念2.1.3体系结构2.1.4存在挑战 2.2Hive基础

2.2.1概述2.2.2背景2.2.3Hive与Hadoop生态系统2.2.4对比2.2.5模拟实现 2.3Hive核心

2.3.1数据类型2.3.2数据模型 2.4Hive系统结构

2.4.1用户接口模块2.4.2驱动模块Driver2.4.3元数据存储模块metastore2.4.4HQL的执行流程 2.5实战应用 3参考

1知识点

数据仓库Hive基础Hive核心Hive系统结构实战应用 2具体内容 2.1数据仓库 2.1.1起源

基于分析型决策的优化,需高性能的完成用户查询,提出数据仓库

2.1.2数仓概念

1.概念

数据仓库是一个面向主题的、集成的、非易失的、随时间变化的,用来支持管理人员决策的数据集合,数据仓库中包含了粒度化的企业数据。企业数据仓库有效集成了来自不同部门、不同地理位置、具有不同格式的数据,为企业管理决策者提供了企业范围内的单一数据视图。

2.特征
主体性+集成性+非易失性+时变性

主题性

针对不同业务进行归类分析,抽象为主题,对应某一分析领域涉及的分析对象抽象层次,每个领域各有逻辑内核,互不交叉 集成性

统一口径,统一数据来源中的歧义、单位、字长等元素进行总和计算,聚合成新数据 非易失性

保存历史业务数据,根据业务每隔一段时间导入新的数据,不会轻易丢失改变 时变性

反应一个业务过程,业务变化会随着改变,适应分析决策 2.1.3体系结构

数据源、数据存储和管理、数据服务以及数据应用

    数据源:数仓的数据来源,外部数据+业务系统+文档资源数据存储和管理:存储和管理数据,数据仓库+数据集市+数据仓库监视+运行与维护工具+元数据管理数据服务:为前端工具和应用提供数据服务,从数仓获取数据提供给前端,或通过OLAP服务器为前端应用提供复杂数据服务数据应用:直接面向最终用户,数据工具+自由报表工具+数据分析工具+数据挖掘工具+应用系统
2.1.4存在挑战

无法满足快速增长的海量数据存储需求无法有效处理不同类型的数据计算和处理能力不足 2.2Hive基础

2.2.1概述

建立在hadoop上的一种数仓工具将结构化、半结构化的数据文件映射为一张数据库表基于数据库表,提供一种类sql的查询模型HQL访问、分析存在Hadoop文件中的大型数据集

注意:

本身不具备存储功能核心:将HQL转换为MapReduce程序,提交到Hadoop集群执行

特点:

类SQL的查询语言HQL可自定义用户函数UDF和存储格式为超大数据集设计计算和存储能力,集群扩展容易统一元数据管理,可与presoimpalasqarksql共享数据执行延迟高,不适实时处理,时候海量数据离线处理 2.2.2背景

成本:MR需要学java,不易复杂查询建立分析型数仓:支持类SQL的查询及支持自定义函数,可做数仓工具 2.2.3Hive与Hadoop生态系统

HDFS:分布式文件系统,存储海量数据MapReduce:分布式并行编程模型,批处理,实现高性能计算Hive:数据仓库,不存储和处理数据,用HQL编写处理逻辑,转换为MR任务执行Pig:Hive的替代工具,数据流语言和运行环境,适用于在Hadoop平台查询半结构化数据集,用于数据抽取(ETL),将外部数据装载到Hadoop集群,转换为用户需要的数据格式Hbase:分布式数据库,面向列式存储、分布式、可伸缩的数据库,它可以提供数据的实时访问功能

Hive只能处理静态数据,BI报表数据Hive为了减少复杂MR应用程序的编写Hbase为了实现对数据的实时访问 2.2.4对比

底层依赖HDFS+MapReduce

对比内容Hive传统数据库数据存储HDFS本地文件系统索引支持有限索引支持复杂索引分区支持支持执行引擎MapReduce、Tez、Spark自身的执行引擎执行延迟高低扩展性好有限数据规模大小 2.2.5模拟实现
1,jingjing,26,hangzhou
2,wenrui,26,beijing
3,dapeng,26,beijing
4,tony,15,hebei

需求:HDFS文件系统的文件,编写SQL,统计来自北京的年龄大于20的人数

分析:对表 *** 作,先找到文件与表的对应关系,实现表与文件的映射

表位置字段位置内容读取的分隔 *** 作

Hive对SQL语句语法校验,根据记录的元数据对sql解析,制定执行计划,转为MR程序执行,结果封装后返回给用户

2.3Hive核心 2.3.1数据类型

1.基本数据类型

大类类型Integers(整型)TINYINT:1字节的有符号整数; SMALLINT:2字节的有符号整数;INT:4字节的有符号整数;BIGINT:8字节的有符号整数Boolean(布尔型)BOOLEAN:TRUE/FALSEFloating point numbers(浮点型)FLOAT:单精度浮点型;DOUBLE:双精度浮点型Fixed point numbers(定点数)DECIMAL:用户自定义精度定点数,比如 DECIMAL(7,2)String types(字符串)STRING:指定字符集的字符序列;VARCHAR:具有最大长度限制的字符序列;CHAR:固定长度的字符序列Date and time types(日期时间类型)TIMESTAMP:时间戳;TIMESTAMP WITH LOCAL TIME ZONE:时间戳,纳秒精度;DATE:日期类型Binary types(二进制类型)BINARY:字节序列

TIMESTAMP :提交的时间按照原始时间保存,查询时,也不做任何转换TIMESTAMP WITH LOCAL TIME ZONE:用户提交TIMESTAMP给数据库时,会被转换成数据库所在的时区来保存。查询时,则按照查询客户端的不同,转换为查询客户端所在时区的时间。

2.隐式转换:子类型到祖先类型允许隐式转换

STRING类型可隐式转换为DOUBLE类型

3.复杂类型

类型描述示例STRUCT类似于对象,字段的集合,字段的类型可以不同,可以使用名称.字段名方式进行访问STRUCT(‘xiaoming’, 12 , ‘2018-12-12’)MAP键值对的集合,可以使用名称[key]的方式访问对应的值map(‘a’, 1, ‘b’, 2)ARRAY数组是一组具有相同类型和名称的变量的集合,可以使用名称[index]访问对应的值ARRAY(‘a’, ‘b’, ‘c’, ‘d’)
CREATE TABLE students(
  name      STRING,   -- 姓名
  age       INT,      -- 年龄
  subject   ARRAY,   -- 学科
  score     MAP,  -- 各个学科考试成绩
  address   STRUCT  -- 家庭居住地址
) ROW FORMAT DELIMITED FIELDS TERMINATED BY "t";
2.3.2数据模型

描述Hive组织、管理和 *** 作数据的方式Hive数据存于HDFS,默认一个根目录,在hive-site.xml配置数据的存储路径
1.库默认数据库default创建不同数仓库database相当于关系数据库的命名空间,将用户和数据库的表隔离

2.表

表相关的元数据是存储在关系数据库

分内部表,外部表

1)加载数据和创建表:

内:过程分开,加载时数据被移动到数仓目录,对数据的访问在数仓目录实现外:是一个过程,访问即读取HDFS内数据
2)删除表:内:表内数据和元数据同步被删除(数据移到数仓目录了)外:数据在HDFS,删除表不影响数据
3)创建表:默认创建内部表External创建外部表 内容内部表外部表数据存储位置内部表数据存储的位置由hive.metastore.warehouse.dir参数指定,默认情况下,表的数据存储在HDFS的/user/hive/warehouse/数据库名.db/表名/目录下外部表数据的存储位置创建表时由Location参数指定导入数据在导入数据到内部表,内部表将数据移动到自己的数据仓库目录下,数据的生命周期由Hive来进行管理外部表不会将数据移动到自己的数据仓库目录下,只是在元数据中存储了数据的位置删除表删除元数据(metadata)和文件只删除元数

3.分区:优化

减少全表扫描存储:表的主目录文件夹下的子文件夹,子文件夹的名字表示所定义的分区列名字

4.分桶:拆分数据文件本身

根据表中字段(例如,编号ID)的值,经过hash计算规则,将数据文件划分成指定的若干个小文件优化join查询和方便抽样查询。 2.4Hive系统结构

用户接口模块+驱动模型+元数据存储模块

2.4.1用户接口模块

实现外部应用对Hive的访问包括:CLI、Hive网页接口(Hive Web Interface,HWI)、JDBC、ODBC、Thrift Server等 *** 作数据:

CLI(command-line shell): Hive自带的一个命令行客户端工具HWI(Thrift/JDBC):Hive的一个简单网页,JDBC、ODBS和Thrift Server可以向用户提供编程访问的接口。用户可以按照标准的JDBC的方式,通过Thrift协议 *** 作数据。 2.4.2驱动模块Driver

实现:MR,把 HiveQL语句转换成一系列MapReduce作业,所有命令和查询都会进入驱动模块,通过该模块对输入进行解析编译,对计算过程进行优化,然后按照指定的步骤执行。包括:编译器、优化器、执行器等执行引擎:可以是 MapReduce、Tez或Spark等 2.4.3元数据存储模块metastore

1.元数据:描述数据的数据

描述HDFS文件和表的各种对应关系(位置关系、顺序关系、分隔符)存储:在关系数据库中(Hive内置的是Derby、第三方的是MySQL),HDFS中存储的是数据默认存储在Hive内置的Derby数据库中,但由于Derby只能有一个实例,也就是说不能有多个命令行客户端同时访问,所以在实际生产环境中,通常使用 MySQL代替Derby

2.metastore

metastore是独立的关系数据库,可以是MySQL实例,也可是Hive自带的Derby实例,提供元数据服务metastore保存表模式和其他系统元数据

表的名称表的列及其属表的分区及其属性表的属性表中数据所在位置信息等 metastore对外提供一个服务地址,使客户端能够连接Hive,以此来对元数据进行访问

元数据把数据保存在关系数据库中,Hive提供元数据服务,通过对外的服务地址,用户能够使用客户端连接Hive,访问并 *** 作元数据支持多个客户端的连接,实现了数据访问层面的解耦 *** 作Hive创建的表在presto/impala/sparksql中可直接使用(metastore中获取统一的元数据信息)

3.metastore管理元数据方式

    内嵌:默认metastore元数据服务和Hive服务融合在一起

    Hive服务(即Hive驱动本身)+ 元数据服务metastore + 元数据metadata(用于存储映射信息)在一个JVM启动HiveServer进程,Derby和metastore都会启动一次只能支持一个用户访问,适用于测试场景

    本地:把元数据提取出来

    metastore服务与HiveServer主进程在同一个JVM进程中运行,存储元数据的数据库在单独的进程中元数据一般存储在MySQL关系型数据库

    远程:都单独进程

    metastore在单独进程运行,保证全局唯一,保证数据访问安全性(不随hive启动而动)安装在远程服务器集群,解耦Hive服务和metastore服务,保证Hive的稳定运行

2.4.4HQL的执行流程
    语法解析:Antlr定义SQL的语法规则,完成SQL词法,语法解析,将SQL转化为抽象语法树AST Tree;语义解析:遍历AST Tree,抽象出查询的基本组成单元QueryBlock;生成逻辑执行计划:遍历QueryBlock,翻译为执行 *** 作树OperatorTree;优化逻辑执行计划:逻辑层优化器进行OperatorTree变换,合并不必要的ReduceSinkOperator,减少shuffle数据量;生成物理执行计划:遍历OperatorTree,翻译为MapReduce任务;优化物理执行计划:物理层优化器进行MapReduce任务的变换,生成最终的执行计划。
2.5实战应用
    Hive的安装部署和管理Hive常用的DDL *** 作
3参考

https://shenhao-stu.github.io/Big-Data/#/HiveQL编译过程LanguageManual DDL

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

原文地址: http://outofmemory.cn/zaji/5718611.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存