0401hive入门-hadoop-大数据学习.md

文章目录

    • 1 Hive概述
    • 2 Hive部署
      • 2.1 规划
      • 2.2 安装软件
    • 3 Hive体验
    • 4 Hive客户端
      • 4.1 HiveServer2 服务
      • 4.2 DataGrip
    • 5 问题集
      • 5.1 Could not open client transport with JDBC Uri
    • 结语

1 Hive概述

Apache Hive是一个开源的数据仓库查询和分析工具,最初由Facebook开发,并后来捐赠给Apache软件基金会。Hive允许用户使用SQL语言来查询和分析存储在Hadoop分布式文件系统(HDFS)中的大规模数据集。它的设计目标是使非技术用户能够轻松地在Hadoop集群上执行数据查询和分析任务,而无需编写复杂的MapReduce代码。

以下是Hive的主要特点和概述:

  1. SQL-Like查询语言: Hive提供了一种类似于SQL的查询语言,称为HiveQL(Hive Query Language),它允许用户使用熟悉的SQL语法来查询和操作数据。这使得数据库管理员和分析师能够更容易地利用Hadoop集群进行数据分析。
  2. 元数据存储: Hive维护了一个元数据存储,其中包含有关数据表、分区、列、数据类型和表之间关系的信息。这使得用户可以在不了解底层数据存储结构的情况下查询数据。
  3. 扩展性: Hive是高度可扩展的,可以处理大规模数据集。它允许用户将数据表分成分区,并支持分区级别的操作,从而提高了查询性能。
  4. UDF(用户定义函数): Hive允许用户编写自定义函数,以满足特定的数据处理需求。这些自定义函数可以使用Java或Python编写,并与HiveQL一起使用。
  5. 集成: Hive可以与其他Hadoop生态系统工具集成,如Hadoop MapReduce、Apache HBase、Apache Spark等。这意味着用户可以在不同的工具之间共享数据并执行复杂的数据处理任务。
  6. 可视化工具: 虽然Hive本身是一个命令行工具,但也有许多可视化工具和商业智能平台(如Tableau、QlikView)支持Hive,使用户能够使用图形界面进行数据分析和报告生成。
  7. 安全性: Hive提供了基于SQL标准的权限管理机制,以确保只有授权的用户可以访问和修改数据。
  8. 数据格式支持: Hive支持多种数据格式,包括文本、Parquet、ORC(Optimized Row Columnar)等,可以根据需求选择最适合的格式。

Hive通常用于数据仓库、数据分析、报告生成和数据ETL(抽取、转换、加载)等用例,特别是对于那些需要在Hadoop集群上处理大规模数据的组织。它提供了一种方便的方式来查询和分析分布式存储的数据,使更多的人能够从大数据中获得有价值的见解。

Apache Hive是一个开源的数据仓库查询和分析工具,最初由Facebook开发,并后来捐赠给Apache软件基金会。Hive允许用户使用SQL语言来查询和分析存储在Hadoop分布式文件系统(HDFS)中的大规模数据集。它的设计目标是使非技术用户能够轻松地在Hadoop集群上执行数据查询和分析任务,而无需编写复杂的MapReduce代码。

