`
smileyboy2009
  • 浏览: 15405 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hive 3.x 比hive2 性能提高2-50倍,支持增删改查ACID

阅读更多

Apache Hive 3.x 架构介绍
hive 的更新操作一直是大数据仓库头痛的问题,在3.x之前也支持update,但是速度太慢,还需要进行分桶,现在hive 支持全新ACID,并且底层采用TEZ 和内存进行查询,性能是hive2的50倍。生产建议升级到hive3.1.1版本。
了解Apache Hive 3主要的设计更改,例如默认的ACID事务处理和仅支持瘦配置客户端,可以帮助您使用新功能来满足企业数据仓库系统不断增长的需求。

执行引擎更改
Apache Tez将MapReduce替换为默认的Hive执行引擎。不再支持MapReduce,并证明了Tez的稳定性。通过有向无环图(DAG)和数据传输原语的表达式,在Tez下执行Hive查询可以提高性能。您提交给Hive的SQL查询执行如下:

Hive编译查询。
Tez执行查询。
YARN为群集中的应用程序分配资源,并为YARN队列中的Hive作业启用授权。
Hive根据表类型更新HDFS或Hive仓库中的数据。
Hive通过JDBC连接返回查询结果。
该过程的简化视图如下图所示:


如果旧脚本或应用程序指定MapReduce执行,则会发生异常。您可以设置一个选项以静默忽略MapReduce设置。大多数用户定义的函数(UDF)不需要在Tez而不是MapReduce上执行更改。

设计影响安全性的更改
以下Hive 3体系结构更改提供了更高的安全性:

紧密控制的文件系统和计算机内存资源,取代灵活的边界:确定的边界提高了可预测性。更强大的文件系统控制可提高安
共享文件和YARN容器中的优化工作负载
默认情况下,HDP 3.0 Ambari安装添加了Apache Ranger安全服务。Hive的主要授权模型是Ranger。此模型仅允许Hive访问HDFS。Hive强制执行Ranger中指定的访问控制。此模型提供比其他安全方案更强的安全性以及更灵活的策略管理。

如果您未启用Ranger安全服务或其他安全性,则默认情况下Hive使用基于用户模拟的基于存储的授权(SBA)。

HDFS权限更改
在HDP 3.0中,SBA在很大程度上依赖于HDFS访问控制列表(ACL)。ACL是HDFS中权限系统的扩展。HDP 3.0默认打开HDFS中的ACL,为您提供以下优势:
在为多个组和用户提供特定权限时,可以提高灵活性
方便地将权限应用于目录树而不是单个文件
交易处理变更
您可以通过利用事务处理中的以下改进来部署新的Hive应用程序类型:

成熟版本的ACID事务处理和LLAP:
ACID表是HDP 3.0中的默认表类型。

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

简化的应用程序开发,具有更强事务保证的操作,以及更简单的SQL命令语义
您不需要在HDP 3.0中存储ACID表,因此维护更容易。

物化视图重写
自动查询缓存
高级优化
Hive客户端更改
Hive 3仅支持瘦客户端Beeline,用于从命令行运行查询和Hive管理命令。Beeline使用与HiveServer的JDBC连接来执行所有命令。在HiveServer中进行解析,编译和执行操作。Beeline支持与Hive CLI相同的命令行选项,但有一个例外:Hive Metastore配置更改。

您可以通过使用hive 关键字,命令选项和命令调用Beeline来输入支持的Hive CLI命令。例如,hive -e set。使用Beeline而不是不再支持的胖客户端Hive CLI有几个优点,包括:
您现在只维护JDBC客户端,而不是维护整个Hive代码库。
使用Beeline可以降低启动开销,因为不涉及整个Hive代码库。
瘦客户端体系结构有助于以这些方式保护数据:
会话状态,内部数据结构,密码等驻留在客户端而不是服务器上。
执行查询所需的少量守护进程简化了监视和调试。
HiveServer强制执行您可以使用SET命令更改的白名单和黑名单设置。使用黑名单,您可以限制内存配置以防止HiveServer不稳定。您可以使用不同的白名单和黑名单配置多个HiveServer实例,以建立不同级别的稳定性。

Hive客户端的更改要求您使用grunt命令行来使用Apache Pig。

Apache Hive Metastore发生了变化
HiveServer现在使用远程而不是嵌入式Metastore; 因此,Ambari不再使用hive.metastore.uris=' '.您不再key=value在命令行上设置 命令来配置Hive Metastore来启动Metastore。您可以在hive-site.xml中配置属性。Hive目录位于Hive Metastore中,它与早期版本中的RDBMS一样。使用此体系结构,Hive可以利用云部署中的RDBMS资源。

Spark目录更改
Spark和Hive现在使用独立的目录来访问相同或不同平台上的SparkSQL或Hive表。Spark创建的表驻留在Spark目录中。Hive创建的表位于Hive目录中。虽然是独立的,但这些表互操作。

您可以使用HiveWarehouseConnector从Spark访问ACID和外部表。

查询批处理和交互式工作负载的执行
下图显示了批处理和交互式工作负载的HDP 3.0查询执行体系结构:


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

 

分享到:
评论

相关推荐

    hive3.x编译spark3.x包

    对于Hive,选择3.1.x系列的分支,对于Spark,选择3.0.0或3.1.3版本,这取决于你希望编译的Hive-Spark组合。 3. **应用补丁**:描述中提到的“补丁文件包”可能包含针对Hive和Spark集成的特定修改。这些补丁通常用于...

    Hive2.x系列驱动,

    2. hive-metastore-2.1.1.jar:这是Hive元数据存储服务的实现,它存储了Hive表和分区的信息,包括它们在HDFS上的位置、列信息等。 3. hbase-protocol-1.1.1.jar 和 hbase-server-1.1.1.jar:这两个是Apache HBase的...

    含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz

    含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-3.1.2-bin.tar.gz 含两个文件hive-jdbc-3.1.2-standalone.jar和apache-hive-...

    cdh6.3.2升级hive至3.x后登陆HiveServer2连接失败.doc

    ### CDH 6.3.2 升级 Hive 至 3.x 后登录 HiveServer2 连接失败问题分析及解决方法 #### 一、问题背景与现象 在将 Cloudera Data Hub (CDH) 6.3.2 版本中的 Hive 升级到 3.x 版本后,用户在尝试通过 JDBC 连接到 ...

    apache-hive-2.1.1-bin.tar

    apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tarapache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tar apache-hive-2.1.1-bin.tarapache-hive-2.1.1-bin.tar apache-hive-2.1.1-...

    apache-hive-2.3.3-bin.tar.gz

    7. **Hive Execution Engine**:负责将HQL转换为MapReduce任务或Tez任务(在Hive 2.x版本中,默认执行引擎是Tez,它提供了比MapReduce更高的性能)。 8. **Hive Web UI**:提供一个Web界面,用于监控Hive服务器的...

    apache-hive-2.1.0-bin.tar.zip

    在"apache-hive-2.1.0-bin.tar.zip"这个压缩包中,我们找到了 Apache Hive 2.1.0 版本的二进制发布版。 在了解 Hive 的具体功能和特点之前,先来看看这个版本的组成部分。"apache-hive-2.1.0-bin"通常包含以下几...

    atlas hive hook 编译依赖 apache-atlas-1.2.0-hive-hook.tar.gz

    这通常涉及修改 Hive 的配置文件(如 `hive-site.xml`),添加必要的 Atlas 服务器地址和配置项。 7. **性能影响**:尽管 Hive Hook 增加了元数据追踪的能力,但也会带来一定的性能影响,因为每个 Hive 操作都需要...

    hive-jdbc-uber-2.6.5.0-292.jar驱动

    5. **事务管理**:虽然Hive本身不完全支持ACID事务,但驱动提供了部分事务管理能力。 6. **安全认证**:支持Kerberos等安全协议,确保数据访问的安全性。 7. **性能优化**:通过优化网络通信和数据传输,提高数据...

    apache-hive-3.1.2-bin.tar.gz

    3. `conf/`:默认的配置文件,如`hive-default.xml`和`hive-site.xml`,用户可以在此修改Hive的行为。 4. `scripts/`:包含Hive的一些初始化和管理脚本。 5. `metastore/`:元数据存储相关的库和脚本,Hive使用元...

    HIVE3 深度剖析 – 技术点解读与应用对接方式建议

    HIVE3.X 的 ORC 事务表提供了高效的数据存储和处理能力,支持对增删改查的完善的 ACID 语义的支持。 八、HIVE 的发展趋势 HIVE 的发展过程中,从早期的一个简单的存储引擎之上的 SQL 解析层,逐渐迭代优化,补齐...

    Apache Hive(apache-hive-3.1.3-bin.tar.gz)

    Apache Hive(apache-hive-3.1.3-bin.tar.gz、apache-hive-3.1.3-src.tar.gz)是一种分布式容错数据仓库系统,支持大规模分析,并使用 SQL 促进读取、写入和管理驻留在分布式存储中的 PB 级数据。Hive 构建在 Apache...

    ranger-2.1.0-hive-plugin.tar.gz

    2. **下载与解压**:获取 `ranger-2.1.0-hive-plugin.tar.gz` 压缩包并解压,将解压后的文件复制到 Hive 安装目录的相应插件目录下。 3. **配置 Ranger**:在 Ranger 管理界面中创建新的 Hive 服务实例,指定 Hive ...

    apache-hive-2.3.0-bin.tar.gz

    3. **ACID事务**:Hive 2.3.0开始支持ACID(Atomicity, Consistency, Isolation, Durability)事务,提供了更强的数据一致性和可靠性。 4. **改进的SQL兼容性**:增加了更多标准SQL语法的支持,使得Hive更符合用户...

    hive驱动包hive-jdbc-uber-2.6.5.0-292.jar(用户客户端连接使用)

    - **性能优化**:通过设置连接池,如C3P0或HikariCP,可以提高并发查询的性能和资源利用率。 了解并正确使用Hive JDBC驱动,是进行Hive数据操作的重要一环,尤其对于那些希望通过编程方式或数据库管理工具访问Hive...

    5.Hive(下)--Hive实战.pdf

    1.Spark及其生态圈简介.pdf2.Spark编译与部署(上)--基础环境搭建.pdf2.Spark编译与部署(下)--Spark编译安装.pdf2.Spark编译与部署(中)--Hadoop编译安装.pdf3.Spark编程模型(上)--概念及SparkShell实战.pdf3....

    hive-jdbc-uber-2.6.5.jar

    hive-jdbc-uber-2.6.5.0-292.jar DbVisualizer (as of version 9.5.5) Below is an example configuration using DbVisualizer: Open the Diver Manager dialog ("Tools" > "Driver Manager...") and hit the ...

    hive-testbench-hive14.zip大数据TPCDS-99SQL自动测试脚本

    2. **解压并运行测试脚本**:解压“hive-testbench-hive14.zip”,然后将其中的测试脚本提交到Hive环境中执行。这通常涉及到设置适当的Hive配置,例如分区策略、执行引擎(MapReduce或Tez)、优化器规则等。 3. **...

    hive-jdbc-jar-多版本.zip

    3. **hive-jdbc-uber-jar-1.7-2.6.2.zip**:适用于Hive 1.7版本的2.6.2版驱动。与1.6版本相比,它可能包含针对Hive 1.7的特定优化或修复。 4. **hive-jdbc-uber-jar-1.6-2.6.1.zip**:这是Hive 1.6版本的一个较早...

Global site tag (gtag.js) - Google Analytics