Apache蜂巢

回到术语表

什么是Apache Hive?

Apache Hive是一款开源数据仓库软件,用于读取、写入和管理从Apache Hadoop分布式文件系统中提取的大型数据集(HDFS),一个方面更大Hadoop生态系统

通过广泛的Apache Hive文档和不断的更新,Apache Hive继续以易于访问的方式创新数据处理。

Apache Hive的历史

Apache Hive是一个开源项目bob下载地址,由共同创始人Joydeep Sen Sarma和Ashish Thusoo在Facebook工作期间构思。Hive一开始是Apache Hadoop的子项目,但现在已经发展成为自己的顶级项目。随着Hadoop和Map Reduce作业的限制越来越大,数据的大小从2006年的10gb /天增加到1TB/天,几年内增加到15TB/天。Facebook的工程师们无法轻松地运行复杂的工作,让位于Hive的创建。

创建Apache Hive是为了实现两个目标——基于SQL的声明性语言,也允许工程师在SQL不能满足需求时插入自己的脚本和程序,这也使大多数工程世界(基于SQL技能)能够使用Hive,与其他相比,中断或再培训最小化。

其次,它提供了组织中所有数据集的集中元数据存储(基于Hadoop)。虽然最初是在Facebook内部开发的,但其他公司(如Netflix)也在使用和开发Apache Hive。Amazon在Amazon Elastic中维护了Apache Hive的一个软件分支MapReduce在亚马逊网络服务。

Hive的一些特性是什么?

Apache Hive支持对存储在Hadoop HDFS和兼容文件系统(如Amazon S3, Azure Blob Storage, Azure)中的大型数据集进行分析数据湖存储,谷歌云存储,和Alluxio。

它提供了一种称为HiveQL的类sql查询语言,具有读时模式,并透明地将查询转换为Apache火花MapReduce、Apache Tez等作业。Hive的其他特性包括:

  • Hive Data函数帮助处理和查询大数据集。这些函数提供的一些功能包括字符串操作、日期操作、类型转换、条件操作符、数学函数等
  • 关系数据库管理系统的元数据存储
  • 不同的存储类型,如拼花、纯文本、RCFile、HBase、ORC等
  • 使用算法对存储在Hadoop生态系统中的压缩数据进行操作
  • 内置用户定义函数(udf),用于操作日期、字符串和其他数据挖掘工具。Hive支持扩展UDF集来处理内置函数不支持的用例
  • 类sql查询(HiveQL),隐式转换为MapReduce或Tez或Spark作业

Apache Hive体系结构和关键Apache Hive组件

Apache Hive架构的关键组件是Hive Server 2、Hive Query Language (HQL)和Hive Server 2外部Apache Hive Metastore,以及Hive Beeline Shell。

Hive Server 2

Hive Server 2接收来自用户和应用程序的传入请求,创建执行计划并自动生成YARN作业来处理SQL查询。服务器还支持Hive优化器和Hive编译器来简化数据提取和处理。

Hive查询语言

通过支持sql回忆代码的实现,Apache Hive不再需要冗长的JavaScript代码来对非结构化数据进行排序,并允许用户使用内置的HQL语句(HQL)进行查询。这些语句可用于导航大型数据集,优化结果,并以具有成本效益和时间效率的方式共享数据。

蜂巢转移瘤

作为Apache Hive基础设施的中央存储库,metastore是所有Hive元数据存储的地方。在metastore中,元数据也可以被格式化成蜂巢表以及用于跨关系数据库比较数据的分区。这包括表名、列名、数据类型、分区信息和HDFS上的数据位置。

蜂巢直线壳

与其他数据库管理系统(DBMS)一样,Hive有自己的内置命令行界面,用户可以在其中运行HQL语句。此外,Hive shell还运行Hive JDBC和ODBC驱动程序,因此可以从开放数据库连接或Java数据库连接应用程序进行查询。

Apache Hive软件是如何工作的?

Hive Server 2在创建执行计划之前接受来自用户和应用程序的传入请求,并自动生成一个YARN作业来处理SQL查询。YARN作业可以作为MapReduce、Tez或Spark工作负载生成。

然后,该任务作为Hadoop中的分布式应用程序工作。一旦SQL查询被处理,结果将返回给最终用户或应用程序,或者传输回HDFS。

Hive Metastore将利用关系数据库(如Postgres或MySQL)来保存这些元数据,Hive Server 2检索表结构作为其查询计划的一部分。在某些情况下,应用程序也可以作为其底层处理的一部分来询问亚metastore。

然后在YARN (Hadoop资源管理器)中执行Hive工作负载,以提供能够执行Hadoop作业的处理环境。这个处理环境由Hadoop集群中各个工作节点分配的内存和CPU组成。

YARN将尝试利用HDFS元数据信息来确保处理部署在所需数据所在的位置,而MapReduce、Tez、Spark或Hive可以自动为SQL查询生成代码作为MapReduce、Tez或Spark作业。