以下是Hive的主要特点和概述:

  1. SQL-Like查询语言: Hive提供了一种类似于SQL的查询语言,称为HiveQL(Hive Query Language),它允许用户使用熟悉的SQL语法来查询和操作数据。这使得数据库管理员和分析师能够更容易地利用Hadoop集群进行数据分析。
  2. 元数据存储: Hive维护了一个元数据存储,其中包含有关数据表、分区、列、数据类型和表之间关系的信息。这使得用户可以在不了解底层数据存储结构的情况下查询数据。
  3. 扩展性: Hive是高度可扩展的,可以处理大规模数据集。它允许用户将数据表分成分区,并支持分区级别的操作,从而提高了查询性能。
  4. UDF(用户定义函数): Hive允许用户编写自定义函数,以满足特定的数据处理需求。这些自定义函数可以使用Java或Python编写,并与HiveQL一起使用。
  5. 集成: Hive可以与其他Hadoop生态系统工具集成,如Hadoop MapReduce、Apache HBase、Apache Spark等。这意味着用户可以在不同的工具之间共享数据并执行复杂的数据处理任务。
  6. 可视化工具: 虽然Hive本身是一个命令行工具,但也有许多可视化工具和商业智能平台(如Tableau、QlikView)支持Hive,使用户能够使用图形界面进行数据分析和报告生成。
  7. 安全性: Hive提供了基于SQL标准的权限管理机制,以确保只有授权的用户可以访问和修改数据。
  8. 数据格式支持: Hive支持多种数据格式,包括文本、Parquet、ORC(Optimized Row Columnar)等,可以根据需求选择最适合的格式。

核心的功能:

  • 元数据管理
  • SQL解析

2 Hive部署

2.1 规划

Hive 是单机工具,只需要部署在一台服务器即可。
Hive 虽然是单机的,但是它可以提交分布式运行的
MapReduce 程序运行。

规划
我们知道 Hive 是单机工具后,就需要准备一台服务器供 Hive 使用即可。
同时 Hive 需要使用元数据服务,即需要提供一个关系型数据库,我们也选择一台服务器安装关系型数据库即可

机器服务
node1Hive
node1Mysql

2.2 安装软件

步骤1:安装Mysql5.7

# 更新秘钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 安装mysql yum库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
# yum安装mysql
yum -y install mysql-community-server
# 启动mysql
systemctl start mysqld
# 设置msyql开机自启
systemctl enable mysqld
# 检查Mysql服务状态
systemctl status mysqld
# 第一次启动mysql会在日志文件中生成root用户的一个随机密码
cat /var/log/mysqld.log | grep "password"
  • 连接mysql 我们是做实验用,设置简单密码(生成中不要这样子搞)
set global validate_password_policy=LOW;
set global validate_password_length=4;
alter user 'root'@'localhost' identified by '123456';
grant all privileges on *.* to root@"%" identified by '123456' with grant option;
flush privileges;

步骤2:配置Hadoop

Hive的运行依赖Hadoop(HDFS、MapReduce、YARN都依赖),同时涉及到HDFS文件系统的访问,所有要配置Hadoop的代理用户,即设置Hadoop用户允许代理(模拟)其他用户。

配置如下内容在Hadoop的core-site.xml中,并分发到其他节点,且重启HDFS集群

<property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value>
</property>
<property><name>hadoop.proxyuser.hadoop.groups</name><value>*</value>
</property>

步骤3:下载解压Hive

  • node1切换到hadoop用户

    su - hadoop
    
  • 下载Hive安装包或者本地上传

    http://archive.apache.org/dist/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
    
  • 解压

    tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /export/server/
    
  • 设置软连接

    ln -s /export/server/apache-hive-3.1.3-bin.tar.gz /export/server/hive
    

步骤4:提供Mysql 驱动包

  • 下载或者上传Mysql驱动包

    https:// repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.34/mysql-connector-java-5.1.34.jar
    
  • 将下载好的Mysql驱动包移入Hive安装目录下lib目录内

    mv mysql-connector-java-5.1.34.jar /export/server/hive/lib/
    

步骤5:配置Hive

  • 在 Hive 的 conf 目录内,新建 hive-env.sh 文件,填入以下环境变量内容:
export HADOOP_HOME=/export/server/hadoop
export HIVE_CONF_DIR=/export/server/hive/conf
export HIVE_AUX_JARS_PATH=/export/server/hive/lib
  • 在 Hive 的 conf 目录内,新建 hive-site.xml 文件,填入以下内容

    <configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&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>123456</value></property><property><name>hive.server2.thrift.bind.host</name><value>node1</value></property><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.1.34 Mysq驱动包,配置的连接驱动也是旧版废弃的

