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

news2024/11/28 23:31:34

文章目录

    • 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.coloradmin.cn/o/975692.html

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

相关文章

elasticsearch的搜索补全提示

当用户在搜索框输入字符时&#xff0c;我们应该提示出与该字符有关的搜索项 拼音分词器 下载 要实现根据字母做补全&#xff0c;就必须对文档按照拼音分词&#xff0c;GitHub上有拼音分词插件 GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin…

儿童玩具音乐芯片方案,6通道midi播放语音芯片,WT588F02B-8S

随着科技的不断进步&#xff0c;儿童玩具行业也在不断演化。如今&#xff0c;儿童们期待的不仅仅是有趣的外观&#xff0c;还有令人惊叹的音乐和声音效果。为了满足这一需求&#xff0c;深圳唯创知音研发了WT588F02B-8S&#xff0c;一款创新的6通道MIDI播放语音芯片&#xff0c…

手写Mybatis:第18章-一级缓存

文章目录 一、目标&#xff1a;一级缓存二、设计&#xff1a;一级缓存三、实现&#xff1a;一级缓存3.1 工程结构3.2 一级缓存类图3.3 一级缓存实现3.3.1 定义缓存接口3.3.2 实现缓存接口3.3.3 创建缓存KEY3.3.4 NULL值缓存key 3.4 定义缓存机制、占位符和修改配置文件3.4.1 定…

Jrebel与Xrebel教学

简介 JRebel和XRebel是两个非常有用的工具&#xff0c;可以显著提升Java开发人员的生产力和应用程序性能。 JRebel是一个强大的Java开发工具&#xff0c;它允许开发人员在不重新启动应用程序的情况下进行代码修改和调试。传统上&#xff0c;每次修改Java代码都需要重新编译和重…

bat批处理——统计当前文件夹下的所有文件名

一、在当前文件夹下建立XX.txt文件&#xff0c;将指令dir *.* /b/s>test.txt写到XX.txt文件中 测试文件夹目录及文件结构图&#xff1a; 指令说明&#xff1a; dir *.* /b/s>test.txt /*** 此部分为注释内容* dir 获取当前目录下的目录及文件* *.* 对文件进行筛选&…

ShopXO商城系统文件上传0Day代审历程

Git仓库&#xff1a; https://github.com/gongfuxiang/shopxo简介&#xff1a; 两天攻防中&#xff0c;某政局内网横向发现多网段服务器&#xff0c;该服务器搭建了ShopXO商城系统(后来发现是开发临时搭建的&#xff0c;准备做二开用的)。结果花了30来秒审了个垃圾Day拿下该服…

应用于激光雷达、 激光测距、 脉冲测量的高精度时间测量(TDC)电路MS1205N

MS1205N 是一款高精度时间测量 (TDC) 电路&#xff0c;具有四通 道、多脉冲的采样能力、高速 SPI 通讯、多种测量模式&#xff0c;适合 于激光雷达和激光测距。 主要特点 ◼ 单精度模式 60ps ◼ 双精度模式 30ps ◼ 非校准测量范围 3.5ns(0ns) 至 25μs ◼ 单…

【LeetCode】202. 快乐数 - hash表 / 快慢指针

目录 2023-9-5 09:56:15 202. 快乐数 2023-9-5 09:56:15 关键是怎么去判断循环&#xff1a; hash表&#xff1a; 每次生成链中的下一个数字时&#xff0c;我们都会检查它是否已经在哈希集合中。 如果它不在哈希集合中&#xff0c;我们应该添加它。如果它在哈希集合中&#x…

docker安装mysql、clickhouse、oracle等各种数据库汇总

1&#xff1a;docker 安装mongo数据库并使用 官网&#xff1a;https://www.mongodb.com/docs/manual/ 安装 &#xff1a;https://www.zhihu.com/question/54602953/answer/3047452434?utm_id0 安装2&#xff1a;https://www.duidaima.com/Group/Topic/ArchitecturedDesign/91…

MySQL 全局锁、表级锁、行锁详解

