【Hadoop】-Apache Hive概述 Hive架构[11]

news/2024/9/30 2:17:11/

目录

Apache Hive概述

一、分布式SQL计算-Hive

二、为什么使用Hive

Hive架构

一、Hive组件


Apache Hive概述

Apache Hive是一个在Hadoop上构建的数据仓库基础设施,它提供了一个SQL-Like查询语言来分析和查询大规模的数据集。Hive将结构化查询语言(SQL)语句转换为MapReduce任务或Tez任务,并在Hadoop集群上执行这些任务。

Hive的设计目标是为数据分析提供高效和易用的工具。它支持大规模的数据处理,并且可以处理PB级的数据。Hive的查询语言类似于传统的SQL,这使得开发人员和分析人员可以更轻松地使用它进行数据探索和分析

一、分布式SQL计算-Hive

对数据进行统计分析,SQL是目前最为方便的编程工具。
大数据体系中充斥着非常多的统计分析场景所以,使用SQL去处理数据,在大数据中也是有极大的需求的。

但我们hadoop里边的MapReduce支持程序开发(Java、python),但不支持SQL开发

如果有一个什么办法,让我们大数据体系内支持SQL的话,这样就好办了。那怎么样支持呢?这就是我们的Apache Hive了。

Apache Hive是一款分布式SQL计算的工具,其主要功能是:

  • 将SQL语句翻译成MapReduce程序运行

基于Hive为用户提供了分布式SQL计算能力,写的是SQL、执行的是MapReduce。

二、为什么使用Hive

现在很少有人去写MapReduce代码了,主要就是因为有一点就是MapReduce的代码写起来非常非常复杂。

使用Hadoop MapReduce直接处理数据所面临的问题

  • 人员学习成本太高,需要掌握java、python等编程语言
  • MapReduce实现复杂查询逻辑开发难度太大

使用Hive处理数据的好处

  • 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手
  • 底层执行MapReduce,可以完成分布式海量数据的SQL处理

Hive架构

一、Hive组件

  • 元数据存储

通常是存储在关系数据库如 mysql/derby 中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

-----Hive提供了MetaStore服务进程提供元数据管理功能。

  • SQL解析器(Driver驱动程序)、包括语法解析器、计划编译器、优化器、执行器

完成SQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有执行引擎调用执行。

这部分内容不是具体的服务进程,而是分装在Hive所依赖的Jar文件即Java代码中。

Hive架构图


http://www.ppmy.cn/news/1431152.html

相关文章

Python使用random模块随机生成ip、端口、字符串

import random import stringdef generate_random_ip():ip ".".join(str(random.randint(0,255)) for _ in range(4))return ipdef generate_random_port():port random.randint(0,65535)return portdef generate_random_data(length):# 从字母(大小写&…

STM32 堆栈内存以及变量存储分布

STM32的程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内, 地址范围为0x0000 0000至0xFFFF FFFF。其中FLASH为ROM类型,储存的数据掉电不易失;RAM中存储的数据掉电易失。以STM32F103系列为例,最多有512KB的FLA…

Git 创建版本库

Git 创建版本库 | CoderMast编程桅杆Git 创建版本库 在 Git 上创建版本库有两种方式,一种是直接拷贝远程 Git 仓库到本地,另外一种是我们自己创建本地的版本库。 拷贝远程仓库 拷贝远程仓库时我们需要知道远程仓库的URL地址,直接使用如下命令…

K8S Pod 常见问题

Pod 常见问题 调试 Pod 查看 Pod 的当前状态和最近的事件 kubectl describe pods php-apache-7d4456444b-rdd4t查看一下 Pod 中的容器所处的状态。这些容器的状态都是 Running 吗?最近有没有重启过? 后面的调试都是要依靠 Pod 的状态的。 Pod 在 Pen…

【车载Android】模拟Android系统的高负载环境

在开发车载Android应用和系统时,我们总会面临着一些挑战,尤其是处理高负载应用。例如,当一款新车型发布后,用户可能会同时运行地图、智能驾驶和爱奇艺等资源密集型应用。在这种情况下,如果用户尝试使用语音唤醒功能&am…

【ChatGPT】【Gemini】-用Python调用google的Gemini API

用Python调用google的Gemini API 以下是Gemini自己给出的具体步骤和代码,我直接参考一次测试通过,大家可以参考。 Goodmao:Python call gemini API Gemini: Absolutely, calling the Gemini API with Python involves a few st…

php时间人性化展示

在PHP中,可以使用date()函数和strtotime()函数来实现时间的人性化展示。下面是一个示例代码: <?php // 获取当前时间戳 $timestamp = time();// 格式化时间 $formattedTime = date(Y年m月d日 H:i:s, $timestamp);echo

Java面试题:什么是Java中的单元测试以及如何编写单元测试?

Java中的单元测试是一种软件开发方法&#xff0c;用于验证代码中的最小可测试单元&#xff08;通常是方法或类&#xff09;是否按预期工作。单元测试的目标是隔离代码的各个部分&#xff0c;并验证每个部分是否都能正确执行其预期的功能。 在Java中&#xff0c;JUnit是最常用的…