步骤6:初始化元数据库

  • 在Mysql数据库中新建数据库:hive

    create database hive charset utf8;
    
  • 执行元数据库初始化命令

    cd /export/server/hive
    bin/schematool -initSchema -dbType mysql -verbos
    

    打印

    Initialization script completed
    schemaTool completed
    

    初始化完成

步骤7:启动Hive

  • 当前用户为hadoop

  • 确保Hive文件夹所属为hadoop用户

  • 创建hive日志文件夹

    mkdir /export/server/hive/logs
    
  • 启动元数据管理服务

    # 前台启动
    bin/hive --service metastore
    # 后台启动
    nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &
    
  • 启动客户端,二选一(当前简单测试选择 Hive Shell)

    • Hive Shell方式:可以直接写SQL

      /bin/hive
      
    • Hive ThriftServer:不可以直接写SQL,需要外部客户端链接使用

      bin/hive --service hiveserver2
      

3 Hive体验

首先确保启动了metastore服务,可以执行

bin/hive 

进入hive shell环境中,可以执行SQL语句,如下图所示:

在这里插入图片描述

  • 创建表

    create table test(id int,name string,gender string);
    
  • 插入数据

    insert into test values(1, '爱因斯坦', '男'),(2, '麦克斯韦', '男'),(3, '居里夫人', '女');
    
  • 查询数据

    select gender, count(*) cnt from test group by gender;
    
  • 验证Hive的数据存储:Hive的数据存储在HDFS的:/user/hive/warehouse,如下图所示

在这里插入图片描述

  • 验证SQL语句启动的MapReduce程序:打开YARN的WEB UI页面查看任务情况-http://node1:8088,如下图所示

在这里插入图片描述

4 Hive客户端

4.1 HiveServer2 服务

在启动 Hive 的时候,除了必备的 Metastore 服务外,我们前面提过有 2 种方式使用 Hive :
• 方式 1 : bin/hive 即 Hive 的 Shell 客户端,可以直接写 SQL
• 方式 2 : bin/hive --service hiveserver2
后台执行脚本:

nohup bin/hive --service hiveserver2 >> logs/hiveserver2.log 2>&1 &

bin/hive --service metastore ,启动的是元数据管理服务
bin/hive --service hiveserver2 ,启动的是 HiveServer2 服务
HiveServer2 是 Hive 内置的一个 ThriftServer 服务,提供 Thrift 端口供其它客户端链接
可以连接 ThriftServer 的客户端有:
• Hive 内置的 beeline 客户端工具(命令行工具)
• 第三方的图形化 SQL 工具,如 DataGrip 、 DBeaver 、 Navicat 等

# 先启动 metastore 服务 然后启动 hiveserver2 服务
nohup bin/hive --service metastore >> logs/metastore.log 2>&1 &
nohup bin/hive --service hiveserver2 >> logs/hiveserver2.log 2>&1 &

4.2 DataGrip

我们这里以DataGrip为例,其他客户端自行测试。

步骤1:创建工程文件夹

E:\gaogzhen\projects\bigdata\DataGripProjects\hive-demo

步骤2:DataGrip创建新工程并关联本地文件夹

在这里插入图片描述

步骤3:DataGrip连接Hive

在这里插入图片描述
1693897609904)

步骤4:配置Hive JDBC驱动

在这里插入图片描述

连接成功,如下图所示:

在这里插入图片描述

5 问题集

5.1 Could not open client transport with JDBC Uri

  • 报错内容

    Error: Could not open client transport with JDBC Uri: jdbc:hive2://localhost:10000:
    Failed to open new session: 
    java.lang.RuntimeException: 
    org.apache.hadoop.security.AccessControlException: 
    Permission denied: user=root, access=EXECUTE   , inode="/tmp":hadoop:supergroup:drwx------
    
  • 解决方案参考下面连接4,修改hdfs /tmp访问权限,前面我们配置了hadoop用户代理,不知道为啥没生效

