HIVE 数据仓库工具之第一部分(讲解部署)

news2024/12/22 14:22:18

HIVE 数据仓库工具

  • 一、Hive 概述
    • 1.1 Hive 是什么
    • 1.2 Hive 产生的背景
    • 1.3 Hive 优缺点
      • 1.3.1 Hive的优点
      • 1.3.2 Hive 的缺点
    • 1.4 Hive在Hadoop生态系统中的位置
    • 1.5 Hive 和 Hadoop的关心
  • 二、Hive 原理及架构
    • 2.1 Hive 的设计原理
    • 2.2 Hive 特点
    • 2.3 Hive的体现结构
    • 2.4 Hive的运行机制
    • 2.5 Hive 的转换过程
    • 2.6 Hive 的数据类型
      • 2.6.1 Hive 的基本数据类型
      • 2.6.2 Hive 的复杂数据类型
    • 2.7 Hive 的数据存储
  • 三、Hive 安装部署
    • 3.1 安装 MySQL
    • 3.2 安装 Hive
      • 3.2.1 下载解压
      • 3.2.2 修改 Hive 配置文件
      • 3.2.3 配置 Hive 环境变量
      • 3.2.4 添加 MySQL 驱动
      • 3.2.5 修改 Hive 相关数据目录
      • 3.2.6 启动 Hive 服务

一、Hive 概述

1.1 Hive 是什么

  • Hive是由faceBook开源,最初用于解决海量结构化的日志数据统计问题,它可以作为ETL
    工具。
  • Hive最初是构建在Hadoop之上的数据仓库
    • 数据计算是MapReduce
    • 数据存储是HDFS
  • Hive 定义了一种类SQL的查询语言——HQL
  • Hive 适合离线数据处理
  • Hive 是将HQL转换为MR的语言翻译器

1.2 Hive 产生的背景

Hive 的诞生源于 Facebook 的日志分析需求,面对海量的结构化数据, Hive 能够以较低的成本完成以往需要大规模数据库才能完成的任务,并且学习门槛相对较低,应用开发灵活且高效。
后来Facebook将 Hive 开源给了 Apache,成为 Apache的一个顶级项目,至此Hive在大数据应用方面得到了快速的发展和普及。

1.3 Hive 优缺点

1.3.1 Hive的优点

  • Hive适合数据的批处理,解决了传统关系型数据库在海量数据处理上的瓶颈。
  • Hive构建在Hadoop之上,充分利用了集群的存储资源、计算资源。
  • Hive学习使用成本低,支持标准的SQL语法,这样就免去了编写MapReduce程序的过程减少了开发成本。
  • 具有良好的扩展性,且能够实现与其他组件的集成开发

1.3.2 Hive 的缺点

  • HQL的表达能力依然有限,不支持迭代计算,有些复杂的运算用 HQL不易表达,还需要单独编写MapReduce来实现。
  • Hive的运行效率低、延迟高,这是因为Hive底层计算引擎默认为MapReduce,而MapReduce是离线计算框架。
  • Hive的调优比较困难,由于HQL语句最终会转换为MapReduce任务,所以Hive的调优还需要考虑MapReduce层面的优化。

1.4 Hive在Hadoop生态系统中的位置

在这里插入图片描述

1.5 Hive 和 Hadoop的关心

Hive利用HDFS来存储数据,利用MapReduce来查询分析数据,那么Hive与Hadoop之间的关系总结如下。

  • Hive需要构建在Hadoop集群之上。
  • Hive中的所有数据都存储在Hadoop分布式文件系统中。
  • 对HQL查询语句的解释、优化、生成查询计划等过程均是由 Hive 完成的,而查询计划被转化为 MapReduce 任务之后需要运行在 Hadoop 集群之上。

二、Hive 原理及架构

2.1 Hive 的设计原理

Hive 是一种构建在Hadoop之上的数据仓库工具,可以使用HQL 语句对数据进行分析和查询而Hive的底层数据都存储在HDFS中。Hive在加载数据过程中不会对数据进行任何的修改,只是将数据移动到指定的HDFS目录下,因此,Hive不支持对数据的修改。

2.2 Hive 特点

  • 支持索引,加快数据查询。
  • 不同的存储类型,例如,纯文本文件、HBase 中的文件。
  • 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。
  • 可以直接使用存储在Hadoop 文件系统中的数据。
  • 内置大量用户自定义函数(user define function,简称UDF)来对时间、字符串进行操作,支持用户扩展UDF 函数来完成内置函数无法实现的操作。
  • HQL语句最终会被转换为MapReduce任务运行在Hadoop集群之上。

2.3 Hive的体现结构

