hive学习记录

一、Hive的基本概念

定义:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。Hive将HQL(Hive Query Language)转化成MapReduce程序或其他分布式计算引擎(如Tez、Spark)的任务进行计算。

数据存储:Hive处理的数据存储在HDFS(Hadoop Distributed File System)上。

执行引擎:Hive的执行引擎可以是MapReduce、Tez或Spark等,这些引擎负责执行HiveQL查询生成的执行计划。

元数据存储:Hive的元数据(如表名、列名、表结构等)存储在Metastore中,Metastore默认使用Derby数据库,但通常推荐使用MySQL等关系型数据库来存储元数据,以便更好地支持并发和扩展性。

二、Hive的架构

Hive的架构主要包括以下几个核心组件:

用户接口:用户可以通过命令行接口(CLI)、Web接口(HWI)、JDBC/ODBC接口或Thrift接口与Hive进行交互。

驱动器(Driver):负责接收用户提交的查询,并将其解析、优化后生成执行计划。

编译器(Compiler):将HiveQL查询语句转换为一系列MapReduce任务或其他分布式计算引擎的任务。编译器包括解析器、优化器和执行计划生成器等部分。

执行引擎(Execution Engine):负责执行编译器生成的执行计划,将任务提交给Hadoop的作业调度器(如YARN)进行调度和执行。

元存储(Metastore):存储表的元数据,包括表名、列名、列类型、表所在的HDFS路径等。

三、Hive的特点

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

延伸性:Hive支持自定义函数(UDF),用户可以根据自己的需求来实现自己的函数。

容错性:即使节点出现错误,SQL仍然可以完成执行。

易用性:Hive提供了类SQL的查询语言HiveQL,使得用户能够方便地进行数据查询和分析,降低了学习成本。

四、Hive的优缺点

优点:

操作接口采用类SQL语法,提供快速开发的能力。
避免了编写复杂的MapReduce程序,减少了开发人员的学习成本。
支持自定义函数,用户可以根据自己的需求来实现满足自己需求的函数。
集群可以自由扩展并且有良好的容错性。

缺点:

查询延迟较高,不适合对实时性要求高的场合。
Hive自动生成的MapReduce作业通常不够智能化,调优比较困难。
迭代算法在Hive中的实现较为困难,因为MapReduce任务之间独立,无法直接共享状态。
五、Hive的应用场景

Hive广泛应用于日志分析、数据仓库、多维度数据分析等领域。例如,大部分互联网公司使用Hive进行日志分析,统计网站的PV(页面浏览量)、UV(独立访客)等数据。

六、Hive的查询优化

为了提高Hive的查询性能,可以采取以下优化策略:

选择合适的存储格式,如ORC(Optimized Row Columnar)格式,可以减少存储空间并提高查询速度。
使用Hive提供的查询优化技术,如谓词下推、索引、分区裁剪等。
合理配置Hive的执行引擎和资源管理策略,以提高查询效率。

 

你可能感兴趣的:(hive,学习,hadoop)