Apache Hive

news2024/11/24 20:38:37

Hive的概念

  • Hive是Facebook开源出来,后来贡献给力Apache .宗旨是:提高分析数据的能力降低分析数据的开发成本。

  • Hive是基于 Hadoop 的一个数据仓库工具,用于分析数据的。

    为什么说Hive是基于Hadoop的呢?
    ​
    #作为一款数据仓库软件,应该要具备哪些能力?
      具备存储数据的能力
      具备分析数据的能力
    ​
    Hive作为数仓软件,当然具备上述两种能力?
      #Hive使用Hadoop HDFS作为数据存储系统
      #Hive使用Hadoop MapReduce来分析数据
    基于此说Hive是基于Hadoop的数仓软件。
  • 在此过程中,Hive做了什么?其最大的魅力在哪里?

    • 可以将结构化的数据文件映射为一张数据库表,并提供==类 SQL 查询==功能。

      结构化数据:具有schema约束的数据 便于程序解读解析
      映射  y=2X+1  当x=1 y=3 映射表示的就是一种对应关系。
      映射成为表之后 提供了类SQl查询分析功能。 SQL叫做声明式编程,程序员不用关系过程,利于数据分析。

Hive的架构组件

  • 客户端用户接口

    所谓的客户端指的是给用户一种方式编写Hive SQL
    目前常见的客户端:CLI(命令行接口 shell)、Web UI、JDBC|ODBC
  • Hive Driver驱动程序

    hive的核心
    完成从接受HQL到编译成为MR程序的过程。
    sql解释 编译 校验 优化 制定计划
  • metadata

    元数据存储。 描述性数据。
    对于hive来说,元数据指的是表和文件之间的映射关系。
  • Hadoop

    HDFS  存储文件
    MapReduce 计算数据
    YARN  程序运行的资源分配
  • Q:Hive是分布式的软件吗?

    Hive不是分布式软件。只需要在一台机器上部署Hive服务即可;
    Hive的分布式处理能力是借于Hadoop完成的。HDFS分布式存储  MapReduce分布式计算。

Hive和Mysql的区别

Metadata、metastore

#Metadata 元数据
对于hive来说,元数据主要指的是表和文件之间的映射关系。
元数据也是数据,存储在哪里呢?Hive当下支持两种地方存储元数据。
    1、存储在Hive内置的RDBSM中,Apache Derby(内存级别轻量级关系型数据库)  
    2、存储在外界第三方的RDBMS中,比如:MySQL。  企业中常用的方式。

#metastore 元数据访问服务
专门用于操作访问metadata的一种服务,对外暴露服务地址给各个不同的客户端使用访问Hive的元数据。
并且某种程度上保证了metadata的安全。

Hive的安装部署模式

  • 如何区别,关键在于两个问题?

    • ==metadata元数据是存储在哪里的?== 内置derby还是外置的Mysql。

    • ==metastore服务是否需要单独配置,单独手动启动?==

  • 具体来说

    • ==内嵌模式==

      1、元数据存储在内置的derby
      2、不需要单独配置metastore 也不需要单独启动metastore服务
      ​
      安装包解压即可使用。
      ​
      适合测试体验。实际生产中没人用。适合单机单人使用。
    • ==本地模式==

      1、元数据使用外置的RDBMS,常见使用最多的是MySQL。
      2、不需要单独配置metastore 也不需要单独启动metastore服务
    • ==远程模式==

      1、元数据使用外置的RDBMS,常见使用最多的是MySQL。
      2、metastore服务单独配置  单独手动启动  全局唯一。
      ​
      这样的话各个客户端只能通过这一个metastore服务访问Hive.
      ​
      企业生产环境中使用的模式,支持多客户端远程并发操作访问Hive.
      也是我们课程中使用的模式。
  • 对比

    metadata存储在哪metastore服务如何
    内嵌模式Derby不需要配置启动
    本地模式MySQL不需要配置启动
    ==远程模式====MySQL====单独配置、单独启动==

安装Hive