结语

如果小伙伴什么问题或者指教,欢迎交流。

❓QQ:806797785

参考链接:

[1]大数据视频[CP/OL].2020-04-16.

[2]0102阿里云配置3台ECS服务器-大数据学习[CP/OL].

[3]0201hdfs集群部署-hadoop-大数据学习[CP/OL].

[4]beeline连接hive2报错Permission denied[CP/OL].

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/126623.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stm32之31.iic

iic双线制。一根是SCL&#xff0c;作为时钟同步线;一根是SDA&#xff0c;作为数据传输线 SDN #include "iic.h"#define SCL PBout(8)#define SDA_W PBout(9) #define SDA_R PBin(9)void IIC_GPIOInit(void) {GPIO_InitTypeDef GPIO_InitStructure;//使能时钟GR…

vue: 使用下拉树组件@riophae/vue-treeselect

前言: 在vue中, 因为element-ui 2.X是没有tree-select组件的&#xff0c;到了element-plus就有了 riophae/vue-treeselect是一个基于 Vue.js 的树形选择器组件&#xff0c;可以用于选择树形结构的数据。它支持多选、搜索、异步加载等功能&#xff0c;可以自定义选项的样式和模…

php版 短信跳转微信小程序

实现这功能首先&#xff0c;小程序端添加业务域名 php代码 <?php declare (strict_types1);namespace app\controller\Admin;use app\model\Set; use app\Request;class Admin_Url_Scheme {public function getScheme(Request $request) {$appid 小程序appid;$secret 小…

嵌入式基础-电路

目录 1、电流 1.1电流方向 1.2交流电和直流电 2、电压 3、电阻 4、欧姆定律 1、电流 电流是指单位时间内通过导体的电荷量&#xff0c;用符号I表示&#xff0c;单位是安培&#xff08;A&#xff09;。电流是电磁学中的基本量纲之一&#xff0c;是七个基本量纲之一。电流的…

深度学习入门教学——卷积神经网络CNN

一、CNN简介 1、应用领域 检测任务 分类与检索 超分辨率重构 2、卷积网络与传统网咯的区别 传统神经网络和卷积神经网络都是用来提取特征的。神经网络&#xff1a; 可以将其看作是一个二维的。卷积神经网络&#xff1a; 可以将其看作是一个三维的。 3、整体框架 二、输入层 …

C++多态案例2----制作饮品

#include<iostream> using namespace std;//制作饮品的大致流程都为&#xff1a; //煮水-----冲泡-----倒入杯中----加入辅料//本案例利用多态技术&#xff0c;提供抽象类制作饮品基类&#xff0c;提供子类制作茶叶和咖啡class AbstractDrinking {public://煮水//冲水//倒…

js摄像头动态检测

利用摄像头每一秒截图一次图像。然后计算2次图像之间的相似度。 如果相似度低于98%就会报警。 var video document.getElementsByClassName(inputvideo)[0]; video.innerHTML "<video classinput_video idcamera autoplay width640px height380px></video>…

自动驾驶——估计预瞄轨迹YawRate

1.Introduction 在ADAS控制系统中&#xff0c;通常根据预瞄距离x去估计横向距离y&#xff0c;有如下关系&#xff1a; y a0 a1 x a2 * x^2 a3 * x^3 &#xff0c;那么现在有个需求&#xff0c;希望根据上述x和y的关系&#xff0c;去估计规划预瞄轨迹yawRate 2.How to es…

【Linux】Qt Remote之Remote开发环境搭建填坑小记

总体思路 基于WSL2&#xff08;Ubuntu 22.04 LTS&#xff09;原子Alpha开发板进行Qt开发实验&#xff0c;基于Win11通过vscode remote到WSL2&#xff0c;再基于WSL2通过Qt 交叉编译&#xff0c;并通过sshrsync远程到开发板&#xff0c;构建起开发工具链。 Step1 基于Win11通过…

