Hive其一,简介、体系结构和内嵌模式、本地模式的安装

server/2024/12/23 20:20:46/

目录

一、Hive简介

二、体系结构

三、安装

1、内嵌模式

2、测试内嵌模式

3、本地模式--最常使用的模式


一、Hive简介

Hive 是一个框架,可以通过编写sql的方式,自动的编译为MR任务的一个工具。
在这个世界上,会写SQL的人远远大于会写java代码的人,所以假如可以将MR通过sql实现,这个将是一个巨大的市场,FaceBook就这么干。(脸书)
FaceBook -->  Meta (元宇宙) --> 社交网站(校内网)
在大数据中,发展趋势:所有的技术全部都变为SQL。
1、Hive是一个数据仓库工具
2、可以将数据加载到表中,编写sql进行分析
3、底层依赖Hadoop,所以每一次都需要启动hadoop(hdfs以及yarn)
4、Hive的底层计算框架可以使用MR、也可以使用Spark、TEZ
5、Hive不是数据库,而是一个将MR包了一层壳儿。类似于一个中介。

Hive官网地址:Apache Hive

GitHub地址: GitHub - apache/hive: Apache Hive

文档查看地址:GettingStarted - Apache Hive - Apache Software Foundation

目前最新的版本稳定版(realease):3.1.2

beta版本正在开发4.0

Hive天然的就是当做数据仓库使用的。什么是数据仓库?

数据仓库:数据的仓库,一般只要能存数据的软件都可以当做数据仓库。

比如:开了一个超市,必须有一个仓库,这个仓库是不是可大可小。以前数据量特别小的时候,一般都使用Oracle当做数据仓库,现在企业中一般都使用大数据技术中 的Hive或者跟Hive类似的技术当做数据仓库。

普通的仓库:一般也是分类的,比如食品区、衣服区、电子产品区

数据仓库:也是需要搭建的(分层),方便使用者从仓库中快速的获取想要的数据。仓库搭建的好不好,就叫做建模。

二、体系结构

注意:

- 包含*的全表查询,比如select * from table 不会生成MapRedcue任务

- 包含*的limit查询,比如select * from table limit 3 不会生成MapRedcue任务

三、安装

分为三种:内嵌模式、本地模式、远程模式

Hive会自动检测Hadoop的环境变量,如有就必须启动Hadoop

将现在的高可用,进行一次快照,将整个集群恢复到高可用之前的状态,方便学习。

1、内嵌模式

上传 压缩包  /opt/modules
解压:
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/installs/
重命名:
mv apache-hive-3.1.2-bin/ hive
配置环境变量:vi /etc/profileexport HIVE_HOME=/opt/installs/hiveexport PATH=$HIVE_HOME/bin:$PATH
刷新环境变量:
source /etc/profile
配置hive-env.sh
进入这个文件夹下:/opt/installs/hive/conf
cp hive-env.sh.template hive-env.sh
修改hive-env.sh 中的内容:
export HIVE_CONF_DIR=/opt/installs/hive/conf
export JAVA_HOME=/opt/installs/jdk
export HADOOP_HOME=/opt/installs/hadoop
export HIVE_AUX_JARS_PATH=/opt/installs/hive/lib进入到conf 文件夹下,修改这个文件hive-site.xml
cp hive-default.xml.template hive-site.xml
接着开始修改:
把Hive-site.xml 中所有包含${system:java.io.tmpdir}替换成/opt/installs/hive/tmp。如果系统默认没有指定系统用户名,那么要把配置${system:user.name}替换成当前用户名root。

使用nodepad++,打开该文件,进行替换:

一个替换了4处

一个替换了3处

启动集群:

start-all.sh

给hdfs创建文件夹:

[root@yunhe01 conf] # hdfs dfs -mkdir -p /user/hive/warehouse 
[root@yunhe01 conf] # hdfs dfs -mkdir -p /tmp/hive/ 
[root@yunhe01 conf] # hdfs dfs -chmod 750 /user/hive/warehouse 
[root@yunhe01 conf] # hdfs dfs -chmod 777 /tmp/hive

初始化元数据,因为是内嵌模式,所以使用的数据库是derby

schematool --initSchema -dbType derby

hive-site.xml中,3215行,96列的地方有一个非法字符

将这个非法字符,删除,保存即可。

需要再次进行元数据的初始化操作:

schematool --initSchema -dbType derby

提示初始化成功!

初始化操作要在hive的家目录执行,执行完毕之后,会出现一个文件夹:

测试是否成功:

输入hive  进入后,可以编写sql
hive> show databases;
OK
default

2、测试内嵌模式

-- 进入后可以执行下面命令进行操作:
hive>show databases;  	-- 查看数据库
hive>show tables;  	 	-- 查看表
-- 创建表
hive> create table dog(id int,name string);
hive> select * from dog;
hive> insert into dog values(1,'wangcai');
hive> desc dog; -- 查看表结构
hive> quit; -- 退出

但是内嵌模式有一个弊端:假如有一个窗口在使用你的hive,另一个窗口能进入,但是会报错!

3、本地模式--最常使用的模式