#apache-hive-3.1.2-bin.tar.gz
​
上传、解压
tar zxvf apache-hive-3.1.2-bin.tar.gz
  • 0、解决Hive与Hadoop之间guava版本差异

    cd /export/server/apache-hive-3.1.2-bin/
    rm -rf lib/guava-19.0.jar
    cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
    • 1、==hive-env.sh==

      cd /export/server/apache-hive-3.1.2-bin/conf
      mv hive-env.sh.template hive-env.sh
      ​
      vim hive-env.sh
      export HADOOP_HOME=/export/server/hadoop-3.3.0
      export HIVE_CONF_DIR=/export/server/apache-hive-3.1.2-bin/conf
      export HIVE_AUX_JARS_PATH=/export/server/apache-hive-3.1.2-bin/lib
    • 2、==hive-site.xml==

      vim hive-site.xml

      <configuration>
      <!-- 存储元数据mysql相关配置 -->
      <property>
          <name>javax.jdo.option.ConnectionURL</name>
          <value>jdbc:mysql://node1:3306/hive3?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
      </property>
      ​
      <property>
          <name>javax.jdo.option.ConnectionDriverName</name>
          <value>com.mysql.jdbc.Driver</value>
      </property>
      ​
      <property>
          <name>javax.jdo.option.ConnectionUserName</name>
          <value>root</value>
      </property>
      ​
      <property>
          <name>javax.jdo.option.ConnectionPassword</name>
          <value>123456</value>
      </property>
      ​
      <!-- H2S运行绑定host -->
      <property>
          <name>hive.server2.thrift.bind.host</name>
          <value>node1</value>
      </property>
      ​
      <!-- 远程模式部署metastore metastore地址 -->
      <property>
        <name>hive.metastore.uris</name>
          <value>thrift://node1:9083</value>
      </property>
      ​
      <!-- 关闭元数据存储授权  --> 
      <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
          <value>false</value>
      </property>
      </configuration>
      ​
    • 3、上传Mysql jdbc驱动到Hive安装包的Lib目录下

      mysql-connector-java-5.1.32.jar
    • 4、手动执行命令初始化Hive的元数据

      cd /export/server/apache-hive-3.1.2-bin/
      ​
      bin/schematool -initSchema -dbType mysql -verbos
      #初始化成功会在mysql中创建74张表
    • 5、在hdfs创建hive存储目录

      hadoop fs -mkdir /tmp
      hadoop fs -mkdir -p /user/hive/warehouse
      hadoop fs -chmod g+w /tmp
      hadoop fs -chmod g+w /user/hive/warehouse

Hive 服务的启动

metastore服务

  • 前台启动

    #前台启动
    /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore
    ​
    #前台启动开启debug日志
    /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore --hiveconf hive.root.logger=DEBUG,console  
    ​
    #前台启动关闭方式  ctrl+c结束进程
  • 后台挂起启动

    nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &
    ​
    #后台挂起启动 结束进程
    使用jps查看进程 使用kill -9 杀死进程
    ​
    #nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下

Hive的客户端

  • Hive的第一代客户端

    • ==bin/hive==

    • 直接访问metastore服务

    • 配置

      <configuration>
      <property>
              <name>hive.metastore.uris</name>
              <value>thrift://node1:9083</value>
      </property>
      </configuration>
    • 弊端:

      第一代客户端属于shell脚本客户端 性能友好安全方面存在不足 Hive已经不推荐使用
      官方建议使用第二代客户端beeline
  • Hive的第二代客户端

    • bin/beeline

    • 无法访问metastore服务,只能够访问==Hiveserver2服务==。

    • 使用

      # 拷贝node1上 hive安装包到beeline客户端机器上(node3)
      scp -r /export/server/apache-hive-3.1.2-bin/ node3:/export/server/
      ​
      #1、在安装hive的服务器上 首先启动metastore服务 再启动hiveserver2服务
      nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service metastore &
      nohup /export/server/apache-hive-3.1.2-bin/bin/hive --service hiveserver2 &
      ​
      #2、在任意机器(如node3)上使用beeline客户端访问
      [root@node3 ~]# /export/server/apache-hive-3.1.2-bin/bin/beeline                   
      beeline> ! connect jdbc:hive2://node1:10000    #jdbc访问HS2服务
      Connecting to jdbc:hive2://node1:10000
      Enter username for jdbc:hive2://node1:10000: root  #用户名 要求具备HDFS读写权限
      Enter password for jdbc:hive2://node1:10000:       #密码可以没有

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

