• Apache Hive概述,模拟实现Hive功能,Hive基础架构


    1、Apache Hive 概述

    1.1、分布式SQL计算

    对数据进行统计分析,SQL是目前最为方便的编程工具。

    大数据体系中充斥着非常多的统计分析场景
    所以,使用SQL去处理数据,在大数据中也是有极大的需求的。
    在这里插入图片描述

    MapReduce支持程序开发(Java、Python等)
    但不支持SQL开发
    在这里插入图片描述

    1.2、分布式SQL计算 - Hive

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

    • 将SQL语句 翻译成MapReduce程序运行
    • 基于Hive为用户提供了分布式SQL计算的能力
      写的是SQL、执行的是MapReduce。

    在这里插入图片描述

    1.3、为什么使用Hive

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

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

    使用Hive处理数据的好处

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

    2、模拟实现Hive功能

    如果让您设计Hive这款软件,要求能够实现

    • 用户只编写sql语句
    • Hive自动将sql转换MapReduce程序并提交运行
    • 处理位于HDFS上的结构化数据。

    如何实现?

    2.1、元数据管理

    假设有如下结构化文本数据存储在HDFS中。
    在这里插入图片描述

    假设要执行: SELECT city, COUNT(*) FROM t_user GROUP BY city;

    对这个SQL翻译成MapReduce程序,会出现哪些困难?

    针对SQL:SELECT city, COUNT(*) FROM t_user GROUP BY city;若翻译成MapReduce程序,有如下问题:

    • 数据文件在哪里?
    • 使用什么符号作为列的分隔符?
    • 哪些列可以作为city使用?
    • city列是什么类型的数据?

    在这里插入图片描述
    在这里插入图片描述

    所以,我们可以总结出来第一个点, 即构建分布式SQL计算, 需要拥有:元数据管理功能,即:

    • 数据位置
    • 数据结构
    • 等对数据进行描述

    2.2、解析器

    解决了元数据管理后,我们还有一个至关重要的步骤, 即完成SQL到MapReduce转换的功能。
    在这里插入图片描述

    我们称呼它为:SQL解析器,期待它能做到:

    • SQL分析。
    • SQL到MapReduce程序的转换。
    • 提交MapReduce程序运行并收集执行结果。

    2.3、基础架构

    所以,当解析器也拥有了之后,我们就完成了一款基于MapReduce的,分布式SQL执行引擎的基础构建。

    即,核心组件需要有:

    • 元数据管理,帮助记录各类元数据。
    • SQL解析器,完成SQL到MapReduce程序的转换。
      在这里插入图片描述

    当拥有这2个组件, 基本上分布式SQL计算的能力就实现了。

    2.4、ive架构

    Apache Hive其2大主要组件就是:SQL解析器以及元数据存储, 如下图。
    在这里插入图片描述

    3、Hive基础架构

    3.1、Hive架构图

    在这里插入图片描述

    3.2、Hive组件

    3.2.1、元数据存储

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

    – Hive提供了 Metastore 服务进程提供元数据管理功能
    在这里插入图片描述

    3.2.2、Driver驱动程序,包括语法解析器、计划编译器、优化器、执行器

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

    这部分内容不是具体的服务进程,而是封装在Hive所依赖的Jar文件即Java代码中。
    在这里插入图片描述

    3.2.3、用户接口

    包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。

    – Hive提供了 Hive Shell、 ThriftServer等服务进程向用户提供操作接口。
    在这里插入图片描述

    结束!!!!!!!
    hy:38


    											低级的快乐来自放纵,高级的快乐来自克制。
    
    • 1
  • 相关阅读:
    yolo 目标检测
    评估和选择最佳学习模型的一些指标总结
    群晖上搭建Ghost博客
    Asp.Net 6.0集成 Log4Net
    家政服务行业怎么做微信小程序开发
    JavaSE——继承和多态详解
    YOLOv7中的数据集处理【代码分析】
    Github 2024-06-20 Go开源项目日报 Top10
    备份和恢复 SecureCRT® 和 SecureFX® 设置(版本 7.3 和更高版本)
    回归预测 | Matlab实现POA-CNN-SVM鹈鹕算法优化卷积神经网络-支持向量机多变量回归预测
  • 原文地址:https://blog.csdn.net/weixin_49107940/article/details/132947064