
# Hive应用开发简介
#### Hive介绍
Hive是一个开源的，建立在Hadoop上的数据仓库框架，提供类似SQL的HQL语言操作结构化数据，其基本原理是将HQL语言自动转换成MapReduce任务或Spark任务，从而完成对Hadoop集群中存储的海量数据进行查询和分析。
Hive主要特点如下：
- 通过HQL语言非常容易地完成数据提取、转换和加载（ETL）。
- 通过HQL完成海量结构化数据分析。
- 灵活的数据存储格式，支持JSON、CSV、TEXTFILE、RCFILE、ORCFILE、SEQUENCEFILE等存储格式，并支持自定义扩展。
- 多种客户端连接方式，支持JDBC接口。
Hive主要应用于海量数据的离线分析（如日志分析，集群状态分析）、大规模的数据挖掘（用户行为分析，兴趣分区，区域展示）等场景下。
为保证Hive服务的高可用性、用户数据的安全及访问服务的可控制，在开源社区的Hive-3.1.0版本基础上，Hive新增如下特性：
- 数据文件加密机制。
开源社区的Hive特性，请参见<https://cwiki.apache.org/confluence/display/hive/designdocs>。
 #### 常用概念
- **客户端**
  客户端直接面向用户，可通过Java API、Thrift API访问服务端进行Hive的相关操作。
  
- **HQL语言**
  Hive Query Language，类SQL语句。
  
- **HCatalog**
  HCatalog是建立在Hive元数据之上的一个表信息管理层，吸收了Hive的DDL命令。为MapReduce提供读写接口，提供Hive命令行接口来进行数据定义和元数据查询。基于MRS的HCatalog功能，Hive、MapReduce开发人员能够共享元数据信息，避免中间转换和调整，能够提升数据处理的效率。
  
- **WebHCat**
  WebHCat运行用户通过Rest API来执行Hive DDL，提交MapReduce任务，查询MapReduce任务执行结果等操作。
  
 