前言 MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类&#xff0c;全局锁和表级锁是在server层实现的。 全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法&#xff0c;命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状…

华为产业链爆发,这次是系统级的革命

华为Mate60手机爆火&#xff0c;让产业链随之振奋。我们看到&#xff0c;这种改变将是持久的、系统的。 可能在未来20年&#xff0c;这种影响会持续。 01 华为产业链有多长 客观而言&#xff0c;华为产业链可以看作是由多个领域的企业和组织组成的网络&#xff0c;其中包括半…

Linux内核源码分析 (B.1)内核内存布局和堆管理

Linux内核源码分析 (B.1)内核内存布局和堆管理 文章目录 Linux内核源码分析 (B.1)内核内存布局和堆管理一、Linux内核内存布局二、堆管理 一、Linux内核内存布局 64位Linux一般使用48位来表示虚拟地址空间&#xff0c;45位表示物理地址。通过命令&#xff1a;cat/proc/cpuinfo。…

HTML5-4-表单

文章目录 表单属性表单标签输入元素文本域&#xff08;Text Fields&#xff09;密码字段单选按钮&#xff08;Radio Buttons&#xff09;复选框&#xff08;Checkboxes&#xff09;按钮&#xff08;button&#xff09;提交按钮(Submit)label标签 文本框&#xff08;textarea&am…

叉积方法,求点与线段的相对位置

叉积可以用来判断一个点在一条线段的哪个方向。 线段两个端点坐标为 A(x1, y1), B(x2, y2)&#xff0c; 假设点 P 的坐标为 (px, py)&#xff0c; 则向量 AP 和 BP 的坐标表示为&#xff1a; AP (px - x1, py - y1) BP (x2 - px, y2 - py) 叉积的计算公式为&#xff1a; (py…

基于jeecg-boot的flowable流程自定义业务退回撤回或驳回到发起人后的再次流程提交

更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 主要…

神仙级python入门教程(非常详细),从0到精通,从看这篇开始!

毫无疑问&#xff0c;Python 是当下最火的编程语言之一。对于许多未曾涉足计算机编程的领域「小白」来说&#xff0c;深入地掌握 Python 看似是一件十分困难的事。其实&#xff0c;只要掌握了科学的学习方法并制定了合理的学习计划&#xff0c;Python 从 入门到精通只需要一个月…

骨传导和入耳式哪个危害大一点?入耳式和骨传导哪种好?

骨传导和入耳式这两种耳机虽然都存在一定的危害&#xff0c;但是入耳式耳机对人体的危害要更大一点。 入耳式耳机直接塞进耳朵这种佩戴方式&#xff0c;会阻塞外部声音的进入&#xff0c;长时间使用可能会导致耳道感染&#xff0c;还可能对听力造成损伤&#xff0c;而骨传导耳…

RecyclerView源码解析(二):结合LinearLayout分析绘制流程

RecyclerView源码解析&#xff08;二&#xff09;:结合LinearLayout分析绘制流程 封面&#xff1a; 导言 上篇文章中主要已经介绍了RecyclerView的View的三大工作流程&#xff08;onMeasure&#xff0c;onLayout&#xff0c;onDraw&#xff09;&#xff0c;实际上看了上篇文章…

数学思维导图怎么绘制?这个详细绘制方法了解一下

数学思维导图怎么绘制&#xff1f;数学思维导图是数学学习中的一种重要辅助工具。在复杂的数学问题中&#xff0c;思维导图可以帮助学生更好地理解和组织各个知识点&#xff0c;从而更好地解决问题。在绘制数学思维导图时&#xff0c;有很多工具可供选择&#xff0c;下面就给大…

港陆证券:政策累积效应催生A股普涨行情 北证50指数创最大单日涨幅

周一&#xff0c;在活泼资本商场政策继续推出、不断累积的布景下&#xff0c;A股商场迎来久别的普涨行情。金融、白酒与资源类板块集体发力&#xff0c;带动沪深主板指数高开高走。北交所商场体现更为亮眼&#xff0c;北证50指数收盘大涨5.92%&#xff0c;创该指数前史最大单日…