尽管Hive最近才利用MapReduce,但大多数Cloudera Hadoop部署都将Hive配置为使用MapReduce,有时也会使用Spark。Hortonworks (HDP)部署通常将Tez设置为执行引擎。

Apache Hive使用的五种不同的数据类型是什么?

通过批处理的使用,Apache Hive能够快速高效地提取和分析pb级的数据——这使得它不仅是处理数据的理想选择,而且是运行特别查询的理想选择。

Apache Hive数据类型包括5类:Numeric、Date/Time、String、Complex和Misc。

数值型数据类型

顾名思义,这些数据类型是基于整数的数据类型。这些数据类型的例子是“TINYINT”,“SMALLINT”,“INT”和“BIGINT”。

日期/时间数据类型

这些数据类型允许用户输入时间和日期,“TIMESTAMP”、“date”和“INTERVAL”都是可接受的输入。

字符串数据类型

同样,这种类型的数据非常简单,允许将书面文本或“字符串”实现为用于处理的数据。字符串数据类型包括' String '、' VARCHAR '和' CHAR '。

复杂数据类型

复杂类型是更高级的数据类型之一,记录更详细的数据,由' STRUCT '、' MAP '、' ARRAY '和' UNION '等类型组成。

混杂。类型

不属于其他四种类型的数据类型被称为杂项数据类型,可以接受' BOOLEAN '或' BINARY '等输入。

映射连接如何在Hive Apache工作

在Apache Hive中,Map Join是一种通过组合(更确切地说是“连接”)来自两个表的数据来提高查询速度和效率的功能,同时绕过流程的Map- reduce阶段。

什么是关系数据库管理系统(RDBMS), Apache Hive如何使用它?

关系数据库管理系统(RDBMS)是一种数据库模型,它通过将元数据存储在基于行或基于列的表结构中来操作,并允许不同数据集的连接和比较。

通过使用RDBMS, Apache Hive可以确保所有数据都被安全、可靠和准确地存储和处理,因为集成的特性(例如基于角色的安全性和加密通信)可以确保只有正确的人才能访问提取的信息。

Apache Hive和传统RDBMS的区别是什么?

Apache Hive和RDBMS之间有一些关键的区别:

  • RDBMS函数工作在读和写多次,而Hive工作在写一次,读多次。
  • Hive遵循schema-on-read规则,这意味着没有数据验证、检查或解析,只是复制/移动文件。在传统数据库中,模式应用于表,在写规则上强制使用模式。
  • 因为Hive是建立在Hadoop之上的,它必须遵守Hadoop和MapReduce的相同限制,而其他RDBMS可能不需要。

Apache Hive vs Apache Spark

Apache Spark是一个分析框架,旨在跨各种数据集处理大量数据,提供了强大的用户界面,能够支持从R到Python的各种语言。

Hive提供了一个抽象层,它将数据表示为具有行、列和数据类型的表,使用名为HiveQL的SQL接口进行查询和分析。Apache Hive支持ACID事务与Hive LLAP。在多个用户/进程同时访问数据进行创建、读取、更新和删除(CRUD)操作的环境中,事务保证数据视图的一致性。

砖了三角洲湖,它类似于Hive LLAP,因为它提供了ACID事务保证,但是在访问数据时,它还提供了其他一些好处来帮助提高性能和可靠性。火花SQL是Apache Spark的模块,用于与表示为具有行、列和数据类型的表的结构化数据进行交互。

Spark SQL兼容SQL 2003,使用Apache Spark作为分布式引擎来处理数据。除了Spark SQL接口外,还可以使用DataFrames API使用Java、Scala、Python和r与数据交互。Spark SQL类似于HiveQL。

两者都使用ANSI SQL语法,并且大多数Hive函数将运行在Databricks上。这包括用于日期/时间转换和解析、集合、字符串操作、数学操作和条件函数的Hive函数。

有一些特定于Hive的函数需要转换为Spark SQL的等效函数,或者在Databricks上的Spark SQL中不存在这些函数。您可以期望所有HiveQL ANSI SQL语法都可以与Databricks上的Spark SQL一起使用。

这包括ANSI SQL聚合和分析函数。Hive针对ORC (optimized Row Columnar)文件格式进行了优化,也支持Parquet。Databricks针对Parquet和Delta进行了优化,但也支持ORC。我们总是推荐使用Delta,它使用开源Parquet作为文件格式。

Apache Hive vs. Presto

PrestoDB最初是在Facebook上建立的一个项目,通常被称为Presto,是一个分布式SQL查询引擎,允许用户快速处理和分析pb级的数据。Presto的基础设施支持从MySQL和Teradata到MongoDB和Cassandra的关系数据库和非关系数据库的集成。

额外的资源


回到术语表