Apache Hive 数据仓库软件方便了使用 SQL 读取、写入和管理驻留在分布式存储中的大 型数据集。结构可以投影到已经存储的数据上。提供命令行工具和 JDBC 驱动程序将用户连 接到 Hive。
Hive 产生的原因:非 java 编程者通过 SQL 语句对 hdfs 的数据做 mapreduce 操作。
• Hive 的架构
– (1)用户接口主要有三个:CLI,JDBC/ODBC 和 WebUI。其中最常用的是 CLI, Cli 启动的时候,会同时启动一个 Hive 副本。Client 是 Hive 的客户端,用 户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive。
– (2)Hive 将元数据存储在数据库中,如 mysql、derby(hive 自带的内存数 据库)。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是 否为外部表等),表的数据所在目录等。
– (3)解释器(SQL Parser)、编译器(Compiler)、优化器(Optimizer)完 成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成 的查询计划存储在 HDFS 中,并在随后有执行器(Executor)调用 MapReduce 执行。
– (4)Hive 的数据存储在 HDFS 中,大部分的查询、计算由 MapReduce 完成(包 含*的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。
– select id,name from psn;
• Hive 的架构
– 编译器将一个 Hive SQL 转换操作符
– 操作符是 Hive 的最小的处理单元
– 每个操作符代表 HDFS 的一个操作或者一道 MapReduce 作业
• Operator(操作符)
– Operator 都是 hive 定义的一个处理过程 – Operator 都定义有:
– protected List
– protected List
– protected boolean done; // 初始化值为 false
ANTLR 词法语法分析工具解析 hql