依次对两数组对应位置的元素进行逻辑判断numpy.logical_and()numpy.logical_or()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 依次对两数组对应位置的元素进行逻辑判断 numpy.logical_and() numpy.logical_or() [太阳]选择题 下列代码中np.logical_or(A, B)输出的结果是&#xff1f; import numpy as np A [True, Fa…

R语言 | 正态分布

目录 一、用直方图检验crabs对象 二、用直方图检验beaver2对象 三、用QQ图检验数据是否服从正态分布 四、shapiro.test()函数 所谓正态分布又称高斯分布&#xff0c;许多统计学的理论都是假设所使用的数据服从正态分布。 一、用直方图检验crabs对象 检验数据是否服从正态分…

Kubernetes❀ 详细教程-介绍

Kubernetes❀ 详细教程-介绍 Kubernetes详细教程-介绍1. Kubernetes介绍1.1 应用部署方式演变1.2 kubernetes简介1.3 kubernetes组件1.4 kubernetes概念 Kubernetes详细教程-介绍 1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个…

c++ 一个简单的请求程序

https://github.com/AHUT-GeekTeam/ESP32CAM_BaiduAI/blob/master/demo.ino HTTP格式 请求行 回车换行请求头 回车换行请求头 回车换行请求头 回车换行……请求头 回车换行 回车换行数据 jichu daima 参考黑马程序员的代码MAIN.C #include "b.h" //#include <p…

威纶通触摸屏复合式多功能按钮的使用方法

威纶通触摸屏复合式多功能按钮的使用方法 如下图所示,打开easy builder pro软件,新建一个测试项目,在元件中找到复合式多功能按钮,点击后放入画面中, 如下图所示,此时会弹出以下窗口,在动作中点击“+”图标,选择自己需要添加的动作, 如下图所示,首先添加一个位状…

C++类与对象—下

本期我们继续学习类与对象&#xff0c;没有看过上和中的小伙伴建议先看前两期内容 (2条消息) C类与对象—上_KLZUQ的博客-CSDN博客 (2条消息) C类与对象—中_KLZUQ的博客-CSDN博客 目录 1.再谈构造函数 1.1构造函数体赋值 1.2初始化列表 1.3 explicit关键字 2. static成员…

学成在线笔记+踩坑(12)——用户认证

导航&#xff1a; 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题 目录 1 需求分析 2 【认证模块】连接用户中心数据库 2.1 连接数据库认证 2.1.1 分析 2.1.2 实现&#xff0c;实现UserDetailsService接口 …

Golang每日一练(leetDay0064) 轮转数组、颠倒二进制位

目录 189. 轮转数组 Rotate Array &#x1f31f;&#x1f31f; 190. 颠倒二进制位 Reverse Bits &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 189. 轮转数组 Rotate Ar…

小曾同学【五周年创作纪念日】——努力向前冲的菜鸟

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c; 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;不想当开发的测试&#xff0c;不是一个好…

什么是UA?常见蜘蛛UA?怎么查询UA?

什么是UA? UA简介查看自己的UA修改它的常见用处搜索引擎蜘蛛UA大全常见蜘蛛UA标识 UA简介 UA其实是User Agent的简称。 所谓的User Agent其实就是浏览器在跟服务器通信的时候&#xff0c;一段百十来个字符的落款信息罢了。浏览器发送的每一个HTTP请求数据的头部都加了这个信息…

【C++】红黑树的插入分析及验证

