当前位置: 首页 > news >正文

大数据基础设施搭建 - Hive

文章目录

  • 一、上传压缩包
  • 二、解压压缩包
  • 三、配置环境变量
  • 四、初始化元数据库
    • 4.1 配置MySQL地址
    • 4.2 拷贝MySQL驱动
    • 4.3 初始化元数据库
      • 4.3.1 创建数据库
      • 4.3.2 初始化元数据库
  • 五、启动元数据服务metastore
    • 5.1 修改配置文件
    • 5.2 启动/关闭metastore服务
  • 六、启动hiveserver2服务
    • 6.1 修改配置文件
    • 6.2 启动/关闭hiveserver2服务
  • 七、访问Hive
    • 7.1 通过hive客户端访问
    • 7.2 通过beeline客户端访问(JDBC)
  • 八、修改元数据库字符集(TODO)
    • 8.1 修改hive元数据库中存储注释的字段的字符集为utf-8
      • (1)字段注释
      • (2)表注释
    • 8.2 修改hive-site.xml配置文件
  • 九、整合HDFS(TODO)
  • 十、升级为hive集群(TODO)

一、上传压缩包

https://hive.apache.org/

二、解压压缩包

[hadoop@hadoop102 software]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/

三、配置环境变量

[hadoop@hadoop102 apache-hive-3.1.2-bin]$ sudo vim /etc/profile.d/my_env.sh

新增内容:

#HIVE_HOME
export HIVE_HOME=/opt/module/apache-hive-3.1.2-bin
export PATH=$PATH:$HIVE_HOME/bin

使环境变量生效:

[hadoop@hadoop102 apache-hive-3.1.2-bin]$ source /etc/profile.d/my_env.sh

四、初始化元数据库

hive元数据概述:记录了hive中表的名称、列名、数据类型、分区信息、数据存储路径等。
hive元数据存储:默认是元数据存储于hive内置的derby数据库,是用Java写的。一定要切换到MySQL,内嵌derby局限性太高!当一个hive客户端启动时,就会独占derby元数据库且不与其他客户端共享元数据,所以无法同时开启多个hive客户端进行操作!

4.1 配置MySQL地址

[hadoop@hadoop102 ~]$ vim $HIVE_HOME/conf/hive-site.xml

新增内容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- jdbc连接的URL --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://mall:3306/metastore?useSSL=false</value></property><!-- jdbc连接的Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><!-- jdbc连接的username--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><!-- jdbc连接的password --><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property><!-- Hive默认在HDFS的工作目录;数据库被创建之后默认存储的位置。 eg:/warehouse/xx_dw_dwb.db --><property><name>hive.metastore.warehouse.dir</name><value>/warehouse</value></property><!-- Hive元数据存储的验证 --><property><name>hive.metastore.schema.verification</name><value>false</value></property><!-- 元数据存储授权  --><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property>
</configuration>

4.2 拷贝MySQL驱动

[hadoop@hadoop102 ~]$ cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib

4.3 初始化元数据库

4.3.1 创建数据库

[mall@mall ~]$ mysql -uroot -p123456
mysql> create database metastore;
mysql> quit;

4.3.2 初始化元数据库

-verbose参数:显示初始化过程日志
-dbType:指定数据库类型

[hadoop@hadoop102 ~]$ schematool -initSchema -dbType mysql -verbose

五、启动元数据服务metastore

metastore服务用于访问hive元数据。有两种提供服务的方式,分别是嵌入式模式和独立服务模式。
生产中使用独立服务模式,因为在嵌入式模式下,每个Hive CLI都需要直接连接元数据库,当Hive CLI较多时,数据库压力会比较大。

内嵌式模式:
在这里插入图片描述
独立服务模式:
在这里插入图片描述

5.1 修改配置文件

如果配置文件中有此项配置,说明hive在连接元数据的时候需要走第三方服务thrift,必须启动独立服务模式metastore服务!

[hadoop@hadoop102 ~]$ vim $HIVE_HOME/conf/hive-site.xml

新增内容:

    <!-- hive元数据服务metastore的ip和端口号 --><property><name>hive.metastore.uris</name><value>thrift://hadoop102:9083</value></property>

5.2 启动/关闭metastore服务

# 启动
[hadoop@hadoop102 ~]$ nohup hive --service metastore &>/dev/null 2>/dev/null &
# 关闭
[hadoop@hadoop102 ~]$ ps -ef | grep metastore
[hadoop@hadoop102 ~]$ kill 28832

六、启动hiveserver2服务

6.1 修改配置文件

[hadoop@hadoop102 ~]$ vim $HIVE_HOME/conf/hive-site.xml

新增内容:

    <!-- 指定hiveserver2连接的host --><property><name>hive.server2.thrift.bind.host</name><value>hadoop102</value></property><!-- 指定hiveserver2连接的端口号 --><property><name>hive.server2.thrift.port</name><value>10000</value></property>

6.2 启动/关闭hiveserver2服务

