Hive基础教程

server/2024/9/23 5:24:05/

文章目录

  • Apache Hive 教程
    • 1. Hive-简介
      • 1.1 学习Hive的前置知识
      • 1.2 什么是Hive?
      • 1.3 Hive的架构
      • 1.4 Hive的工作流程

Apache Hive 教程

Hive Tutorial

资料来源:Hive Tutorial (tutorialspoint.com)

Hive是Hadoop中用于处理结构化数据的数据仓库基础设施工具。它驻留在Hadoop之上,对大数据进行汇总,使查询和分析变得容易

这是一个简短的教程,介绍了如何在Hadoop分布式文件系统中使用Apache Hive HiveQL。本教程可以成为你成为一个成功的Hadoop开发人员的第一步。

1. Hive-简介

1.1 学习Hive的前置知识

“大数据”一词用于大型数据集的集合,这些数据集包括巨大的容量、高速度和每天都在增加的各种数据。传统的数据管理系统难以处理大数据。因此,Apache软件基金会引入了一个名为Hadoop的框架来解决大数据管理和处理方面的挑战。

hadoop

Hadoop是一个开源框架,用于在分布式环境中存储和处理大数据。它包含两个模块,一个是MapReduce,另一个是HDFS (Hadoop Distributed File System)。这是hadoop1.x,hadoop2.x以后还引入了Yarn

MapReduce:它是一个并行编程模型,用于处理大型商用硬件集群上的大量结构化、半结构化和非结构化数据。

HDFS:Hadoop分布式文件系统是Hadoop框架的一部分,用于存储和处理数据集。它提供了一个在商用硬件上运行的容错文件系统。

Hadoop生态系统包含不同的子项目(工具),如Sqoop、Pig和Hive,用于帮助Hadoop模块。

Sqoop:用于在HDFS和RDBMS之间导入和导出数据。

Pig:它是一个过程语言平台,用于开发MapReduce操作的脚本。

Hive:用于开发SQL类型脚本来执行MapReduce操作的平台。

注意:执行MapReduce操作有多种方式:

  • 传统方法使用Java MapReduce程序处理结构化、半结构化和非结构化数据。
  • MapReduce使用Pig来处理结构化和半结构化数据的脚本方法。
  • Hive Query Language (HiveQL或HQL),使用Hive代替MapReduce处理结构化数据。

前面讲了那么多前置知识

1.2 什么是Hive?

如开头所说,Hive是Hadoop中用于处理结构化数据的数据仓库基础设施工具。它驻留在Hadoop之上,对大数据进行汇总,使查询和分析变得容易。

最初Hive是由Facebook开发的,后来Apache软件基金会接受了它,并以Apache Hive的名义将其进一步开发为开源。它被不同的公司使用。例如,Amazon在Amazon Elastic MapReduce中使用了它。


Hive不是什么?

不是 关系数据库

不是 联机事务处理(OLTP)的设计

不是 用于实时查询和行级更新的语言


Hive的特点

  • 它将模式(schema )存储在数据库中,并将处理后的数据存储到HDFS中。
  • 它是为OLAP(联机分析处理)设计的。
  • 它提供用于查询的SQL类型语言,称为HiveQL或HQL。
  • 它是熟悉的、快速的、可伸缩的和可扩展的。

tips:OLAP=Online Analytical Processing, OLTP = Online Transaction Processing


1.3 Hive的架构

Hive的架构示意图如下:

Hive Architecture

这个组件图包含不同的单元。各单元介绍如下表:

Unit NameOperation
User InterfaceHive是一个数据仓库基础架构软件,可以创建用户和HDFS之间的交互。Hive支持的用户界面包括Hive Web UI、Hive命令行和Hive HD Insight (Windows服务器)。
Meta StoreHive选择各自的数据库服务器来存储表、数据库、表中的列、它们的数据类型和HDFS映射的模式或元数据。
HiveQL Process EngineHiveQL类似于在Metastore上查询模式信息的SQL。它是MapReduce程序的传统方法的替代品之一。不用Java编写MapReduce程序,我们可以为MapReduce作业编写查询并处理它。
Execution EngineHiveQL进程引擎与MapReduce的对接部分是Hive Execution Engine。执行引擎处理查询并生成与MapReduce结果相同的结果。它使用MapReduce的风格。
HDFS or HBASEHadoop分布式文件系统或HBASE是将数据存储到文件系统中的数据存储技术。