Macs Fan Control 1.5.16 Pro for mac风扇调节软件

Macs Fan Control是一款专门为 Mac 用户设计的软件&#xff0c;它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度&#xff0c;以提高设备的散热效果&#xff0c;减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温度和…

容器编排学习(二)镜像制作和私有仓库介绍

一 Dockerfile 1 概述 commit的局限 很容易制作简单的镜像&#xff0c;但碰到复杂的情况就十分不方便例如碰到下面的情况需要设置默认的启动命令需要设置环境变量需要指定镜像开放某些特定的端口 Dockerfile就是解决这些问题的方法 Dockerfile是一种更强大的镜像制作方式…

如何基于国标GB28181视频平台EasyGBS国标云服务平台建设智慧环保在线监测系统

EasyGBS平台可提供流媒体接入、处理、转发等服务&#xff0c;支持内网、公网的安防视频监控设备通过国标GB/T28181协议进行视频监控直播。基于视频图像的环保监督管理智能监控系统&#xff0c;结合了计算机技术、AI、云计算、网络传输技术和网络存储技术等先进技术&#xff0c;…

数据分析面试题(2023.09.08)

数据分析流程 总体分为四层&#xff1a;需求层、数据层、分析层和结论层 一、统计学问题 1、贝叶斯公式复述并解释应用场景 公式&#xff1a;P(A|B) P(B|A)*P(A) / P(B)应用场景&#xff1a;如搜索query纠错&#xff0c;设A为正确的词&#xff0c;B为输入的词&#xff0c;那…

Hugging News #0904: 登陆 AWS Marketplace

每一周&#xff0c;我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新&#xff0c;包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等&#xff0c;我们将其称之为「Hugging News」。本期 Hugging News 有哪些有趣的消息&#xff0…

Pytorch从零开始实战01

Pytorch从零开始实战——MNIST手写数字识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——MNIST手写数字识别环境准备数据集模型选择模型训练可视化展示 环境准备 本系列基于Jupyter notebook&#xff0c;使用Python3.7.12&#xff0c;Py…

CH06_第一组重构(下)

封装变量&#xff08;Encapsulate Variable | 132&#xff09; 曾用名&#xff1a;自封装字段&#xff08;Self-Encapsulate Field&#xff09; 曾用名&#xff1a;封装字段&#xff08;Encapsulate Field&#xff09; let defaultOwner {firstName: "Martin", la…

用半天时间从零开始复习前端之html

目录 前言 科班生的标配&#xff1a;半天听完一门标记型语言 准备工作 webstorm2022 webstrom 第一个html页面 body h系列标签 行标签和块标签 列表标签 表格标签&#xff08;另起一篇&#xff09; 万能的input 1.快速生成多个标签 2.同时选中多个 前言 科班生的标…

系统报错“由于找不到msvcp140.dll无法继续执行代码”的处理方法

我在使用电脑时&#xff0c;突然发现了一个错误提示&#xff1a;“无法启动程序&#xff0c;因为找不到msvcp140.dll文件”。这让我非常困惑&#xff0c;因为我确定这个文件应该存在于我的电脑上。但是电脑依然报错“由于找不到msvcp140.dll无法继续执行代码”&#xff0c;这个…

【周末闲谈】如何利用AIGC为我们创造有利价值?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言&#xff0c;模仿还是超越&#xff1f; ✨第二周 畅想AR 文章目录 系列目录前言AIGCAI写作AI绘画AI视频生成AI语音合成 前言 在此之…

Linux防火墙(iptables)

一、linux的防火墙组成 linux的防火墙由netfilter和iptables组成。用户空间的iptables制定防火墙规则&#xff0c;内核空间的netfilter实现防火墙功能。 netfilter&#xff08;内核空间&#xff09;位于Linux内核中的包过滤防火墙功能体系&#xff0c;称为Linux防火墙的“内核…