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

news2025/1/24 18:02:11

一、数据仓库基础概念

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;u
            seSSL=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.coloradmin.cn/o/1094509.html

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

相关文章

【Eclipse】Plug-in Development 插件的安装

先按路线找到需要的页面&#xff1a;eclipse–Window–Preferences–Java–Editor–Content Assist 在Work with框中输入&#xff1a;http://download.eclipse.org/releases/2019-06 PS&#xff1a;后面的2019-06是eclipse发行的时间 选择&#xff1a;General Purpose Tools 下…

TwinCAT3添加伺服控制器的方法

文章目录 一. 主要参考二. 使用嵌入式控制器CX5140添加三菱MR-J4-TM伺服控制器的方法具体步骤 一. 主要参考 《TwinCAT NC 使用指南》第四章 TwinCAT NC 控制总线伺服 二. 使用嵌入式控制器CX5140添加三菱MR-J4-TM伺服控制器的方法 嵌入式控制器: 倍福CX5140伺服控制器&…

【Eclipse】解决插件下载速度太慢

解决方案&#xff1a;修改镜像 下面列出几个国内的镜像网站&#xff1a; 中国科学技术大学(5.6MB/s) http://mirrors.ustc.edu.cn/eclipse/ 北京理工大学&#xff08;600KB/s&#xff09; http://mirror.bit.edu.cn/eclipse/ 大连东软信息学院(400KB/s) http://mirrors.neuso…

入门小白拥有服务器的建议

学习网络知识 当我们拥有了一台服务器以后,需要提前准备学习一些网络、服务器、互联网方便的知识, 以备在后续学习工作中使用。 建议的网络知识学习清单: 1. 网络基础知识:包括网络拓扑结构、协议、IP地址、子网掩码、网关等基础概念。 2. 网络安全:包括网络攻击类型、防…

基于黑猩猩优化的BP神经网络(分类应用) - 附代码

基于黑猩猩优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于黑猩猩优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.黑猩猩优化BP神经网络3.1 BP神经网络参数设置3.2 黑猩猩算法应用 4.测试结果&#x…

英语——语法——从句——定语从句——笔记

一、从句的定义&#xff08;Clause&#xff09; 英语的语法中&#xff0c;有主句和从句之分。主句呢&#xff1f;当然是&#xff0c;我们要表达主要意思的句子&#xff0c;要表达的所有句子都可简化为某某是/做什么。 而从句的概念&#xff0c;指复合句中不能独立成句&#xf…

PyTorch入门教学——简介与环境配置

一、简介 PyTorch是一个开源的Python机器学习库&#xff0c;其前身是2002年诞生于纽约大学的Torch。它是美国Facebook公司使用python语言开发的一个深度学习的框架。特点&#xff1a; 简洁 PyTorch的设计追求最少的封装&#xff0c;尽量避免重复造轮子。 简洁的设计带来的另外…

SpringMVC之国际化上传下载

spring项目中的国际化 1&#xff09;提供中英两种资源文件 i18n_en_US.properties i18n_zh_CN.properties 2&#xff09;配置国际化资源文件&#xff08;在spring配置文件中添加&#xff0c;例如spring-mvc.xml&#xff09; <bean id"messageSource" class&quo…

CSS小技巧之单标签loader

本文翻译自 How to create a CSS-only loader with one element&#xff0c;作者&#xff1a; Temani Afif&#xff0c; 略有删改。 loader组件是网站的重要组成部分。它可以用在许多地方&#xff0c;我们需要显示的内容正在加载中。这样的组件需要尽可能简单&#xff0c;在这篇…

Go语言入门心法(四): 异常体系

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 一: go异常体系认知 后期补充完整,忙着去耍帅,泡妹子去.............

C++之继承<1>【详解】

C之继承【详解】 1. 继承的概念2. 继承定义的格式2.1 继承方式和访问限定符2.2 继承了基类成员后随着访问方式变化的变化 3. 基类和派生类对象的复制转换5. 隐藏 1. 继承的概念 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在…

日志分析题目

关卡描述&#xff1a;1、黑客在内网抓了两台肉鸡对服务器进行攻击&#xff0c;请给出两台肉鸡的IP&#xff08;使用空格分隔&#xff09; 直接查看日志 rh 然后ls&#xff0c;查看 这里我没有看到明显web容器的字样&#xff0c;例如apache&#xff0c;iis的等等。 就看容器…

《华为战略管理法:DSTE实战体系》作者谢宁老师受邀为某电力上市集团提供两天的《成功的产品管理及产品经理》内训。

​​ 近日&#xff0c;《华为战略管理法&#xff1a;DSTE实战体系》作者谢宁老师受邀为某电力上市集团提供两天的《成功的产品管理及产品经理》内训。 谢宁老师作为华为培训管理部特聘资深讲师和顾问&#xff0c;也是畅销书《华为战略管理法&#xff1a;DSTE实战体系》、《智慧…

贪心算法(一)

&#x1f58a;作者 : D. Star. &#x1f4d8;专栏 : 算法小能手 &#x1f606;今日提问 : 国庆去哪里打卡了呢&#xff1f; &#x1f606;今日分享 : 武功山风景打卡–双云海 文章目录 &#x1f33b;贪心算法的思想&#x1f33b;贪心算法的基本思路&#x1f4d6;给大家讲一个小…

高可用eureka服务注册与发现代码例子

代码 Eureka server 1 pom.xml <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.clou…

Python开源项目周排行 2023年第36周

#2023年第36周2023年10月14日1书生・浦语灵笔图文混合创作大模型。基于书生・浦语大语言模型研发的视觉 - 语言大模型&#xff0c;提供出色的图文理解和创作能力&#xff0c;具有多项优势&#xff1a; 图文交错创作: 浦语・灵笔可以为用户打造图文并貌的专属文章。生成的文章文…

Go语言入门心法(五): 函数

一: go语言函数认知 Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 忙着去耍帅,后期补上..........

从不同的正态分布中抽取随机数randn()函数

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 从不同的正态分布中抽取随机数 randn()函数 [太阳]选择题 下列选项对代码最后运行结果描述错误的是&#xff1f; import numpy as np print("【执行】np.random.randn()") print(np.…

《UnityShader入门精要》学习5

Unity中的基础光照 从宏观上来说&#xff0c;渲染包含了两大部分&#xff1a;决定一个像素的可见性&#xff0c;决定这个像素上的光照计算 我们是如何看到这个世界的 通常来讲&#xff0c;我们要模拟真实的光照环境来生成一张图像&#xff0c;需要考虑3种物理现象。 首先&a…

13年测试老鸟总结,真实性能测试如何做?性能测试完整流程+细节...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 性能测试什么时候…