Apache Hive3的主要功能有哪些

发布时间:2021-12-10 09:11:03 作者:小新
来源:亿速云 阅读:233

这篇文章将为大家详细讲解有关Apache Hive3的主要功能有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。


Apache Hive3的主要功能

Cloudera Runtime(CR)服务包括Hive和Hive Metastore。Hive服务基于Apache Hive 3.x(基于SQL的数据仓库系统)。Hive 3.x与以前版本相比的增强功能可以提高查询性能并符合Internet法规。

ACID事务处理

Hive 3表符合ACID(原子性、一致性、隔离性和耐久性)标准,这对于遵守GDPR(通用数据保护法规)被遗忘的权利至关重要。

共享的Hive Metastore

Hive Metastore(HMS)可与多个引擎(例如Impala和Spark)互操作,从而简化了引擎与用户数据访问之间的互操作。

低延迟分析处理(CDP公共云)

Hive使用低延迟分析处理(LLAP)或Apache Tez执行引擎来处理事务。Hive LLAP服务在CDP数据中心中不可用。

Hive集成Spark

您可以使用Hive从Apache Spark应用程序查询数据,而无需解决方法。Hive Warehouse Connector支持从Spark读取和写入Hive表。

安全改进

默认情况下,Apache Ranger保护Hive数据。为了满足对并发性改进的需求,对GDPR的ACID支持,渲染安全性和其他功能,Hive严格控制了仓库在文件系统或对象存储以及内存资源上的位置。

查询级别的工作负载管理

您可以配置谁使用查询资源,可以使用多少资源以及Hive对资源请求的响应速度。工作负载管理可以改善并行查询的执行,查询的集群共享以及查询性能。

物化视图

因为多个查询经常需要相同的中间汇总表或联接表,所以可以通过将中间表预先计算和缓存到视图中来避免昂贵、重复的查询部分共享。

查询结果缓存

配置单元过滤并缓存相似或相同的查询。Hive不会重新计算未更改的数据。当数百个或数千个BI工具和Web服务的用户查询Hive时,缓存重复查询可以大大减少负载。

information_schema

启动后,Hive从JDBC数据源创建两个数据库:information_schema和sys。所有Metastore表都映射到您的表空间中,并且在sys中可用。information_schema数据显示系统状态,类似于sys数据库数据。您可以使用SQL标准查询来查询information_schema。

接口不可用或不支持

Apache Hive 3架构概述

了解Apache Hive 3的主要设计功能(例如默认的ACID事务处理)可以帮助您使用Hive满足企业数据仓库系统不断增长的需求。

Apache Tez

Apache Tez是Cloudera Manager中Hive-on-Tez服务的Hive执行引擎。不支持MapReduce。在Cloudera集群中,如果旧脚本或应用程序指定MapReduce执行,则会发生异常。大多数用户定义函数(UDF)不需要更改即可在Tez上执行,而无需执行MapReduce。

使用有向无环图(DAG)的表达式和数据传输原语,在Tez上而不是MapReduce上执行Hive查询可以提高查询性能。在Cloudera Data Plane(CDP)中,Tez通常仅由Hive使用,并且HiveServer会在HiveServer2启动时自动启动并管理Tez AM。您提交给Hive的SQL查询的执行方式如下:

Hive on Tez在临时容器上运行任务,并使用标准的YARN shuffle服务。

数据存储和访问控制

支持Hive 3设计的主要架构更改之一使Hive对元数据内存资源和vfile系统或对象存储有了更多控制。从Hive 2到Hive 3的以下架构变更提供了更高的安全性:

默认情况下,CDP数据中心将Hive数据存储在HDFS上,CDP公共云将Hive数据存储在S3上。在云中,Hive仅将HDFS用于存储临时文件。Hive 3通过以下方式针对对象存储(例如S3)进行了优化:

Hive的主要授权模型是Ranger。Hive强制实施Ranger中指定的访问控制。与其他安全方案相比,该模型提供了更强的安全性,并且在管理策略方面具有更大的灵活性。

此模型仅允许Hive访问数据仓库。如果您未启用Ranger安全服务或其他安全性,则默认情况下,Hive会根据用户模拟使用CDP数据中心基于存储的授权(SBA)。

HDFS权限更改

在CDP数据中心中,SBA严重依赖于HDFS访问控制列表(ACL)。ACL是HDFS中权限系统的扩展。默认情况下,CDP数据中心在HDFS中打开ACL,为您提供以下优势:

事务处理

您可以利用以下事务处理特性来部署新的Hive应用程序类型:

ACID表是默认的表类型。

默认情况下启用ACID不会导致性能或操作过载。

您不需要存储ACID表。

Hive客户端变更

CDP数据中心支持在命令行上使用瘦客户端Beeline。您可以从命令行运行Hive管理命令。Beeline使用与HiveServer的JDBC连接来执行命令。解析、编译和执行操作在HiveServer中进行。Beeline支持Hive CLI支持的许多命令行选项。Beeline不支持 hive -e set key=value来配置Hive Metastore。

通过使用hive 关键字、命令选项和命令来调用Beeline,可以输入受支持的Hive CLI命令。例如,hive -e set。使用Beeline代替不再受支持的胖客户端Hive CLI具有许多优点,包括较低的开销。Beeline不会使用整个Hive代码库。执行查询所需的少量守护程序简化了监视和调试。

HiveServer强制执行您可以使用SET命令更改的白名单和黑名单设置。使用黑名单,您可以限制内存配置更改,以防止HiveServer不稳定。您可以使用不同的白名单和黑名单配置多个HiveServer实例,以建立不同级别的稳定性。

您可以使用grunt命令行与Apache Pig一起使用。

Apache Hive Metastore共享

HiveServer,Impala和其他组件可以共享远程Hive元存储。在CDP公共云中,HMS使用预安装的MySQL数据库。您几乎没有执行HMS或仅在云中进行HMS的配置。

Spark集成

在某些情况下,Spark和Hive表可以使用Hive Warehouse连接器进行互操作。

您可以使用Hive Warehouse连接器从Spark访问ACID和外部表。您不需要Hive Warehouse Connector即可从Spark读取Hive外部表并从Spark写入Hive外部表。

查询批处理和交互式工作负载的执行

您可以使用JDBC命令行工具(例如Beeline)或使用JDBC/ODBC驱动程序和BI工具(例如Tableau)连接到Hive。客户端与相同HiveServer版本的实例进行通信。您可以为每个实例配置设置文件以执行批处理或交互式处理。

02

Apache Hive3性能调优

低延迟分析处理

CDP公共云支持Hive查询的低延迟分析处理(LLAP)。使用CDP数据仓库服务中可使用LLAP,您可以调整数据仓库基础结构、组件和客户端连接参数,以提高性能和与商务智能和其他应用程序的相关性。

企业越来越希望运行SQL工作负载,这些工作负载返回的结果要比批处理提供的结果更快。这些企业通常希望数据分析应用程序支持交互式查询。低延迟分析处理(LLAP)可以提高交互式查询的性能。在CDP公共云上运行的Hive交互式查询满足了低延迟、可变参数基准,Hive LLAP在15秒或更短的时间内响应了该基准。LLAP使应用程序开发和IT基础结构能够运行返回实时或接近实时结果的查询。

CDP数据中心版不支持LLAP。

高性能Hive的最佳做法

在调整Apache Hive之前,您应该遵循最佳实践。这些准则包括如何配置群集,存储数据和编写查询。

LLAP缓存用于多个查询的数据,并且此功能不支持用户模拟。

使用ORC最大化存储资源

您可以通过多种方式来节省存储空间,但是使用优化行列(ORC)文件格式存储Apache Hive数据最为有效。ORC是Hive数据的默认存储。

出于以下原因,建议使用Hive数据存储的ORC文件格式:

在大规模部署中得到证明:Facebook将ORC文件格式用于300多个PB部署。

Apache Hive3的主要功能有哪些

ORC总体上提供最佳的Hive性能。此外,要指定存储格式,还可以为表指定压缩算法,如以下示例所示:

