入手 Hive 需要知道的一些概念

本文解析了Hive作为基于Hadoop的数据仓库平台的角色,对比了HBase作为实时数据库的区别,解释了为何Hive安装需配合MySQL,并探讨了Hive性能测试方法与Spark对Hive的性能提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

Hive 是什么? 与 HBase有什么不同 ? 为什么安装Hive 需要 安装MySQL?

二、 需要 解决的问题如下

1. Hive 是什么?

Hive是一个基于Hadoop的数据仓库平台, Hive可以看成是从SQL到Map-Reduce的 映射器 。 它的框架图如下:

 

来张更清晰的图:

 

2. 与 HBase有什么不同

HBase是数据库(处理实时数据,实时性高,目前不支持SQL语句),而Hive 是数据仓库(处理离线数据)。

详细区别:https://blog.youkuaiyun.com/vipyeshuai/article/details/50847281

3. 为什么安装Hive 需要 安装MySQL?

默认情况下,Hive元数据保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。为了支持多用户多会话,则需要一个独立的元数据库,我们使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持。

那Hive的数据放在哪儿?

  • 数据在HDFS的warehouse目录下,一个表对应一个子目录。
  • 本地的/tmp目录存放日志和执行计划 
  • hive的元数据保存在MySQL 中(Derby )。

三、打通了以上概念后如同习武之人的任督二脉已通 。

四、深入思考

1. 怎么测试 Hive 性能? 有哪些BenchMark?

 a) HiBench:

配置文件 aggregation.conf  join.conf  scan.conf

各个运行文件:

~/HiBench/bin/workloads/sql/aggregation/:
hadoop  prepare  spark

~/HiBench/bin/workloads/sql/join/:
hadoop  prepare  spark

~/HiBench/bin/workloads/sql/scan/:
hadoop  prepare  spark

~/HiBench/bin/workloads/sql/scan/prepare/prepare.sh

~/HiBench/bin/workloads/sql/scan/hadoop/run.sh

b) TPC

2. Spark 是否 对Hive 有改进?

SparkSQL的前身是Shark,给熟悉RDBMS但又不理解MapReduce的技术人员提供快速上手的工具,hive应运而生,它是当时唯一运行在Hadoop上的SQL-on-hadoop工具。但是MapReduce计算过程中大量的中间磁盘落地过程消耗了大量的I/O,降低的运行效率,为了提高SQL-on-Hadoop的效率,Shark应运而生,但又因为Shark对于Hive的太多依赖(如采用Hive的语法解析器、查询优化器等等),2014年spark团队停止对Shark的开发,将所有资源放SparkSQL项目上

其中SparkSQL作为Spark生态的一员继续发展,而不再受限于Hive,只是兼容Hive;而Hive on Spark是一个Hive的发展计划,该计划将Spark作为Hive的底层引擎之一,也就是说,Hive将不再受限于一个引擎,可以采用Map-Reduce、Tez、Spark等引擎。

 hive on spark大体与SparkSQL结构类似,只是SQL引擎不同,但是计算引擎都是spark!敲黑板!这才是重点! hive on spark大体与SparkSQL结构类似,只是SQL引擎不同,但是计算引擎都是spark!

sparksqlhive on spark时间差不多,但都比hive on mapreduce快很多,官方数据认为spark会被传统mapreduce10-100

参考:

http://www.itfly.pc-fly.com/article/p-hive%E6%95%B0%E6%8D%AE%E5%BA%93.html

https://blog.youkuaiyun.com/mrlevo520/article/details/76696073

学习 Hive 数据仓库工具是一个系统性的过程,需要从基础知识、环境搭建、SQL 查询语言、数据建模等多个方面入手。以下是详细的学习指南和入门教程建议。 ### 基础知识准备 在开始学习 Hive 之前,应具备一定的 Hadoop 生态系统基础,包括对 HDFS 和 MapReduce 的基本理解。Hive 是构建在 Hadoop 之上的数据仓库工具,主要用于大规模数据集的存储、查询与分析[^1]。此外,熟悉 SQL 语言对于快速上手 Hive 是非常有帮助的,因为 HiveQL 是一种类似于 SQL 的查询语言,旨在让熟悉 SQL 的用户能够轻松地进行大数据处理[^4]。 ### 环境搭建 为了实践 Hive 的功能,首先需要搭建一个合适的开发环境。推荐使用以下配置作为起点: - **Java**:1.8.0_171 或更高版本 - **Hadoop**:2.7.6 版本 - **Hive**:1.2.1 稳定版本(主流版本) - **MySQL**:5.7 或其他支持 JDBC 的数据库用于元数据存储[^2] 安装步骤通常包括解压 Hive 发行包、配置 `hive-site.xml` 文件以设置数据库连接信息、以及确保 Hadoop 配置文件正确无误。完成这些后,可以通过运行简单的 HiveQL 命令来验证安装是否成功。 ### 学习 HiveQL 一旦环境就绪,就可以开始学习如何编写 HiveQL 查询了。这应该从最基础的数据定义语句(如 CREATE TABLE)和数据操作语句(如 LOAD DATA INTO TABLE)开始。随着技能的增长,可以逐步探索更复杂的特性,比如分区表、桶表、视图等高级主题。例如,创建一个简单的外部表并加载数据的示例代码如下: ```sql CREATE EXTERNAL TABLE IF NOT EXISTS logs ( id INT, log_message STRING, timestamp BIGINT ) LOCATION '/user/hive/logs'; ``` 接着,你可以通过下面这条命令向这个表中加载数据: ```sql LOAD DATA INPATH '/path/to/local/file' INTO TABLE logs; ``` ### 数据建模与优化 深入学习时,重点在于掌握如何有效地组织数据结构以便高效查询。这涉及到星型模式或雪花模式的设计原则,以及了解维度建模的概念。同时,也要学会利用索引、压缩技术以及其他性能调优技巧来提高查询效率。分层建模是构建高效数据仓库的关键环节之一,它可以帮助企业更好地管理和分析其海量业务数据[^5]。 ### 实战项目 最后但同样重要的是参与实际项目的开发。尝试基于真实世界场景设计解决方案,比如日志数据分析系统或者销售报告生成器。这样的练习不仅有助于巩固所学知识,还能增强解决复杂问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值