文章目录 1. 红黑树概念2. 红黑树性质3. 结构定义关于默认节点为红/黑色的讨论 4. insert情况1—— uncle节点存在且为红色(g p c左斜形成一条直线)情况2——uncle节点不存在/存在且为黑色(g p c 左斜形成直线 右单旋)uncle节点不存在uncle节点存在并且为黑色 情况3——uncle节…

第7章链接:编译器驱动程序

示例程序由两个源文件组成&#xff0c;main.c 和 swap.c。 main函数初始化一个两元素的整数数组&#xff0c;然后调用swap函数来交换这一对数。 main.c void swap();int buf[2] {1, 2};int main() {swap();return 0; }swap.c extern int buf[];int *bufp0 &buf[0]; i…

【Java】Java中线程安全有哪些实现思路?

文章目录 1、使用 synchronized 关键字2、使用 ReentrantLock 类3、使用 ConcurrentHashMap 类4、使用 Atomic 类5、使用 ThreadLocal 类总结 在 Java 多线程编程中&#xff0c;线程安全是一个非常重要的概念。 线程安全通常指程序在多线程并发执行时&#xff0c;仍然能够保持正…

迄今为止,最强ChatGPT写论文技巧,总共6步,手把手告诉你

目录 第一步&#xff1a;现象确认 第三步&#xff1a;定位优质学术资源 第四步&#xff1a;对比分析 第五步&#xff1a;深挖启示 & 第六步&#xff1a;写论文 代写论文&#xff0c;不知道有多少朋友听说过&#xff0c;这是一门严格来说有点小众&#xff0c;但盈利空间…

常见问题解答:如何有效使用 Facebook 商务管理平台(BM)?

Facebook 商务管理平台&#xff08;BM&#xff09;是一个功能强大的工具&#xff0c;可帮助广告主在 Facebook 平台上管理和优化广告投放。然而&#xff0c;对于初次接触 BM 的用户来说&#xff0c;可能会遇到一些问题和困惑。本文将回答一些常见问题&#xff0c;帮助您更有效地…

如何使用分布式存储系统促进 AI 模型训练

在处理小型数据集和简单算法时&#xff0c;传统的机器学习模型可以存储在独立机器或本地硬盘驱动器上。然而&#xff0c;随着深度学习的发展&#xff0c;团队在处理更大的数据集和更复杂的算法时越来越多地遇到存储瓶颈。 这凸显了分布式存储在人工智能&#xff08;AI&#xf…

半监督学习笔记

聚类假设 假设输入数据点形成簇&#xff0c;每个簇对应于一个输出类&#xff0c;那么如果点在同一个簇中&#xff0c;则它们可以认为属于同一类。聚类假设也可以被视为低密度分离假设&#xff0c;即&#xff1a;给定的决策边界位于低密度地区。两个假设之间的关系很容易看出。一…

C++ 智能指针的原理、分类、使用

1. 智能指针介绍 为解决裸指针可能导致的内存泄漏问题。如&#xff1a; a&#xff09;忘记释放内存&#xff1b; b&#xff09;程序提前退出导致资源释放代码未执行到。 就出现了智能指针&#xff0c;能够做到资源的自动释放。 2. 智能指针的原理和简单实现 2.1 智能指针的原…

讯飞星火 VS 文心一言:谁是中文大语言模型的TOP1?

在百度发布文心一言一个多月后&#xff0c;科大讯飞也发布了自己的大模型“讯飞星火大模型”。本篇博客就测评一下这两个在中文圈最受好评的大语言模型&#xff0c;顺便辅以ChatGPT为参考。大家一起来看看到底谁是中文大语言模型的TOP1&#xff1f; 目录 体验网址 1、旅游攻…

Class类文件的结构

1 class文件介绍 Class文件是一组以8个字节为基础单位的二进制流&#xff1b; 各个数据项目严格按照顺序紧凑地排列在文件之中&#xff0c;中间没有添加任何分隔符; 采用一种类似C语言结构体的伪结构来存储数据&#xff0c;只要两种数据类型&#xff1a;“无符号数”和“表”…