【大数据】Apache Hive数仓(学习笔记)

一、数据仓库基础概念

1、数仓概述

数据仓库(数仓、DW):一个用于存储、分析、报告的数据系统。

OLAP(联机分析处理)系统:面向分析、支持分析的系统。

数据仓库的目的:构建面向分析的集成化数据环境,分析结果为企业提供决策支持。

  • 数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统
  • 同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用

2、数仓特征

面向主题:主题是一个抽象的概念,是较高层次上数据综合、归类并进行分析利用的抽象。

集成性:主题相关的数据通常会分布在多个操作型系统中,彼此分散、独立、异构。需要集成到数仓主题下。(字段重复、字长不一致等)

非易失性(非易变性):数据仓库是分析数据的平台,而不是创造数据的平台。数据仓库中一般有大量的查询操作,但修改和删除操作很少。

时变性:数据仓库的数据需要随着时间更新,以适应决策的需要。

二、Apache Hive 概念

1、Apache Hive 概述

Apache Hive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语言(HQL),用于访问和分析存储在Hadoop文件中的大型数据集。

Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop群集执行。

2、Hive和Hadoop关系

Hive利用HDFS存储数据,利用MapReduce查询分析数据。

Hive的优势在于用户专注于编写HQL,Hive帮您转换成为MapReduce程序完成对数据的分析。

3、Apache Hive 架构、组件

Hive架构图

  • 用户接口:包括 CLI、JDBC/ODBC、WebGUI。
    • CLI(command line interface):shell命令行。
    • Hive中的Thrift服务器:允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。
    • WebGUI:通过浏览器访问Hive。
  • 元数据存储:存储在关系数据库(如 mysql/derby)中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
  • Driver驱动程序(语法解析器、计划编译器、优化器、执行器):完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有执行引擎调用执行。
  • 执行引擎:Hive通过执行引擎(MapReduce、Tez、Spark)处理数据。

三、Apache Hive安装部署

1、Apache Hive元数据

元数据:描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。

Hive Metadata:Hive的元数据。用Hive创建的database、table、表的位置、类型、属性,字段顺序类型等元信息。元数据存储在关系型数据库中。

Hive Metastore:元数据服务。用于管理metadata元数据。

metastore配置方式:内嵌模式、本地模式、远程模式。

内嵌模式本地模式远程模式
Metastore单独配置、启动
Metadata存储介质DerbyMysqlMysql

metastore远程模式

2、Apache Hive部署实战

1)Hadoop与Hive整合

因为Hive需要把数据存储在HDFS上,并且通过MapReduce作为执行引擎处理数据。需要在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行。

修改Hadoop中core-site.xml,并且Hadoop集群同步配置文件,重启生效

<!-- 整合hive -->
<property><name>hadoop.proxyuser.root.hosts</name><value>*</value>
</property>
<property><name>hadoop.proxyuser.root.groups</name><value>*</value>
</property>

2)上传安装包

node1安装即可

tar zxvf apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin/ hive# 解决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/

3)修改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

4)新增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>hadoop</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>

5)添加驱动、初始化

上传MySQL JDBC驱动到Hive安装包lib路径下 mysql-connector-java-5.1.32.jar

初始化Hive的元数据

cd /export/server/apache-hive-3.1.2-bin/
bin/schematool -initSchema -dbType mysql -verbos
# 初始化成功会在mysql中创建74张表

6)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结束进程

后台启动:输出日志信息在/root目录下nohup.out

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

3、Apache Hive客户端使用

hive(第一代):$HIVE_HOME/bin/hive,是一个 shellUtil。可用于以交互或批处理模式运行Hive查询,用于Hive相关服务的启动,比如metastore服务。

beeline(第二代):$HIVE_HOME/bin/beeline,是一个JDBC客户端,是官方强烈推荐使用的Hive命令行工具,性能加强安全性提高。

启动HiveServer2之前必须先首先启动metastore。

hiveserver2服务启动之后需要稍等一会才可以对外提供服务。

#先启动metastore服务 然后启动hiveserver2服务
nohup /export/servers/hive/bin/hive --service metastore &
nohup /export/servers/hive/bin/hive --service hiveserver2 &

