Hive3新特性 2

简介: Hive3新特性

1.5 Tez的使用

⚫ 设置引擎为mr,测试

set hive.execution.engine = mr;

use db_function;

select deptno, count ( * ) as numb from tb_emp group by deptno order by numb desc ;


baf2aeca4a59474a96178096252fecd0.png

⚫ 设置引擎为tez,测试

#如果想一直使用tez执行 可以把上述参数添加在hive-site.xml中

set hive.execution.engine=tez;

set hive.tez.container.size=1024;

select deptno,count() as numb from tb_emp group by deptno order by numb desc ;

c078a8473b394faab27b0edebad8a00b.png

⚫ 设置引擎为tez,beeline测试

/export/server/hive-3.1.2-bin/bin/beeline -u jdbc:hive2://node1:10000 -n root -p 123456

set hive.execution.engine=tez;

set hive.tez.container.size=1024;

use db_function;

select deptno,count() as numb from tb_emp group by deptno order by numb desc ;

746725a3f2f845adac446fa6b77d248b.png


2 LLAP的更新

LLAP是hive 2.0版本就引入的特性,在Hive 3中与Tez集成的应用非常成熟。Hive官方称之为实

时长期处理(Live long and process),实现将数据预取、缓存到基于yarn运行的守护进程中,降低

和减少系统IO和与HDFS DataNode的交互,以提高程序的性能,LLAP 目前只支持tez引擎。

LLAP提供了一种混合执行模型。它由一个长期存在的守护进程(该守护进程替换了与 HDFS

DataNode 的直接交互)以及一个紧密集成的基于 DAG 的框架组成。诸如缓存,预取,某些查询

处理和访问控制之类的功能已移至守护程序中。此守护程序直接直接处理小/短查询,而任何繁重

的工作都将在标准 YARN 容器中执行。

与 DataNode 相似,LLAP 守护程序也可以由其他应用程序使用。该守护进程还通过可选的

API(例如 InputFormat)打开,其他数据处理框架可将其用作构建块。

下图显示了使用 LLAP 的示例执行。 Tez AM 统筹整体执行,查询的初始阶段被推送到 LLAP

中,在还原阶段,将在单独的容器中执行大型Shuffle,多个查询和应用程序可以同时访问 LLAP。

1c85d118972c4ed3bf30cc381ce9be3e.png

LLAP 在现有的Hive基于流程的执行中工作,以保持Hive的可伸缩性和多功能性。它不会替代

现有的执行模型,而是对其进行了增强。它有如下的几个特点:

◼ LLAP守护程序是可选的。Hive 可以在没有它们的情况下工作,并且即使已经部署并启动

运行LLAP也可以绕过不执行。

◼ 外部编排和执行引擎。LLAP 不是执行引擎,不同于MapReduce 或 Tez。整个执行由现

有的 Hive 执行引擎(例如 Tez)在 LLAP 节点以及常规容器上透明地调度和监控。显然,

LLAP 的支持级别取决于单独的执行引擎。不计划支持 MapReduce,但以后可能会添加

其他引擎,例如Pig 等其他框架也可以选择使用 LLAP 守护程序。

◼ 部分执行。LLAP 守护程序执行的工作结果可以构成 Hive 查询结果的一部分,也可以根

据查询传递给外部 Hive 任务。

◼ 资源 Management。 YARN 仍然负责资源的 Management 和分配。 YARN 容器委派

模型允许将分配的资源传输到 LLAP。为了避免 JVM 内存设置的限制,高速缓存的数据

以及用于处理的大缓冲区(例如,分组依据,联接)将保持堆外状态。这样,守护程序可以

使用少量内存,并且将根据工作负载分配其他资源(即 CPU 和内存)。

⚫ Hive3增强了在多租户场景下的LLAP负载管理,主要通过resource plan的方式进行实现:

◼ 划分LLAP资源为多个pool,比如bi池和etl池

◼ 自动映射applications到对应的池

◼ 可以设置触发条件,实现自动从一个池到另一个池,比如自动把长时间运行的application

移动到etl池

◼ 可以根据需要activate/deactivate这些resource pools


3 Metastore独立模式

3.1 Metastore的功能

Hive中的所有对象,如数据库、表、函数等,所有对象的定义都存储在Metastore中。根据系

统的配置方式,数据的统计信息和权限的授权记录也可能存储在metastore中。Hive或者其他执行

引擎在运行时会使用这些元数据来决定如何解析、授权和有效地执行用户查询。

元数据存储可以将对象的定义持久化到关系数据库(RDBMS)中,也可以将元数据存储配置为嵌

入式的Apache Derby RDBMS或连接到外部RDBMS。Metastore本身可以完全嵌入到用户进程中,

也可以作为服务运行,供其他进程连接。


3.2 Metastore独立模式

从Hive 3.0开始,Metastore可以在不安装Hive其他部分的情况下单独运行,它将作为一个单独

的发行版提供,用于实现允许其他非Hive的系统,例如Spark、Impala等轻松地与Metastore集成。

目前,为了方便起见,依旧建议将Metastore放在Hive中。

866bc02555aa4a55acffdc967c55509d.png