在这里插入图片描述

2.4 Hive的运行机制

在这里插入图片描述

2.5 Hive 的转换过程

在这里插入图片描述

2.6 Hive 的数据类型

2.6.1 Hive 的基本数据类型

在这里插入图片描述

2.6.2 Hive 的复杂数据类型

在这里插入图片描述

2.7 Hive 的数据存储

  • 表(table)
    Hive的表在逻辑上由存储的数据和描述表中数据形式的相关元数据组成。数据一般存放在HDFS中,但它也可以放在其他任何Hadoop文件系统中,包括本地文件系统或S3。Hive把元数据存放在关系型数据库中,而不是放在HDFS中。在Hive中创建表时,默认情况下Hive负责管理数据。这意味着Hive把数据移入它的“仓库目录”另外一种选择是创建一个外部表(external table),这会让Hive到仓库目录以外的位置访问数据。

  • 分区(Partition)
    Hive把表组织成分区。这是一种根据分区列(如日期)的值对表进行粗略划分的机制。使用分区可以加快数据分片的查询速度。以分区的常用情况为例,如日志文件的每条记录包含一个时间戳。如果我们根据日期来对它进行分区,那么同一天的记录就会被存放在同一个分区中。这样做的优点是对于限制到某个或者某些特定日期的查询,它们的处理可以变得非常高效。因为它们只需要扫描查询范围内分区中的文件。注意,使用分区并不会影响大范围查询的执行,我们仍然可以查询跨多个分区的整个数据集。

  • 桶(Bucket)
    表或者分区可以进一步分为桶。它会为数据提供额外的结构以获得更高效的查询处理。例如,通过用户ID来划分桶,我们可以在所有用户集合的随机样本上快速计算基于用户的查询

三、Hive 安装部署

3.1 安装 MySQL

  • 在线安装 MySQL
[root@hadoop1 ~]# yum install mysql-server

如果安装提示:no package mysql-server available,可以先下载mysql的repo源,再安装repo源,然后再执行上面的脚本

[root@hadoop1 ~]# wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
[root@hadoop1 ~]# rpm -ivh mysql-community-release-el7-5.noarch.rpm

  • 启动 MySQL 服务,查看状态
[root@hadoop1 ~]# service mysqld start
[root@hadoop1 ~]# service mysqld status

在这里插入图片描述

  • 设置用户密码
    • 登录 MySQL (无密码,直接按回车)
    [root@hadoop1 ~]# mysql -uroot -p
    
    • 设置 root 用户密码
    mysql> set password for root@localhost=password('root');	
    
    • 登录 MySQL (需要输入秘密)
    [root@hadoop1 ~]# mysql -uroot -p
    
    
  • 创建 Hive 账号
    • 创建 hive 账号
    mysql> create user 'hive' identified by 'hive';
    
    • 给 hive 用户授权
    mysql> grant all on *.* to 'hive'@'hadoop1' identified by 'hive';
    
    • 使授权生效
    mysql> flush privileges;
    
    • Hive 用户登录 MySQL
    [root@hadoop1 ~]# mysql -h hadoop1 -u hive -p
    

3.2 安装 Hive

3.2.1 下载解压

下载地址:https://archive.apache.org/dist/hive/hive-2.3.9/
在这里插入图片描述
下载 Hive 安装包apache-hive-2.3.9-bin.tar.gz,然后上传至hadoop1节点的/usr/local/目录下。

然后开始解压并创建软连接,命令如下:

[root@hadoop1 local]# tar -zxvf apache-hive-2.3.9-bin.tar.gz 
[root@hadoop1 local]# ln -s apache-hive-2.3.9-bin hive

在这里插入图片描述

3.2.2 修改 Hive 配置文件

进入hive的conf目录下发现hive-site.xml文件不存在,需要从默认配置文件复制一份,具体操作如下所示。

[root@hadoop1 hive]# cp /usr/local/hive/conf/hive-default.xml.template /usr/local/hive/conf/hive-site.xml

然后在hive-site.xml配置文件中,修改元数据库相关配置,修改内容如下所示。

[root@hadoop1 hive]# vim /usr/local/hive/conf/hive-site.xml

配置文件对应位置修改如下(此处本人使用mysql数据库,默认是derby数据库):

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  </property>
#修改连接MySQL的URL
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://hadoop1:3306/hive?creatDatabaseIfNotExist=true</value>
  </property>
#修改连接数据库的用户名和密码
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
  </property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
  </property>

3.2.3 配置 Hive 环境变量

打开 /etc/profile 文件,配置Hive环境变量,具体操作如下所示。

[root@hadoop1 hive]# vim /etc/profile

