大数据-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI篇持续更新中!(长期更新)

目前2025年06月13日更新到: AI炼丹日志-28 - Audiblez 将你的电子书epub转换为音频mp3 做有声书,持续打造实用AI工具指南!📐🤖

💻 Java篇正式开启!(300篇)

目前2025年06月11日更新到: Java-44 深入浅出 Nginx - 底层进程机制 Master Worker 机制原理 常用指令 MyBatis 已完结,Spring 已完结,深入浅出助你打牢基础!

📊 大数据板块已完成多项干货更新(300篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈! 目前2025年06月13日更新到: 大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT案例 详解

章节内容

上一节我们完成了:

  • Reduce JOIN 的介绍
  • Reduce JOIN 的具体实现
  • Driver
  • Mapper
  • Reducer
  • 运行测试

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。 之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

Hive简介

Hive 是基于 Hadoop的一个数据仓库,可以将结构化的数据文件映射为一张表,类似于RDBMS中的表,并提供SQL查询的功能,Hive是由FaceBook开源,用于解决海量结构化日志的数据统计。

  • Hive本质:将SQL转换为MapReduce任务进行执行
  • 底层是由HDFS来提供支持的
  • Hive对数据更新不友好,主要是读多写少的

Hive优点

  • 学习成本低,类似于 SQL 语言
  • 可处理海量数据,底层有 MapReduce 支持
  • 可水平扩展,基于 Hadoop
  • 支持自定义函数
  • 良好的容错性,某个节点错误后,HQL 仍然可以正常运行
  • 统一的元数据管理:表、字段、类型 等等

Hive缺点

  • HQL 表达能力有限
  • 迭代计算无法表达
  • Hive 执行效率不高
  • 自动生成的MR程序 有些不够智能
  • Hive调优困难

Hive架构

安装配置

前置要求

  • 三台Hadoop集群
  • Hive下载安装
  • MySQL 或者 MariaDB

下载Hive

archive.apache.org/dist/hive/h...

当前我计划,把 Hive 安装到 h122 节点上。122空闲比较多。

shell 复制代码
cd /opt/software

使用wget下载

shell 复制代码
wget -O apache-hive-2.3.9-bin.tar.gz https://archive.apache.org/dist/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz

解压移动

shell 复制代码
cd /opt/software
tar zxvf apache-hive-2.3.9-bin.tar.gz -C ../servers/
cd ../servers
ls

环境变量

shell 复制代码
vim /etc/profile

在环境变量中,加入如下内容

shell 复制代码
# hive
export HIVE_HOME=/opt/servers/apache-hive-2.3.9-bin
export PATH=$PATH:$HIVE_HOME/bin

填写内容如下:

刷新环境变量

shell 复制代码
source /etc/profile

修改配置

shell 复制代码
cd $HIVE_HOME/conf

修改 hive-site.xml

shell 复制代码
vim hive-site.xml

注意如下配置,应该按照实际情况,修改成你的。

xml 复制代码
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- hive元数据的存储位置 -->
<property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://h122.wzk.icu:3306/hivemetadata?createDatabaseIfNotExist=true&amp;useSSL=false</value>
        <description>JDBC connect string for a JDBC metastore</description>
</property>
<!-- 指定驱动程序 -->
<property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
</property>
<!-- 连接数据库的用户名 -->
<property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
        <description>username to use against metastore database</description>
</property>
<!-- 连接数据库的口令 -->
<property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive@wzk.icu</value>
        <description>password to use against metastore database</description>
</property>
</configuration>

填写的结果如下图:

MariaDB

直接安装

当前我是 Ubuntu 的机器,可以直接安装:

shell 复制代码
sudo apt install mariadb-server

启动服务

shell 复制代码
sudo systemctl start mariadb

安全配置

shell 复制代码
sudo mysql_secure_installation

建立用户

进入数据库,执行如下的指令。

sql 复制代码
CREATE USER 'hive'@'%' IDENTIFIED BY '你的密码';
GRANT ALL ON *.* TO 'hive'@'%';
FLUSH PRIVILEGES;

查询执行的结果

远程访问

shell 复制代码
vim /etc/mysql/mariadb.conf.d/50-server.cnf

修改 bind-address 创建ROOT用户,开启远程访问。

sql 复制代码
CREATE USER '你的用户'@'%' IDENTIFIED BY '你的密码';

查看当前的表信息

sql 复制代码
SELECT Host, User FROM mysql.user;

刷新权限

shell 复制代码
FLUSH PRIVILEGES;

初始化

我们需要给Hive一个链接的Jar包,平常我们写JDBC的时候,也会用到:

shell 复制代码
把mysql-connector-java-8.0.19.jar拷贝到 $HIVE_HOME/lib

在Hive节点上,运行如下指令:

shell 复制代码
schematool -dbType mysql -initSchema

查看结果

连接我们的数据库,可以看到如下的情况:

相关推荐
Clay6 分钟前
nestjs实战 - buildadmin重构后端(初始化mock接口)
javascript·后端
巴厘猫7 分钟前
Java开发者新机遇:LangChain4j——在Java中构建LLM应用的利器
java·后端·langchain
科米米8 分钟前
demo01 ffmpeg 从usb uvc摄像头读取一张图片
后端
loop lee12 分钟前
【Spring】一文了解SpringMVC的核心功能及工作流程,以及核心组件及注解
java·后端·spring
巴厘猫13 分钟前
从零解锁Docker API,玩转容器的“幕后英雄”!
后端·docker·容器
Resean022314 分钟前
SpringMVC 6+源码分析(一)初始化流程
java·后端·spring·servlet·springmvc
MacroZheng25 分钟前
扔掉HttpUtil!看看人家的HTTP客户端工具,那叫一个优雅!
java·spring boot·后端
wenb1n25 分钟前
【MySQL】 配置谜团:为什么my.cnf配置了 max_connections=1000 却不生效?
后端
码农脱贫1 小时前
记录一下公司真实的RabbitMQ 消费者消息挤压问题
后端
bug菌1 小时前
你以为用Java做个记事本很简单?我...
java·后端·java ee