要使Metastore成为一个独立的服务,需要修改大量的参数,目前Hive官方为了最大限度地向

后兼容,所有旧的配置参数仍然有效。Hive的Metastore服务将读取metastore-site.xml,同时也会

从Hive的配置文件目录中读取hive-site.xml或者hive-memstoresite.xml文件。不论Hive使用哪种方

式实现元数据存储,外部的RDBMS或者内嵌的Derby数据库,都会使用以下参数来单独配置

MetaStore服务:

2ff2c471e77b4558a9f95d2c7e6a64c8.png

配置好以上参数后,可以使用start-metastore.sh来启动metastore服务。

从Hive 3.0开始,Metastore作为一个单独的包发布,可以在没有Hive其他部分的情况下运行。

这称为独立模式。但是在默认情况下Metastore配置为与Hive一起使用,因此在这个配置中需要修

改一些配置参数。

b44d30e0bc38409d9ba2b8d01fbce0c5.png

目前,如果使用独立模式,以下特性还没有经过测试,或者已经明确不能在独立模式下与

Metastore一起使用

◼ 如果没有Hive,ACID表中的Compactor将无法运行,可以对ACID表进行读写,但不能

compact

◼ Replication也没有在独立模式中实现测试


3.3 独立模式部署测试

⚫ 安装

◼ 将下载好的hive-standalone-metastore-3.0.0-bin.tar上传到/export/software目录下

◼ 解压

tar -zxvf hive-standalone-metastore-3.0.0-bin.tar.gz -C /export/server/

ffed602f0c304dcab1b4495cc4838d87.png

⚫ 配置

◼ 修改配置文件

vim /export/server/apache-hive-metastore-3.0.0-bin/conf/metastore-site.xml

<configuration>
<property>
<name>metastore.thrift.uris</ name>
<value>thrift://node1:9083</ value>
<description>Thrift URI for the remote metastore. Used by metastore
client to connect to remote metastore.</ description>
</property>
<property>
<name>metastore.task.threads.always</ name>
<value>org.apache.hadoop.hive.metastore.events.EventCleanerTask</value>
</property>
<property>
<name>metastore.expression.proxy</ name>
<value>org.apache.hadoop.hive.metastore.DefaultPartitionExpressionProxy</value>
</property>
</configuration>

◼ 复制hive-site.xml到conf目录下

cd /export/server/apache-hive-metastore-3.0.0-bin/

cp /export/server/hive-3.1.2-bin/conf/hive-site.xml ./conf/8893d789e8354f3fb0720aab6be39d7e.png

◼ 删除旧版本的guava,复制hive中的guava到lib目录中

rm -rf lib/guava-19.0.jar

cp /export/server/hive-3.1.2-bin/lib/guava-27.0-jre.jar ./lib/

53d5af650e4b4ea09e1347655b73f052.png

◼ 复制MySQL的连接驱动包到lib目录下

cp /export/server/hive-3.1.2-bin/lib/mysql-connector-java-8.0.19.jar ./lib/

4c6eda95bcde40fca7ea6ac14b17a572.png

⚫ 独立启动metastore

cd /export/server/apache-hive-metastore-3.0.0-bin/

bin/start-metastore

⚫ 启动hiveserver2

cd /export/server/hive-3.1.2-bin/

bin/hive --service hiveserver2

⚫ 启动beeline

cd /export/server/hive-3.1.2-bin/

bin/beeline -u jdbc:hive2://node1:10000 -n root -p 123456

⚫ 测试:正常访问元数据


00086f9dbd1047fe9d3eeebd89cf4138.png

目录
相关文章
|
SQL 分布式计算 Hadoop
Hive3新特性 1
Hive3新特性
220 0
|
SQL 存储 缓存
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (1)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (1)
198 0
|
SQL 存储 分布式计算
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (2)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (2)
143 0
|
SQL 分布式计算 Java
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (3)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (3)
160 0
|
SQL HIVE
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (4)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (4)
136 0
|
SQL 分布式计算 Hadoop
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (5)
《CDP企业数据云平台从入门到实践》——Hive3 新特性 (5)
129 0
|
SQL 存储 缓存
【阿里云 CDP 公开课】 第九讲:Hive3 新特性
本文整理自 Cloudera 生态资深解决方案工程师王雪峰在 阿里云CDP公开课 上的分享。
【阿里云 CDP 公开课】 第九讲:Hive3 新特性
|
SQL 存储 缓存
CDP中的Hive3系列之Apache Hive3的特性
CDP中采用的是Apache Hive3版本,该版本相比Hive1/2在事务和安全性等方面有重大改进,了解这些版本之间的主要差异对于 SQL 用户至关重要,包括使用 Apache Spark 和 Apache Impala 的用户。
1008 0
|
存储 SQL 分布式计算
|
SQL 关系型数据库 MySQL
HIVE 新特性 ACID 初试
<div class="markdown_views"> <p>在 Hive 0.14 之前,Hive QL 一直不支持insert、update、delete 操作,这显然很不方便,尤其是在构建数据仓库的过程中,一个比较常见的例子是<code>维度表</code>经常需要更新某列,在 Hive 中需要更新历史所有数据,这显然是不合理的。</p> <p>在 Hive 0.14
5008 0