beeline连接配置说明

Hive可视化客户端:DataGrip(jetbrains大爹出的)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9、Docker 安装 Redis

1、下载镜像 docker pull redis:3.2.10 2、本机创建redis目录并修改配置文件 1&#xff09;创建目录 mkdir /usr/local/redis 2&#xff09;进入redis目录 cd /usr/local/redis 3&#xff09;创建data目录 mkdir data 4&#xff09;创建redis.conf文件 vi redis.conf 5&a…

网站的搭建与应用|企业APP软件定制开发|小程序

网站的搭建与应用|企业APP软件定制开发|小程序 网站是一种数字化媒体&#xff0c;它可以将我们的信息传递给全球的用户&#xff0c;让更多的人了解我们、了解我们的产品和服务。那么&#xff0c;如何搭建一个网站呢&#xff1f;下面&#xff0c;我将为大家介绍一下网站的建设步…

NIO基础-ByteBuffer,Channel

文章目录 1. 三大组件1.1 Channel1.2 Buffer1.2 Selector 2.ByteBuffer2.1 ByteBuffer 正确使用姿势2.2 ByteBuffer 结构2.3 ByteBuffer 常见方法分配空间向 buffer 写入数据从 buffer 读取数据mark 和 reset字符串与 ByteBuffer 互转分散度集中写byteBuffer黏包半包 3. 文件编…

Vulnhub系列靶机-Raven2

文章目录 Raven2 渗透测试1. 信息收集1.1 主机探测1.2 端口扫描1.3 目录爆破 2. 漏洞探测3. 漏洞利用3.1 msfconsole3.2 交互式shell 4. 权限提升 Raven2 渗透测试 1. 信息收集 1.1 主机探测 arp-scan -l1.2 端口扫描 nmap -p- -A 192.168.188.213通过nmap工具进行端口扫描…

当想为SLB申请公网域名时,缩写是什么意思

SLB的缩写是Server Load Balancer&#xff0c;即服务器负载均衡器。 是一种内网吗? 不&#xff0c;SLB&#xff08;Server Load Balancer&#xff09;是一种位于应用程序和网络之间的设备或服务&#xff0c;用于在多个服务器之间分发流量、负载均衡以及提供高可用性。它通常…

2核4G游戏服务器推荐(阿里云/腾讯云/华为云)

2核4G游戏服务器推荐&#xff0c;首选腾讯云2核4G5M带宽轻量应用服务器218元一年、阿里云2核4G4M带宽轻量应用服务器297元一年&#xff0c;华为云2核2G3M云耀L服务器95元一年&#xff0c;阿腾云来详细说下2核4G游戏服务器推荐配置大全&#xff1a; 目录 2核4G游戏服务器推荐 …

Qt应用开发(基础篇)——树结构视图 QTreeView

一、前言 QTreeView类继承于QAbstractItemView类&#xff0c;提供了一个树结构视图的模型。 视图基类 QAbstractItemView QTreeView默认为Model/View实现&#xff0c;下面是一个使用QFileSystemModel和QTreeView的结合&#xff0c;显示系统文件结构的实例。 QFileSystemModel …

pycharm中快速对比两个.py文件

在学习一个算法的时候&#xff0c;就想着自己再敲一遍代码&#xff0c;结果最后出现了一个莫名其妙的错误&#xff0c;想跟源文件对比一下到底是在哪除了错&#xff0c;之前我都是大致定位一个一个对比&#xff0c;想起来matlab可以快速查找出两个脚本文件(.m文件)的区别&#…

大语言模型迎来重大突破!找到解释神经网络行为方法

前不久&#xff0c;获得亚马逊40亿美元投资的ChatGPT主要竞争对手Anthropic在官网公布了一篇名为《朝向单义性&#xff1a;通过词典学习分解语言模型》的论文&#xff0c;公布了解释经网络行为的方法。 由于神经网络是基于海量数据训练而成&#xff0c;其开发的AI模型可以生成…

进化算法------代码示例