CREATE TABLE addresses (name string,street string,city string,state string,zip int) STORED AS orc TBLPROPERTIES ("orc.compress"="Zlib");

通常不需要设置压缩算法,因为您的Hive设置包括默认算法。使用ORC高级属性,可以为点查找中经常使用的列创建Bloom过滤器。

Hive支持仅用于插入式ACID表和外部表的Parquet和其他格式。您还可以编写自己的SerDes(序列化器,反序列化器)接口以支持自定义文件格式。

高级ORC属性

通常,您不需要修改ORC属性,但是偶尔,Cloudera支持建议进行此类更改。您可以使用Cloudera Manager中的安全阀功能来更改属性。

使用分区提高性能

您可以使用分区来显着提高性能。您可以设计Hive表和物化视图分区以映射到文件系统/对象存储上的物理目录。例如,按日期时间划分的表可以组织每天加载到Hive中的数据。

大型部署可以具有成千上万个分区。当Hive在查询处理期间发现分区键时,分区修剪将间接发生。例如,在加入维表后,分区键可能来自维表。查询按分区过滤列,从而将扫描限制在一个或几个匹配的分区上。当WHERE子句中存在分区键时,将直接进行分区修剪。分区列是虚拟的,不写入主表,因为这些列对于整个分区都是相同的。在SQL查询中,您定义了分区,如以下示例所示:

CREATE TABLE sale(id in, amount decimal)PARTITIONED BY (xdate string, state string);

要将数据插入此表中,请指定用于快速加载的分区键:

INSERT INTO sale (xdate='2016-03-08', state='CA')SELECT * FROM staging_tableWHERE xdate='2016-03-08' AND state='CA';

您不需要指定动态分区列。如果启用动态分区,则Hive会生成分区规范。

用于加载1到9个分区的hive-site.xml设置:

SET hive.exec.dynamic.partition.mode=nonstrict;SET hive.exec.dynamic.partition=true;

要将数据批量加载到分区的ORC表中,请使用以下属性,该属性可优化将数据加载到10个或更多分区中的性能。

用于加载10个或更多分区的hive-site.xml设置:

hive.optimize.sort.dynamic.partition=true

查询分区数据的示例

INSERT INTO sale (xdate, state)SELECT * FROM staging_table;

对表进行分区和查询分区表时,请遵循以下最佳实践:

处理分桶表

如果将数据从Apache Hive的早期版本迁移到Hive 3,则可能需要处理影响性能的存储分桶表。

您可以将表或分区划分为存储区,这些存储区可以通过以下方式存储:

无需在新的Hive 3表中使用存储分桶。

与存储分桶相关的一个常见挑战是在增加或减少工作负载或数据时保持查询性能。例如,您可能拥有一个使用16个存储分桶来支持1000个用户的平稳运行的环境,但是如果您不及时调整存储桶和分区,则用户数量激增到一两天就达到了100,000,这会产生问题。在使用表构建表之后,必须重新加载包含表数据的整个表,以减少,添加或删除表分桶,这使表桶调优变得很复杂。

使用Tez,您只需要处理最大的表上的分桶。如果工作负载需求快速变化,则较小表的存储分桶会动态更改以完成表JOIN。

您执行以下与存储分桶相关的任务:

SET hive.tez.bucket.pruning=true

将数据加载到既分区又存储分桶的表中时,请设置以下属性以优化过程:

SET hive.optimize.sort.dynamic.partition=true

如果您有20个存储在user_id数据上的存储分桶,则以下查询仅返回与user_id = 1关联的数据: 

SELECT * FROM tab WHERE user_id = 1;

为了最好地利用Tez上表分桶的动态功能,请采取以下做法:

如果表的存储分桶文件数超过行数,则表明您应该重新考虑表的存储方式。

关于“Apache Hive3的主要功能有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. Apache Web服务器实战
  2. apache安装遇到的问题有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

apache hive

上一篇:Hadoop MapReduce的优点有哪些

下一篇:信息收集工具FuzzScanner怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》