# 启动
[hadoop@hadoop102 apache-hive-3.1.2-bin]$ nohup bin/hive --service hiveserver2 &>/dev/null 2>/dev/null &
# 关闭
[hadoop@hadoop102 ~]$ ps -ef | grep hiveserver2
[hadoop@hadoop102 ~]$ kill 29204

七、访问Hive

7.1 通过hive客户端访问

[hadoop@hadoop102 ~]$ cd /opt/module/apache-hive-3.1.2-bin/
[hadoop@hadoop102 apache-hive-3.1.2-bin]$ bin/hive

查看数据库:

hive> show databases;
OK
default
Time taken: 0.756 seconds, Fetched: 1 row(s)

7.2 通过beeline客户端访问(JDBC)

-u参数:hiveserver2所在ip和端口号
-n参数:账号

[hadoop@hadoop102 apache-hive-3.1.2-bin]$ bin/beeline -u jdbc:hive2://hadoop102:10000 -n hadoop

八、修改元数据库字符集(TODO)

Hive元数据库字符集默认是Latin1,如果建表语句中有中文注释,会出现乱码现象。

8.1 修改hive元数据库中存储注释的字段的字符集为utf-8

以utf-8编码向元数据库中写入数据

mysql -uroot -p

(1)字段注释

use metastore;
alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;

(2)表注释

alter table TABLE_PARAMS modify column PARAM_VALUE mediumtext character set utf8;

8.2 修改hive-site.xml配置文件

以utf-8编码从元数据库中读取数据

[hadoop@hadoop102 ~]$ vim $HIVE_HOME/conf/hive-site.xml

修改内容:

    <!-- jdbc连接的URL --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://mall:3306/metastore?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value></property>

九、整合HDFS(TODO)

将HDFS文件包装成hive中的表

十、升级为hive集群(TODO)

相关文章:

大数据基础设施搭建 - Hive

文章目录 一、上传压缩包二、解压压缩包三、配置环境变量四、初始化元数据库4.1 配置MySQL地址4.2 拷贝MySQL驱动4.3 初始化元数据库4.3.1 创建数据库4.3.2 初始化元数据库 五、启动元数据服务metastore5.1 修改配置文件5.2 启动/关闭metastore服务 六、启动hiveserver2服务6.1…...

手把手教你安装 Visual Studio 2022 及其简单使用

软件下载 打开 Visual Studio 官网&#xff0c;个人选择免费的Community社区版就够用了。 软件安装 双击运行安装程序&#xff1a; 点击继续 即可&#xff1a; 等待加载完成&#xff1a; 可以看到 Visual Studio 2022 对应不同的开发需求提供了若干工作负载&#xff0c;这里以…...

在MySQL中,修改字段A相同的记录的字段B ,要使得字段C小的记录的字段B值等于字段C大的记录的字段B值

例如&#xff1a;更新具有相同电话号码的用户记录&#xff0c;使得updatetime小的记录的name值等于updatetime大的记录的name值。 首先&#xff0c;我们需要创建一个用户表&#xff0c;这个用户表包含以下字段&#xff1a;phone&#xff0c;updatetime, name。以下是创建这个表…...

Java WebSocket 客户端接收大量数据

介绍 WebSocket 是一种基于 TCP 协议的全双工通信协议&#xff0c;它能够在客户端和服务器之间建立一个持久连接&#xff0c;实现实时的双向数据传输。在实际应用中&#xff0c;有时候我们需要处理大量的数据&#xff0c;例如实时监控系统或者实时股票行情等。本文将介绍如何使…...

QT 在Windows下实现ping功能(ICMP)

前言 很多时候&#xff0c;我们可能会图省事直接调用系统中的ping命令&#xff0c;但这是很不科学的~ 废话不多说&#xff0c;直接上代码.. .pro文件 在.pro文件末尾添加一行&#xff1a; LIBS -liphlpapi -lws2_32 .h文件 在.h文件中加入&#xff1a; #include <Q…...

harmonyos应用开发者高级认证考试部分答案

1只要使用端云一体化的云端资源就需要支付费用&#xff08;错&#xff09; 2所有使用Component修饰的自定义组件都支持onPageShow&#xff0c;onBackPress和onPageHide生命周期函数。&#xff08;错&#xff09; 3 HarmonyOS应用可以兼容OpenHarmony生态&#xff08;对&#…...

基于 STM32Cube.AI 的嵌入式人脸识别算法实现

本文介绍了如何使用 STM32Cube.AI 工具开发嵌入式人脸识别算法。首先&#xff0c;我们将简要介绍 STM32Cube.AI 工具和 STM32F系列单片机的特点。接下来&#xff0c;我们将详细讨论如何使用 STM32Cube.AI 工具链和相关库来进行人脸识别算法的开发和优化。最后&#xff0c;我们提…...

ElasticSearch之cat allocation API