添加如下内容

# 添加 Hive 环境变量
HIVE_HOME=/usr/local/hive
PATH=$HIVE_HOME/bin:$PATH
export HIVE_HOME PATH

在这里插入图片描述
保存并退出,并用命令source /etc/profile 使配置文件生效。

3.2.4 添加 MySQL 驱动

下载 MySQL 驱动地址:https://dev.mysql.com/downloads/
在这里插入图片描述
然后上传至Hive的lib目录下即可。
在这里插入图片描述

3.2.5 修改 Hive 相关数据目录

修改hive-site.xml配置文件,更改相关数据目录,具体配置如下所示。

[root@hadoop1 hive]# vim /usr/local/hive/conf/hive-site.xml

配置文件对应位置修改如下:

<property>
    <name>hive.querylog.location</name>
    <value>/usr/local/hive/iotmp</value>
</property>
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/usr/local/hive/iotmp</value>
</property>
<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/usr/local/hive/iotmp</value>
</property>

3.2.6 启动 Hive 服务

第一次启动Hive服务需要先进行初始化,具体操作如下所示。(初始化之前需要启动 Hadoop 集群)

[root@hadoop1 hive]# /usr/local/hive/bin/schematool -dbType mysql -initSchma

在这里插入图片描述
启动 hive
在这里插入图片描述

备注:第二部分进行 Hive 的使用进行详细说明

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

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

相关文章

数据集的使用