前言 遗传算法就是在一个解空间上&#xff0c;随机的给定一组解&#xff0c;这组解称为父亲种群&#xff0c;通过这组解的交叉&#xff0c;变异&#xff0c;构建出新的解&#xff0c;称为下一代种群&#xff0c;然后在目前已有的所有解中抽取表现好的解组成新的父亲种群&#…

2.MySQL表的操作

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 表的操作 (1)表的创建 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 存储引擎的不同会导致创建表的文件不同。 换个引擎。 t…

“零代码”能源管理平台:智能管理能源数据

随着能源的快速增长&#xff0c;有效管理和监控能源数据变得越来越重要。为了帮助企业更好的管理能源以及降低能源成本&#xff0c;越来越多的能源管理平台出现在市面上。 “零代码”形式的能源管理平台&#xff0c;采用IT与OT深度融合为理念&#xff0c;可进行可视化、拖拽、…

css 如何让元素内部文本和外部文本 一块显示省略号

实际上还是有这样的需求的 <div class"container"><span>啊啊啊啊啊啊啊啊</span>你好啊撒撒啊撒撒撒撒啊撒撒撒撒撒说</div>还是有这样的需求的哦。 div.container {width: 200px;white-space: nowrap;text-overflow: ellipsis;overflow:…

LiveMedia视频中间件如何与第三方系统实现事件录像关联

一、平台简介 LiveMedia视频中间件是支持部署到本地服务器或者云服务器的纯软件服务&#xff0c;也提供服务器、GPU一体机全包服务&#xff0c;提供视频设备管理、无插件、跨平台的实时视频、历史回放、语音对讲、设备控制等基础功能&#xff0c;支持视频协议有海康、大华私有协…

ARMv5架构对齐访问异常问题

strh非对齐访问 在ARMv5架构中&#xff0c;对于strh指令&#xff08;Store Halfword&#xff09;&#xff0c;通常是要求对地址进行对齐访问的。ARMv5架构对于半字&#xff08;Halfword&#xff09;的存储操作有对齐要求&#xff0c;即地址必须是2的倍数。 如果尝试使用strh指…

具有标记和笔记功能的文件管理器TagSpaces

什么是 TagSpaces &#xff1f; TagSpaces 是一款免费、无供应商锁定的开源应用程序&#xff0c;用于借助标签组织、注释和管理本地文件。它具有高级笔记功能和待办事项应用程序的一些功能。该应用程序适用于 Windows、Linux、Mac OS 和 Android。并已经为 Firefox、Edge 和 Ch…

Qt Core篇 后端上位机界面开发

Qt Core篇 后端上位机界面开发 Qt Core 我选择了Qt,依旧度日如年&#xff0c;简单发布一篇&#xff0c;代表我还活着 Qt Core Qt Core是Qt框架的核心模块之一&#xff0c;它提供了一套跨平台的C类库&#xff0c;用于处理事件循环、线程、文件和目录操作、数据类型、日期和时间…

FPGA设计时序约束五、设置时钟不分析路径

一、背景 在进行时序分析时&#xff0c;工具默认对所有的时序路径进行分析&#xff0c;在实际的设计中&#xff0c;存在一些路径不属于逻辑功能的&#xff0c;或者不需要进行时序分析的路径&#xff0c;使用set_false_path对该路径进行约束&#xff0c;时序分析时工具将会直接忽…

数据库安全-RedisHadoopMysql未授权访问RCE

目录 数据库安全-&Redis&Hadoop&Mysql&未授权访问&RCE定义漏洞复现Mysql-CVE-2012-2122 漏洞Hadoop-配置不当未授权三重奏&RCE 漏洞 Redis-未授权访问-Webshell&任务&密匙&RCE 等漏洞定义&#xff1a;漏洞成因漏洞危害漏洞复现Redis-未授权…

ReLU激活函数

LeakyReLU激活函数的具体用法请查看此篇博客&#xff1a;LeakyReLU激活函数 ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数是深度学习中最常用的激活函数之一&#xff0c;它的数学表达式如下&#xff1a; 在这里&#xff0c;(x) 是输入&#xff0c;(f(x)) 是输…