Hive 是业务中广泛使用的大数据分析工具,如果您不熟悉大数据,它是一个绝佳的起点。 本 Apache Hive 课程将介绍 Apache Hive 的基础知识、为什么需要 Hive、它的功能以及您应该了解的所有其他内容。
让我们首先了解构建 Apache Hive 的 Hadoop 框架。
Apache Hadoop
Apache Hadoop 是一个免费且 开放源码 用于存储和处理从 GB 到 PB 大小的大型数据集的平台。 Hadoop 允许集群多台计算机以并行分析大量数据集,而不需要一台大型计算机来存储和分析数据。
MapReduce 和 Hadoop 分布式文件系统是其中的两个组件:
- 映射简化 – MapReduce 是一种并行编程技术,用于处理商品硬件集群上的大量有组织、半结构化和非结构化数据。
- 高密度文件系统 – HDFS(Hadoop分布式文件系统)是存储和处理数据的Hadoop框架组件。 它是一个在标准硬件上运行的容错文件系统
Hadoop 生态系统中的不同子项目(工具),包括 Sqoop、Pig 和 Hive,用于辅助 Hadoop 模块。
- 蜂房 – Hive 是一个用于编写执行 MapReduce 计算的 SQL 样式脚本的框架。
- 猪 – Pig 是一种过程编程语言,可用于为 MapReduce 进程创建脚本。
- 勺子 – Sqoop 是用于在 HDFS 和 RDBMS 之间导入和导出数据的工具。
什么是 阿帕奇蜂巢?
Apache Hive 是一个开源的 数据仓库 用于读取、写入和管理直接存储在 Apache Hadoop 分布式文件系统 (HDFS) 或其他数据存储系统(如 Apache HBase)中的大量数据集的程序。
SQL 开发人员可以使用 Hive 创建 Hive 查询语言 (HQL) 语句,用于与常规 SQL 语句相媲美的数据查询和分析。 创建它的目的是通过消除学习和编写长 Java 代码的需要,使 MapReduce 编程更容易。 相反,您可以在 HQL 中编写查询,Hive 将为您构建映射并减少函数。
Apache Hive 的类 SQL 界面已成为执行即席搜索、汇总和分析 Hadoop 数据的黄金标准。 当包含在云中时 计算网络,该解决方案特别具有成本效益和可扩展性,这也是包括 Netflix 和 Amazon 在内的许多公司不断开发和改进 Apache Hive 的原因。
发展历程
在 Facebook 工作期间,Joydeep Sen Sarma 和 Ashish Suchoo 共同创建了 Apache Hive。 他们都认识到要充分利用 Hadoop,他们必须创建一些相当复杂的 Java Map-Reduce 任务。 他们认识到,他们无法对快速扩张的工程和分析团队进行培训,让他们了解在整个公司利用 Hadoop 所需的技能。 工程师和分析师经常使用 SQL 作为用户界面。
虽然 SQL 可以满足大多数分析需求,但开发人员还打算结合 Hadoop 的可编程性。 Apache Hive 源于这两个目标:一种基于 SQL 的声明性语言,它还允许开发人员在 SQL 不够用时引入他们自己的脚本和程序。
它还被开发用于保存有关公司所有数据集的集中元数据(基于 Hadoop),以使数据驱动组织的构建更加容易。
Apache Hive 是如何工作的?
简而言之,Apache Hive 将使用 HiveQL(类 SQL)语言编写的输入程序转换为一个或多个 Java MapReduce、Tez 或 Spark 任务。 (所有这些执行引擎都与 Hadoop YARN 兼容。)之后,Apache Hive 将数据整理到 Hadoop 分布式文件系统 HDFS 的表中)并在集群上执行任务以获得答案。
时间
Apache Hive 表的排列方式与关系数据库中的表的组织方式相同,数据单元的大小从大到小不等。 数据库由划分为多个部分的表组成,这些部分进一步划分为存储桶。 HiveQL(Hive 查询语言)用于访问可以更改或附加的数据。 表数据在每个数据库内是序列化的,每个表都有自己的HDFS目录。
建筑
现在我们将讨论 Hive 架构最重要的方面。 Apache Hive 的组件如下:
元存储 — 它跟踪有关每个表的信息,例如其结构和位置。 分区元数据同样包含在 Hive 中。 这允许驱动程序跟踪分布在集群中的不同数据集的进度。 数据以传统的 RDBMS 格式存储。 Hive 元数据对于驱动程序保持对数据的跟踪非常重要。 备份服务器定期复制数据,以便在数据丢失时可以恢复。
驱动器 – HiveQL 语句由作为控制器的驱动程序接收。 通过建立会话,驱动程序启动语句的执行。 它跟踪执行官的生命周期和进度。 在执行 HiveQL 语句期间,驱动程序会保存所需的元数据。 它还用作Reduce过程之后的数据或查询结果收集点。
编译器 – 它执行 HiveQL 查询编译。 该查询现在转换为执行计划。 任务列在计划中。 它还包括 MapReduce 必须采取的步骤来获取查询翻译的结果。 Hive 的编译器 (AST) 将查询转换为抽象语法树。 在检查兼容性和编译时错误 (DAG) 后,将 AST 转换为有向无环图。
优化 – 它通过对执行计划执行不同的更改来优化 DAG。 它结合了转换以提高效率,例如将连接管道转换为单个连接。 为了提高速度,优化器可能会划分活动,例如在执行归约操作之前对数据应用转换。
执行者 – 执行器在编译和优化完成后运行任务。 作业由 Executor 流水线化。
CLI、UI 和 Thrift 服务器 – 命令行界面 (CLI) 是允许外部用户与 Hive 通信的用户界面。 Hive 的 thrift 服务器,类似于 JDBC 或 ODBC 协议,允许外部客户端通过网络与 Hive 通信。
安保行业
Apache Hive 与 Hadoop 安全性集成,后者使用 Kerberos 进行客户端-服务器相互身份验证。 HDFS 规定了 Apache Hive 中新生成文件的权限,允许您由用户、组和其他人批准。
主要特点
- Hive 支持外部表,这让您无需将数据存储在 HDFS 中即可处理数据。
- 它还支持在表级别进行数据分段以提高速度。
- Apache Hive 很好地满足了 Hadoop 的低级接口需求。
- Hive 使数据汇总、查询和分析更容易。
- HiveQL 不需要任何编程技能; 对 SQL 查询有一个简单的了解就足够了。
- 我们还可以使用 Hive 进行临时查询以进行数据分析。
- 它具有可扩展性、熟悉性和适应性。
- HiveQL 不需要任何编程技能; 对 SQL 查询有一个简单的了解就足够了。
认证的益处
Apache Hive 允许进行日终报告、每日交易评估、临时搜索和数据分析。 Apache Hive 提供的全面洞察力提供了显着的竞争优势,并使您更容易响应市场需求。
以下是这些信息随时可用的一些好处:
- 使用方便 – 使用类似 SQL 的语言,查询数据很容易理解。
- 加速数据插入 — 因为 Apache Hive 读取模式而不验证表类型或模式定义,所以不必以数据库的内部格式读取、解析和序列化数据到磁盘。 相反,在传统数据库中,每次添加数据时都必须对其进行验证。
- 卓越的可扩展性、灵活性和成本效益 – 由于数据存储在 HDFS 中,Apache Hive 可以容纳 100 PB 的数据,使其成为比典型数据库更具可扩展性的选项。 Apache Hive 作为基于云的 Hadoop 服务,允许客户快速启动和关闭虚拟服务器以满足不断变化的工作负载。
- 广泛的工作能力 – 大型数据集每小时可处理多达 100,000 个查询。
限制
- 通常,Apache Hive 查询具有非常高的延迟。
- 子查询支持是有限的。
- Apache Hive 中不提供实时查询和行级更改。
- 不支持物化视图。
- 在配置单元中,不支持更新和删除操作。
- 不适用于 OLTP(在线过渡过程)。
Apache Hive 入门
Apache Hive 是一个强大的 Hadoop 合作伙伴,可以简化和简化您的工作流程。 要充分利用 Apache Hive,无缝集成是必不可少的。 第一步是去 官网.
1. 从稳定版本安装 Hive
首先从 Apache 下载镜像之一下载 Hive 的最新稳定版本(请参阅 Hive 发布)。 然后必须解压缩 tarball。 这将创建一个名为 hive-xyz 的子文件夹(其中 xyz 是版本号):
设置环境变量 HIVE_HOME 指向安装目录:
最后,将 $HIVE_HOME/bin 添加到您的 PATH
:
2. 运行 Hive
Hive 使用 Hadoop,因此:
- 您的路径中必须有 Hadoop 或
3.DLL操作
创建 Hive 表
生成一个名为 pokes 的表,它有两列,第一列是整数,第二列是字符串。
浏览表格
列出所有表
更改和删除表
可以更改表名,可以添加或替换列:
值得注意的是,REPLACE COLUMNS 替换了所有现有列,而只更改了表的结构而不更改数据。 表中必须使用本机 SerDe。 REPLACE COLUMNS 也可用于从表的模式中删除列:
删除表
Apache Hive 中还有很多额外的操作和特性,您可以通过访问官网了解。
结论
Hive 定义是一个数据程序接口,用于查询和分析构建在 Apache Hadoop 之上的巨大数据集。 专业人士选择它而不是其他程序、工具和软件,因为它主要是为 Hive 大量数据而设计的并且易于使用。
希望本教程可以帮助您开始使用 Apache Hive 并使您的工作流程更加高效。 让我们在评论中知道。
发表评论