查看各节点上各个shard的硬件使用情况&#xff0c;命令样例如下&#xff1a; curl -X GET "https://localhost:9200/_cat/allocation?vtrue&pretty" --cacert $ES_HOME/config/certs/http_ca.crt -u "elastic:ohCxPHQBEs5*lo7F9"执行结果如下&#x…...

Vue + Element UI 实现复制当前行数据功能(复制到新增页面组件值不能更新等问题解决)

1、需求 使用Vue Element UI 实现在列表的操作栏新增一个复制按钮&#xff0c;复制当前行的数据可以打开新增弹窗后亦可以跳转到新增页面&#xff0c;本文实现为跳转到新增页面。 2、实现 1&#xff09;列表页 index.vue <el-table> <!-- 其他列 --> <el-t…...

嵌入式FPGA IP正在发现更广阔的用武之地

作者&#xff1a;郭道正, Achronix Semiconductor中国区总经理 在日前落幕的“中国集成电路设计业2023年会暨广州集成电路产业创新发展高峰论坛&#xff08;ICCAD 2023&#xff09;”上&#xff0c;Achronix的Speedcore™嵌入式FPGA硅知识产权&#xff08;eFPGA IP&#xff09…...

[点云分割] 条件欧氏聚类分割

介绍 条件欧氏聚类分割是一种基于欧氏距离和条件限制的点云分割方法。它通过计算点云中点与点之间的欧氏距离&#xff0c;并结合一定的条件限制来将点云分割成不同的区域或聚类。 在条件欧氏聚类分割中&#xff0c;通常会定义以下两个条件来判断两个点是否属于同一个聚类&…...

Spring事务粒度优化与传播机制

在Spring事务中&#xff0c;我们通常会为了控制事务粒度&#xff0c;会把它进行拆分&#xff0c;为了避免大事务执行太久&#xff0c;占用资源太多&#xff0c;导致资源利用率低的问题。 我们曾经就遇到老系统因为大事务&#xff0c;把服务打死了。 问题出在一个大事务中有一…...

MySQL 基于成本的优化

其实在MySQL中⼀条查询语句的执⾏成本是由下边这两个⽅⾯组成的&#xff1a; I/O成本 我们的表经常使⽤的MyISAM、InnoDB存储引擎都是将数据和索引都存储到磁盘上的&#xff0c;当我们想查询表中的记录时&#xff0c;需要先把数据或者索引加载到内存中 然后再操作。这个从磁盘…...

【maven】【IDEA】idea中使用maven编译项目,报错java: 错误: 找不到符号 【2】

idea中使用maven编译项目,报错java: 错误: 找不到符号 错误状况展示: 如果报这种错,是因为项目中真的找不到报错的方法或者枚举 字段之类的,但实际是 : 点击 File Path...

AIGC,ChatGPT AI绘画 Midjourney 注册流程详细步骤

AI 绘画,Midjourney完成高清图片绘制,轻松掌握AI工具。 前期准备: ① 一个能使用的谷歌账号 ② 可以访问外网 Midjourney注册 1.进入midjourney官网https://www.midjourney.com 点击左下角”Join the Beta”,就可以注册,第一次使用的小伙伴会弹出提示,只需要点击Acc…...

万字解析设计模式之模板方法与解释器模式

一、模板方法模式 1.1概述 定义一个操作中算法的框架&#xff0c;而将一些步骤延迟到子类中&#xff0c;模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 例如&#xff0c;去银行办理业务一般要经过以下4个流程&#xff1a;取号、排队、办理具体业…...

apipost接口200状态码,浏览器控制台500状态码

后端 url 登录login方法 login(){this.$refs.loginForm.validate(async valid > {if (!valid) return// 由于data属性是一个json对象&#xff0c;需要进行解构赋值{data:result}&#xff0c;进行状态码判断const {data: result} await this.$http.post(/api/doLogin,this.…...

Instant Web API .Net Core Crack

Instant Web API .Net Core 是立即构建即时数据库 Web API&#xff0c;无需编码。在几分钟内生成您的 Web API&#xff0c;以更快地构建应用程序。使用 VS 2022 和 Entity Framework Core 为任何 MS SQL 数据库生成 Web API。 新功能 - 使用 Visual Studio 2022 为 PostgreSQL …...

vue项目使用easyplayer播放m3u8直播推流

官网 青犀视频 代码库 / 示例 / demo EasyPlayer 示例效果&#xff1a; 项目背景如图 后端给了m3u8的直播地址 协议是 hls / flv 市面上很多第三方热门播放库都可以完成该多屏播放方式 如Video.js 问题在于 分多屏时 会存在性能问题 并且关闭播放器后 即便删除Dom或调用停…...

Python报错:AttributeError(类属性、实例属性)

Python报错&#xff1a;AttributeError&#xff08;类属性、实例属性&#xff09; Python报错&#xff1a;AttributeError 这个错误就是说python找不到对应的对象的属性&#xff0c;百度后才发现竟然是初始化类的时候函数名写错了 __init__应该有2条下划线&#xff0c;如果只有…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...