2025年Hive基础概念、安装部署与基本使用

Hive基础概念、安装部署与基本使用1 Hive 简介 1 1 什么是 Hive Hives 是基于 Hadoop 的一个数据仓库工具 可以将结构化的数据文件映射为一张数据库表 并提供类 SQL 查询功能 1 2 为什么使用 Hive 直接使用 Hadoop 面临人员学习成功太高 项目周期要求太短 MapReduce 实现复杂查询逻辑开发难度太大等问题

大家好,我是讯享网,很高兴认识大家。

1. Hive简介

1.1 什么是Hive

 Hives是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

1.2 为什么使用Hive

① 直接使用Hadoop面临人员学习成功太高、项目周期要求太短、MapReduce实现复杂查询逻辑开发难度太大等问题;

② Hive操作接口采用类SQL语法,提供快速开发的能力,避免了去写MapReduce,减少开发人员的学习成本,扩展功能很方便。

1.3 Hive的特点

可扩展:Hive可以自由的扩展集群的规模,一般情况下不需要重启服务;

延展性:Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数;

容错:良好的容错性,节点出现问题SQL仍可完成执行;

2. Hive架构

2.1 架构图

2.2 基本组件及其基本功能

用户接口:主要有三个,即CLI、JDBC/ODBC、WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的Java实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。

元数据存储:通常将元数据存储在关系数据库如mysql,derby中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

解释器、编译器、优化器、执行器。它们完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成、生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。

3. Hive与Hadoop的关系

Hive利用HDFS存储数据,利用MapReduce查询数据

图省略

4. Hive与传统数据库对比


讯享网

总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析。

5. Hive与Hbase对比

两者的共同点:

hbase与hive都是架构在hadoop之上的,都是用hadoop作为底层存储。

两者的区别:

1. Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目;

2. 操作RMDB数据库,如果是全表扫描,就用Hive+hadoop,如果是索引访问,就用HBase+Hadoop;

3. Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。

4. Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑;

5. Hive借用hadoop的MapReduce来完成一些hive中的命令的执行;

6. HBase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作;

7. HBase是列存储。所以HBase可以对数据进行增删改等操作,但是Hive是行的,只能追加数据;

8. hdfs作为底层存储,hdfs是存放文件的系统,而HBase负责组织文件;

6. Hive的数据存储

(1) Hive中所有的数据都存储在HDFS中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等);

(2) 只需要在创建表的时候告诉Hive数据中的列分隔符和行分隔符,Hive就可以解析数据;

(3) Hive中包含以下数据模型:DB、Table、External Table、Partition、Bucket。

     a) DB:在HDFS中表现为${hive.metastore.warehouse.dir}目录下一个文件夹;

     b) Table:在HDFS中表现所属DB目录下一个文件夹;

     c) External Table:外部表,与Table类似,不过其数据存放位置可以在任意指定路径。

          普通表:删除表后,HDFS上的文件都删了;

          External外部表删除后,HDFS上的文件没有删除,只是把文件删除了。

     d) Partition:在HDFS中表现为Table目录下的子目录;

     e) Bucket:桶,在HDFS中表现为同一个表目录下根据hash散列之后的多个文件,会根据不同的文件把数据放到不同的文件中。

7. Hive的安装部署

安装的三种模式:

内嵌模式:元数据保持在内嵌的derby模式,只允许一个会话连接
本地独立模式:在本地安装Mysql,把元数据放到Mysql内
远程模式:元数据放置在远程的Mysql数据库

1. 利用Xftp工具将hive二进制安装包上传到HADOOP集群第一个节点node1上的/opt/uploads/目录,并解压,只需安装在hadoop集群上的其中一个节点就行

    

   输入命令:  tar -zxvf apache-hive-2.2.0-bin.tar.gz 

   移动apache-hive-2.2.0-bin到/opt/app/目录: mv apache-hive-2.2.0-bin  /opt/app/

   

   

2. 配置环境变量,编辑/etc/profile,并生效环境变量,输入如下命令:

sudo vi /etc/profile

添加如下内容:

export HIVE_HOME=/opt/app/apache-hive-2.2.0-bin

export PATH=${HIVE_HOME}/bin:$PATH

source /etc/profile

3. 修改hive配置文件

进入hive配置文件的目录,cd /opt/app/apache-hive-2.2.0-bin/conf/

修改hive-env.sh文件,将以下内容写入到hive-env.sh文件中:

export HADOOP_HOME=/opt/app/hadoop-2.9.0
export JAVA_HOME=/usr/lib/java/jdk1.8.0_151
export HIVE_HOME=/opt/app/apache-hive-2.2.0-bin

4. 修改hive-log4j2.properties.template文件复制一份,重命名为hive-log4j2.properties

进入hive配置文件的目录,cd /opt/app/apache-hive-2.2.0-bin/conf/

 cp  hive-log4j2.properties.template  hive-log4j2.properties

5. 配置远程登录模式

touch hive-site.xml

将以下信息写入到hive-site.xml文件中,内容如下:

<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.187.200:3306/hive?createDatabaseIfNotExist=true&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>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>admin</value> <description>password to use against metastore database</description> </property> </configuration> 

讯享网
小讯
上一篇 2025-03-06 09:59
下一篇 2025-03-21 22:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/14733.html