1.4 Hive的工作流程

Hive和Hadoop之间的工作流程如下图所示。

How Hive Works

下表定义了Hive与Hadoop框架的交互方式:

Step No.Operation
1执行查询:Hive接口(如Command Line或Web UI)将查询发送给驱动程序(任何数据库驱动程序,如JDBC、ODBC等)执行。
2驱动程序获得计划:驱动程序借助查询编译器对查询进行解析,检查查询的语法和查询计划或查询的要求。
3编译器获取元数据:编译器向Metastore(任何数据库)发送元数据请求。
4Metastore发送元数据:Metastore发送元数据作为对编译器的响应。
5编译器发送计划:编译器检查需求并将计划重新发送给驱动程序。至此,查询的解析和编译已经完成。
6执行引擎执行计划:驱动程序将执行计划发送给执行引擎。
7MapReduce执行作业(job):在内部,执行任务的进程是一个MapReduce任务。执行引擎将作业发送给位于Name节点中的JobTracker,并将该作业分配给位于Data节点中的TaskTracker。这里,查询执行MapReduce作业。
7.1执行引擎进行元数据操作:同时在执行过程中,执行引擎可以通过Metastore执行元数据操作。
8执行引擎获取结果:执行引擎接收来自Data节点的结果。
9执行引擎发送结果:执行引擎将这些结果值发送给驱动程序。
10驱动程序发送结果:驱动程序将结果发送给Hive接口。

未完待续,点个赞呗


http://www.ppmy.cn/server/53109.html

相关文章

Web渗透:文件上传-后端过滤

在上一篇文件上传的内容中笔者阐述了文件上传漏洞产生的相关原理以及使用了一个pikachu靶场的例子进行演示,在这个例子中涉及到了前端代码对于文件上传漏洞的相关防护,以及站在攻击者的角度我们要如何绕过前端的防护成功进行攻击;但是事实上对…

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-22池化层

22池化层 import torch from torch import nn# 最大汇聚层和平均汇聚层 def pool2d(X, pool_size, modemax):p_h, p_w pool_sizeY torch.zeros((X.shape[0] - p_h 1, X.shape[1] - p_w 1))for i in range(Y.shape[0]):for j in range(Y.shape[1]):if mode max:Y[i, j] X…

macOS 环境下 MySQL Server 启动命令

MySQL Community Server for macOS 下载: MySQL :: Download MySQL Community Server 安装后 MySQL Server 启动和关闭命令: 启动: sudo /usr/local/mysql/support-files/mysql.server start 停止: sudo /usr/local/mysql/support…

如何在SQL中实现多条件的LIFO查询

在SQL中实现多条件的LIFO(后进先出)查询,你需要首先明确你的“多条件”指的是什么。但通常情况下,你可能希望基于多个字段(如时间戳、用户ID等)来确定LIFO的顺序。 以下是一个基于时间戳和用户ID的示例&am…

图像大小调整(缩放)

尺寸调整前尺寸调整前 1、背景介绍 在深度学习中,将图像调整到固定尺寸(如28x28像素)的操作是非常常见的,尤其是在处理诸如图像分类、物体检测和图像分割等任务时。这种操作有几个重要原因: 标准化输入:许…

汽车IVI中控开发入门及进阶(三十一):视频知识扫盲

有效的视频资源管理需要集成许多不同的底层技术,共同为用户提供给定应用程序的最佳体验。其中许多技术是从早期电视广播中使用的技术演变而来的。其他方法,如用于通过网络流式传输视频的压缩方法,相对较新且不断发展。 以下详细概述了与图形和视频处理和传输相关的一些基本…

Apollo学习笔记

安装依赖: npm install apollo/client graphql react 初始化Apollo Client # 导入依赖库 const { ApolloClient, InMemoryCache, gql } require(apollo/client);# 创建ApolloClient实例 const client new ApolloClient({uri: http://localhost:4000/,cache: ne…

Redis-哨兵模式-主机宕机-推选新主机的过程

文章目录 1、为哨兵模式准备配置文件2、启动哨兵3、主机6379宕机3.4、查看sentinel控制台日志3.5、查看6380主从信息 4、复活63794.1、再次查看sentinel控制台日志 1、为哨兵模式准备配置文件 [rootlocalhost redis]# ll 总用量 244 drwxr-xr-x. 2 root root 150 12月 6 2…