使用本地模式的最大特点是:将元数据从derby数据库,变为mysql数据库,并且支持多窗口同时使用。

第一步:检查你的mysql是否正常

systemctl status mysqld

第二步:删除以前的derby数据

进入到hive中,删除 
rm -rf metastore_db/ derby.log

第三步:修改配置文件 hive-site.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--Licensed to the Apache Software Foundation (ASF) under one or morecontributor license agreements.  See the NOTICE file distributed withthis work for additional information regarding copyright ownership.The ASF licenses this file to You under the Apache License, Version 2.0(the "License"); you may not use this file except in compliance withthe License.  You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.
--><configuration><!--配置MySql的连接字符串-->
<property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value><description>JDBC connect string for a JDBC metastore</description>
</property>
<!--配置MySql的连接驱动-->
<property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description>
</property>
<!--配置登录MySql的用户-->
<property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>username to use against metastore database</description>
</property>
<!--配置登录MySql的密码-->
<property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value><description>password to use against metastore database</description>
</property>
<!-- 以下两个不需要修改,只需要了解即可 -->
<!-- 该参数主要指定Hive的数据存储目录  -->
<property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>
<!-- 该参数主要指定Hive的临时文件存储目录  --><property><name>hive.exec.scratchdir</name><value>/tmp/hive</value></property></configuration>

将mysql的驱动包,上传至 hive 的lib 文件夹下

初始化元数据(本质就是在mysql中创建数据库,并且添加元数据)

schematool --initSchema -dbType mysql

测试:同时打开两个窗口都可以使用, 支持多个会话。

create database mydb01;
use mydb01;create table stu (id int,name string);insert 语句 走MR任务
insert into stu values(1,'wangcai');
select * from stu;
select * from stu limit 10; 
不走MR任务。
创建表的时候,varchar类型需要指定字符长度,否则报错!

http://www.ppmy.cn/server/152573.html

相关文章

MLM: 掩码语言模型的预训练任务

MLM: 掩码语言模型的预训练任务 掩码语言模型&#xff08;Masked Language Model, MLM&#xff09;是一种用于训练语言模型的预训练任务&#xff0c;其核心目标是帮助模型理解和预测语言中的上下文关系。以下是对这一概念的详细说明&#xff1a; 基本定义&#xff1a; MLM是一…

使用 Copilot 增强创造力:Mighty Media 的卓越数字化之旅

欢迎来到《用Copilot发展你的业务》&#xff0c;这是您获取关于在中小企业中利用AI的可行见解的首选资源。在当今快速发展的科技环境中&#xff0c;保持领先需要创新、灵活性和合适的工具。总部位于西雅图的创意机构Mighty Media Studios就是这种方法的典范。 小而强大 Mighty…

SpringCloud 集成 Eureka服务,本机测试

Eureka是一款开源的服务注册与发现组件&#xff0c;分EurekaServer和EurekaClient。 Eureka作用过程&#xff1a; Eureka Client&#xff08;服务提供者&#xff09;启动向Eureka Server&#xff08;http-api&#xff09;注册,另一个Eureka Client&#xff08;服务消费者&#…

如何通过HTTP API新建Collection

本文介绍如何通过HTTP API创建一个新的Collection。 前提条件 已创建Cluster&#xff1a;创建Cluster。 已获得API-KEY&#xff1a;API-KEY管理。 Method与URL HTTP POST https://{Endpoint}/v1/collections 使用示例 说明 需要使用您的api-key替换示例中的YOUR_API_KEY、…

使用Redis实现限流

使用Redis实现限流的三种方式 目录 概述基于计数器的固定窗口限流 实现原理适用场景实现步骤代码实现缺点 基于滑动窗口的限流 实现原理适用场景实现步骤代码实现优点缺点 基于令牌桶算法的限流 实现原理适用场景实现步骤Lua脚本实现Java实现优点缺点 总结 概述 在分布式系统…

每天40分玩转Django:实操博客应用

实操博客应用 一、内容概述 模块重要程度主要内容项目初始化⭐⭐⭐⭐创建项目和应用模型设计⭐⭐⭐⭐⭐文章、评论、用户模型视图实现⭐⭐⭐⭐⭐增删改查功能模板开发⭐⭐⭐⭐页面布局和样式用户认证⭐⭐⭐⭐⭐用户登录和权限 二、项目结构 blog_project/ ├── blog/ │ …

Linux入侵排查

1.查看有哪些用户登录了服务器 命令&#xff1a;who 如果存在可疑用户&#xff0c;使用kill pid杀死对应进程 2.查看是否新增可疑用户 命令&#xff1a;cat /etc/passwd 3.排查木马 命令&#xff1a;netstat -anp ps -x 查看是否有可疑外联ip或域名&#xff0c;然后根据…

新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github

经过近3个月的迭代开发&#xff0c;新版本的国标GB28181设备端EasyGBD安卓Android版终于在昨天发布到Github了&#xff0c;最新的EasyGBD支持了国标GB28181-2022版&#xff0c;还支持了语音对讲、位置上报、本地录像等功能&#xff0c;比原有GB28181-2016版的EasyGBD更加高效、…