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.mzph.cn/news/74363.shtml

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

相关文章

Direct3D绘制旋转立方体例程

初始化文件见Direct3D的初始化_direct3dcreate9_寂寂寂寂寂蝶丶的博客-CSDN博客 D3DPractice.cpp #include <windows.h> #include "d3dUtility.h" #include <d3dx9math.h>IDirect3DDevice9* Device NULL; IDirect3DVertexBuffer9* VB NULL; IDirect3…

华为云云耀云服务器L实例评测 | 分分钟完成打地鼠小游戏部署

前言 在上篇文章【华为云云耀云服务器L实例评测 | 快速部署MySQL使用指南】中&#xff0c;我们已经用【华为云云耀云服务器L实例】在命令行窗口内完成了MySQL的部署并简单使用。但是后台有小伙伴跟我留言说&#xff0c;能不能用【华为云云耀云服务器L实例】来实现个简单的小游…

Jmeter系列-阶梯加压线程组Stepping Thread Group详解(6)

前言 tepping Thread Group是第一个自定义线程组但&#xff0c;随着版本的迭代&#xff0c;已经有更好的线程组代替Stepping Thread Group了【Concurrency Thread Group】&#xff0c;所以说Stepping Thread Group已经是过去式了&#xff0c;但还是介绍一下 Stepping Thread …

详解Redis之Lettuce实战

摘要 是 Redis 的一款高级 Java 客户端&#xff0c;已成为 SpringBoot 2.0 版本默认的 redis 客户端。Lettuce 后起之秀&#xff0c;不仅功能丰富&#xff0c;提供了很多新的功能特性&#xff0c;比如异步操作、响应式编程等&#xff0c;还解决了 Jedis 中线程不安全的问题。 …

Python 内置函数速查手册(函数大全,带示例)

1. abs() abs() 返回数字的绝对值。 >>> abs(-7) **输出&#xff1a;**7 >>> abs(7) 输出&#xff1a; 7 2. all() all() 将容器作为参数。如果 python 可迭代对象中的所有值都是 True &#xff0c;则此函数返回 True。空值为 False。 >>>…

使用Spring WebSocket实现实时通信功能

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

ElasticSearch详解

目录 一、Elasticsearch是什么&#xff1f; 二、为什么要使用ElasticSearch 2.1 关系型数据库有什么问题&#xff1f; 2.2 ElasticSearch有什么优势&#xff1f; 2.3 ES使用场景 三、ElasticSearch概念、原理与实现 3.1 搜索引擎原理 3.2 Lucene 倒排索引核心原理 倒排…

GoT:用大语言模型解决复杂的问题

GoT&#xff1a;用大语言模型解决复杂的问题 摘要介绍背景和符号表示语言模型和上下文学习Input-Output&#xff08;IO&#xff09;Chain of thought&#xff08;CoT&#xff09;Multiple CoTTree of thoughts&#xff08;ToT&#xff09; GoT框架推理过程思维变换聚合变换&…

手写数据库连接池

数据库连接是个耗时操作.对数据库连接的高效管理影响应用程序的性能指标. 数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配,管理和释放数据库连接.它允许应用程序重复使用一个现有的数据路连接,而不需要每次重新建立一个新的连接,利用数据库连接池将明显提升对数…

从零开始完整实现-循环神经网络RNN

一 简介 使用 pytorch 搭建循环神经网络RNN&#xff0c;循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是一类用于 处理序列数据的神经网络架构。与传统神经网络不同&#xff0c;RNN 具有内部循环结构&#xff0c;可以在处理序列数据时保持状态…

mysql文档--innodb中的重头戏--事务隔离级别!!!!--举例学习--现象演示

阿丹&#xff1a; 先要说明一点就是在网上现在查找的mysql中的事务隔离级别其实都是在innodb中的事务隔离级别。因为在mysql的5.5.5版本后myisam被innodb打败&#xff0c;从此innodb成为了mysql中的默认存储引擎。所以在网上查找的事务隔离级别基本上都是innodb的。并且支持事务…

Docker的数据管理(持久化存储)

文章目录 一、概述二、数据卷三、数据卷容器四、端口映射五、容器互联&#xff08;使用centos镜像&#xff09;总结 一、概述 管理 Docker 容器中数据主要有两种方式&#xff1a;数据卷&#xff08;Data Volumes&#xff09;和数据卷容器&#xff08;DataVolumes Containers&a…

C++基础入门

文章目录 前言一、C历史及发展1.C是什么2.C历史 二、开始C1.基础类型1.第一个简单的C程序2.命名空间1.命名空间的介绍2.命名空间的使用3.命名空间的using声明与using指示 3.初识输入输出操作4.引用1.引用概念2.引用的使用1.引用做参数2.引用做返回值 3.引用和指针的区别4.const…

dantax参数调优

dantax参数调优 1.speed调优 可能会导致数据倾斜 处理的速度不同&#xff0c;可能会导致job非常慢 举例子&#xff0c;比如总限速是每秒100条record&#xff0c;其中第一个channel速度是每秒99条record&#xff0c;第二个channel是每秒1条record&#xff0c;加起来是每条100条…

执行上下文-通俗易懂版

(1) js引擎执行代码时候/前&#xff0c;在堆内存创建一个全局对象&#xff0c;该对象 所有的作用域&#xff08;scope&#xff09;都可以访问&#xff0c;里面会包含Date、Array、String、Number、setTimeout、setInterval等等&#xff0c;其中还有一个window属性指向自己 (2…

Kafka3.0.0版本——文件清理策略

目录 一、文件清理策略1.1、文件清理策略的概述1.2、文件清理策略的官方文档1.3、日志超过了设置的时间如何处理1.3.1、delete日志删除&#xff08;将过期数据删除&#xff09;1.3.2、compact日志压缩 一、文件清理策略 1.1、文件清理策略的概述 Kafka 中默认的日志保存时间为…

QuantLib学习笔记——看看几何布朗运动有没有股票走势的感觉

⭐️ 小鹿在乱撞 小伙伴们肯定看过股票的走势&#xff0c;真是上蹿下跳啊&#xff0c;最近小编学了一丢丢关于随机过程和QuantLib的知识&#xff0c;想利用随机过程生成一个类似股票价格走势的图&#xff0c;安排&#xff01;&#xff01;&#xff01; ⭐️ 随机过程 随机过程…

Python 之使用Numpy库来加载Numpy(.npy)文件并检查其内容

文章目录 总的介绍data.dtypedata.shapedata.ndimdata.size 总的介绍 要判断一个Numpy&#xff08;.npy&#xff09;文件的数据集类型&#xff0c;你可以使用Python中的Numpy库来加载该文件并检查其内容。以下是一些常见的步骤&#xff1a; 导入Numpy库&#xff1a; 首先&…

Kruise Rollout:基于 Lua 脚本的可扩展流量调度方案

作者&#xff1a;潘梦源 前言 Kruise Rollout [ 1] 是 OpenKruise 社区开源的渐进式交付框架。Kruise Rollout 支持配合流量和实例灰度的金丝雀发布、蓝绿发布、A/B Testing 发布&#xff0c;以及发布过程能够基于 Prometheus Metrics 指标自动化分批与暂停&#xff0c;并提供…

SSM - Springboot - MyBatis-Plus 全栈体系(四)

第二章 SpringFramework 四、SpringIoC 实践和应用 1. SpringIoC / DI 实现步骤 1.1 配置元数据&#xff08;配置&#xff09; 配置元数据&#xff0c;既是编写交给SpringIoC容器管理组件的信息&#xff0c;配置方式有三种。基于 XML 的配置元数据的基本结构&#xff1a; …