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 的 ORC 事务表提供了高效的数据存储和处理能力,支持对增删改查的完善的 ACID 语义的支持。 八、HIVE 的发展趋势 HIVE 的发展过程中,从早期的一个简单的存储引擎之上的 SQL 解析层,逐渐迭代优化,补齐...
4. **数据更新机制**:Hive主要针对数据仓库应用场景,支持较少的数据更新操作,而传统数据库则支持频繁的数据增删改查操作。 5. **索引机制**:Hive在加载数据时不创建索引,因此访问延迟较高,但得益于MapReduce...
- SQL语句:增删改查,子查询,连接查询,索引优化。 - 数据库事务隔离级别,ACID特性。 - 数据库设计原则,如范式理论。 5. **新技术趋势**: - **微服务**: Spring Cloud、Docker、Kubernetes等微服务架构的...
- **SQL语言**:增删改查、子查询、联接操作、索引的使用等。 - **关系型数据库理论**:ACID特性、范式理论(第一范式到第三范式)。 - **数据库优化**:索引优化、查询优化、存储优化等。 6. **软件工程**: -...
3. **数据库知识**:对于数据库管理岗位,SQL语言的熟练程度是关键,包括增删改查操作、索引、事务处理、存储过程等。同时,理解关系型数据库的基本概念,如ACID特性,以及NoSQL数据库的适用场景。 4. **操作系统**...
5. **数据库管理**:SQL语言是必备知识,包括查询(SELECT语句)、增删改查操作、索引、视图、存储过程等。理解关系型数据库的基本理论,如ACID属性和范式理论。 6. **软件工程与设计模式**:软件开发生命周期、...