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

2024-08-28 05:12

本文主要是介绍HIVE 数据仓库工具之第一部分(讲解部署),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 的使用进行详细说明

这篇关于HIVE 数据仓库工具之第一部分(讲解部署)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1113826

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

超强的截图工具:PixPin

你是否还在为寻找一款功能强大、操作简便的截图工具而烦恼?市面上那么多工具,常常让人无从选择。今天,想给大家安利一款神器——PixPin,一款真正解放双手的截图工具。 想象一下,你只需要按下快捷键就能轻松完成多种截图任务,还能快速编辑、标注甚至保存多种格式的图片。这款工具能满足这些需求吗? PixPin不仅支持全屏、窗口、区域截图等基础功能,它还可以进行延时截图,让你捕捉到每个关键画面。不仅如此

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr