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

news/2024/7/8 3:13:22 标签: hadoop, hive, mariadb, hdfs, 大数据, java, 分布式

章节内容

上一节我们完成了:

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

背景介绍

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

注意,如果你和我一样,打算用公网部署,那一定要做好防火墙策略,避免不必要的麻烦!!!
请大家都以学习为目的,也请不要对我的服务进行嗅探或者攻击!!!

但是有一台公网服务器我还运行着别的服务,比如前几天发的:autodl-keeper 自己写的小工具,防止AutoDL机器过期的。还跑着别的Web服务,所以只能挤出一台 2C2G 的机器。那我的配置如下了:

  • 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

https://archive.apache.org/dist/hive/hive-2.3.9/

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

cd /opt/software

使用wget下载

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

在这里插入图片描述

解压移动

cd /opt/software
tar zxvf apache-hive-2.3.9-bin.tar.gz -C ../servers/
cd ../servers
ls

在这里插入图片描述

环境变量

vim /etc/profile

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

# hive
export HIVE_HOME=/opt/servers/apache-hive-2.3.9-bin
export PATH=$PATH:$HIVE_HOME/bin

填写内容如下:
在这里插入图片描述

刷新环境变量

source /etc/profile

修改配置

cd $HIVE_HOME/conf

在这里插入图片描述
修改 hive-site.xml

vim hive-site.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 的机器,可以直接安装:

sudo apt install mariadb-server

在这里插入图片描述

启动服务

sudo systemctl start mariadb

安全配置

sudo mysql_secure_installation

在这里插入图片描述

建立用户

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

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

查询执行的结果
在这里插入图片描述

远程访问

vim /etc/mysql/mariadb.conf.d/50-server.cnf

修改 bind-address
在这里插入图片描述
创建ROOT用户,开启远程访问。

CREATE USER '你的用户'@'%' IDENTIFIED BY '你的密码';

查看当前的表信息

SELECT Host, User FROM mysql.user;

在这里插入图片描述

刷新权限

FLUSH PRIVILEGES;

初始化

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

把mysql-connector-java-8.0.19.jar拷贝到 $HIVE_HOME/lib

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

schematool -dbType mysql -initSchema

在这里插入图片描述

查看结果

连接我们的数据库,可以看到如下的情况:
在这里插入图片描述


http://www.niftyadmin.cn/n/5536118.html

相关文章

58、Flink 的项目配置使用 Maven 详解

2&#xff09;使用 Maven 1.版本要求 Maven 3.8.6 (推荐或者使用更高版本)Java 8 (deprecated) or Java 11 2.将项目导入 IDE 创建项目目录和文件后&#xff0c;建议将此项目导入到 IDE 进行开发和测试。 IntelliJ IDEA 支持开箱即用的 Maven 项目。 注意&#xff1a; Ja…

数据库之SQL(一)

目录 一、简述数据库分页 二、简述SQL中的聚合函数 三、简述表与表是如何关联的 四、简述外连接 五、简述数据库的左连接和右连接 一、简述数据库分页 1、MySQL分页语法&#xff1a; 在MySQL中&#xff0c;SELECT语句默认返回所有匹配的行&#xff0c;它们可能是指定表中的…

ARM架构服务器/虚拟机编译部署Tendis(国产化替换Redis)

文章目录 一、概述 二、安装相关组件 三、下载最新的Tendis源码 四、编译源码 五、启动Tendis 六、使用Docker镜像部署Tendis 七、常见报错 八、参考链接 一、概述 国产化项目要求尽可能使用国产组件,尤其是已存在的项目,需要替换已有组件,比如使用Tendis替换Redis。…

【LeetCode】十三、分治法:多数元素 + 最大子序列和

文章目录 1、分治法2、leetcode169&#xff1a;多数元素3、leetcode53&#xff1a;最大子序和 1、分治法 分治一般都搭配递归使用&#xff1a; 用分治法的一个应用——归并排序&#xff1a;将一组数不停的一分为二&#xff0c;直到分到每组只有一个数的时候 分到每组只有一个数…

LLama-Factory大模型训练框架,基于自己数据集微调qwen7B模型实战

一&#xff0c;项目简介 LLama-Factory&#xff0c;大模型训练框架&#xff0c;支持多种模型&#xff0c;多种训练方式&#xff0c; 项目github地址&#xff1a;link 项目特色 多种模型&#xff1a;LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Yi、Gemma、Baichuan、ChatGL…

《自动驾驶中的SLAM技术》第2章: 基础数学知识回顾 习题

自动驾驶中的SLAM技术 第2章: 基础数学知识回顾 习题 1 分别使用左右扰动模型&#xff0c;计算 ∂ R − 1 p ∂ R \frac{\partial \mathbf{R}^{-1}\mathbf{p}}{\partial \mathbf{R}} ∂R∂R−1p​。 左扰动模型 ∂ R − 1 p ∂ R lim ⁡ δ ϕ → 0 ( E x p ( δ ϕ ) R…

数据结构(3.8)——栈的应用

栈在括号匹配中的应用 流程图 代码 #include <stdio.h> #include <stdlib.h> #define MaxSize 10typedef struct {char data[MaxSize];int top; } SqStack;// 初始化栈 void InitStack(SqStack* S) {S->top -1; // 初始化栈顶指针 }// 判空 bool StackEmpty(…

JavaScript 原型链那些事

在讲原型之前我们先来了解一下函数。 在JS中&#xff0c;函数的本质就是对象&#xff0c;它与其他对象不同的是&#xff0c;创建它的构造函数与创建其他对象的构造函数不一样。那产生函数对象的构造函数是什么呢&#xff1f;是一个叫做Function的特殊函数&#xff0c;通过newFu…