一、 Transform与dataset数据集的使用 import torchvisionfrom torch.utils.tensorboard import SummaryWriterdataset_transform torchvision.transforms.Compose([torchvision.transforms.ToTensor()])train_set torchvision.datasets.CIFAR10(root "./dataset"…

《中文Python穿云箭量化平台二次开发技术03》利用Tkinter高级模块设计自己策略代码编辑器及策略运行窗口

《中文Python穿云箭量化平台》是纯Python开发的量化平台&#xff0c;因此其中很多Python模块&#xff0c;我们可以自己设计新的量化工具&#xff0c;例如自己新的行情软件、新的量化平台、以及各种量化研究工具。 穿云箭自带指标公式源码运行模块&#xff0c;可以为其他量化平台…

基于云原生的一体化监控系统Day1

7.1 监控体系部署管理 7.2k8s集群层面监控 准备&#xff1a;部署k8s集群 master&#xff1a;192.168.192.128 node01&#xff1a;192.168.192.129 node02&#xff1a;192.168.192.130 1.prometheus架构&#xff1a; prometheus工作原理&#xff1a; 1.数据采集&#xff…

AI视频平台精选:国内外对比与推荐

原文&#xff1a;AI视频平台精选&#xff1a;国内外对比与推荐 国内外有多个平台可以生成AI视频&#xff0c;这些平台各有其独特的优点和缺点。以下是对一些主要平台的详细介绍&#xff0c;包括它们的优缺点&#xff0c;以及针对个人和自媒体用户的推荐。 国内平台 1. 快手可…

为Windows Terminal 配置zsh + Oh-My-Zsh

参考&#xff1a; 为Windows Terminal 配置zsh Oh-My-Zsh 【核心】https://juejin.cn/post/7229507721795993661 https://blog.cloudorz.com/post/configure-zsh-for-windows-terminal/ https://zhuanlan.zhihu.com/p/455925403 本文以 Git Bash 终端为基础&#xff0c;来…

android openGL ES详解——剔除

一、正面剔除 在绘制3D场景的时候,我们需要决定哪些部分是对观察者 可见的,或者哪些部分是对观察者不可⻅的.对于不可见的部分,应该及早丢弃.例如在⼀个不透明的墙壁后,就不应该渲染.这种情况叫做”隐藏⾯消除”(Hidden surface elimination). 立方体中的正背面 任何物体都有…

Vue 项目中使用路由鉴权实现网页进度条

概述 在 Web 开发中&#xff0c;用户界面的流畅性和交互性对用户体验至关重要。为了在页面跳转时给用户提供反馈&#xff0c;我们可以利用 NProgress 这样的第三方库来实现一个进度条。本文档将指导您如何在 Vue 项目中结合路由鉴权来实现这一功能。 准备工作 确保您已经安装…

YOLO后处理trick - 减少nms的计算次数、比较次数和空间消耗

目录 前言 1.问题分析 问题1&#xff1a;排序问题 问题2&#xff1a;极大值抑制问题 2.优化比较和计算次数 优化1&#xff1a;跳过reshape直接置信度筛选 优化2&#xff1a;减少用于nms的bbox数 3.举个荔枝 总结 前言 减少YOLO后处理nms的计算和比较次数。 YOLO-det…

一 初识爬虫

一 爬虫和python 二 爬虫的合法性 三 爬虫的介绍 通过程序去访问网站&#xff0c;网站肯定希望用户来访问网站&#xff0c;而不是程序来访问&#xff0c;可以使用一些技术手段。设置障碍。 越过障碍。 四 爬虫示例 需求:用程序模拟浏览器。输入一个网址。从该网址中获取到资源或…

从短视频到AIGC,快手字节重开一局

作者 | 辰纹 来源 | 洞见新研社 从短视频到剪辑工具&#xff0c;从电商到外卖&#xff0c;再到如今的AIGC大模型&#xff0c;快手和字节的竞争从来就没有停止过。 通用大模型方面&#xff0c;快手有快意&#xff0c;字节有豆包&#xff1b;AI图片创作快手有可图&#xff0c;…

docker续3:

一、使用Dockerfile创建应用镜像 在Docker file中定义所需要执⾏的指令&#xff0c;使⽤ docker build创建镜像&#xff0c;过程中会按照dockerfile所定义的内容进⾏打开临时性容器&#xff0c;把docker file中命令全部执⾏完成&#xff0c;就得到了⼀个容器应⽤镜像&#xff…

星河社区升级命令行工具,一站式完成大模型实训

飞桨PFCC社区成员卢畅贡献。卢畅&#xff0c;飞桨 PFCC 成员&#xff0c;飞桨开源之星&#xff0c;飞桨开发者专家&#xff08;PPDE&#xff09;&#xff0c;长期参加飞桨黑客松、护航计划等开源活动&#xff0c;参与过飞桨执行器预分析性能优化、静态图自动并行架构升级等任务…

SpringBoot项目整合智谱AI + SSE推送流式数据到前端展示 + RxJava得浅显理解

项目背景&#xff1a; 项目背景是一个这个AI答题应用平台&#xff0c;我引入AI得作用就是让AI根据我指定得这个题目的标题和描述来生成一些列的题目。&#xff08;主要功能是这个&#xff0c;但是还用了AI给我评分&#xff0c;不过这个功能比较简单&#xff0c;在本文就简单介…

python可视化-条形图

1、加载数据 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt# 导入数据 df pd.read_csv(E:/workspace/dataset/seaborn-data-master/tips.csv) df.head()2、基于seaborn的条形图 # 利用barplot函数快速绘制 sns.barplot(x"total_bill&quo…

Python从0到100(五十三):机器学习-决策树及决策树分类器

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…

中微8S6990 EEPROM踩坑记录

中微8S6990 EEPROM内容丢失解决记录 问题描述: 问题程序如下: void temp_remember(uint16_t temperature,uint16_t address_H,uint16_t address_L) {uint8_t temp,temp1 0;temp temperature>>8;temp1 temperature;FLASH_UnLock();FLASH_Erase_DataArea(address_H);…

虹科方案 | 领航智能交通革新:虹科PEAK智行定位车控系统Demo版亮相

导读&#xff1a; 在智能汽车技术发展浪潮中&#xff0c;车辆控制系统的智能化、网络化已成为行业发展的必然趋势。虹科PEAK智行定位车控系统&#xff0c;集成了尖端科技&#xff0c;能够实现车辆全方位监控与控制的先进系统。从实时GPS定位到CAN/CANFD信号处理&#xff0c;虹科…

漏洞挖掘 | 记一次Spring横向渗透

0x1 前言 这篇文章给师傅们分享下&#xff0c;前段时间的一个渗透测试的一个项目&#xff0c;开始也是先通过各种的手段和手法利用一些工具啊包括空间引擎等站点对该目标公司进行一个渗透测试。前面找的突破口很少&#xff0c;不太好搞&#xff0c;但是后面找到了spring全家桶…

2024.8.27

130124202408271012 DATE #:20240827 ITEM #:DOC WEEK #:TUESDAY DAIL #:捌月廿肆 TAGS < BGM "Dragonflame--Kirara Magic" > < theme oi-contest > < theme oi-data structure Segment > < [空] > < [空] > 渊沉鳞潜&#xff0c…

搜维尔科技:Manus VR高精度手部动作捕捉数据手套为人形机器人、人工智能和人机交互赋能

Manus Quantum数据手套能够提供实时端到端的手部动作数据流与高精度数据集&#xff0c;助力人形机器人实现快速发展。 Quantum量子数据手套采用毫米级精度的磁性指尖跟踪传感器&#xff0c;融入尖端的EMF磁性定位追踪技术&#xff0c;无漂移&#xff0c;能提供高度准确且可靠的…