Hadoop基础
学习转载自:https://www.cnblogs.com/binarylei/p/8903601.html
https://blog.csdn.net/yuan_xw/article/details/50003197
Hive的基础
定义:Hive是基于Hadoop的数据仓库工具,使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算。
解决的问题:
1、hadoop学习成本高
与Hadoop的关系:
架构:
HiveQL 通过命令行或者客户端提交,经过 Compiler 编译器,运用 MetaStore 中的元数 据进行类型检测和语法分析,生成一个逻辑方案(Logical Plan),然后通过的优化处理,产生 一个 MapReduce 任务。
1、用户接口
shell/CLI:终端命令行,采用交互形式使用 Hive 命令行与 Hive 进行交互
jdbc/odbc:是 Hive 的基于 JDBC 操作提供的客户端
webUI:通过浏览器访问 Hive
2、跨语言服务
thrift server 提供了一种能力,让用户可以使用多种不同的语言来操纵hive
3、底层的Driver
驱动器Driver,编译器Compiler,优化器Optimizer,执行器Executor
Driver 组件完成 HQL 查询语句从词法分析,语法分析,编译,优化,以及生成逻辑执行 计划的生成。生成的逻辑执行计划存储在 HDFS 中,并随后由 MapReduce 调用执行
Hive 的核心是驱动引擎, 驱动引擎由四部分组成:
(1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)
(2) 编译器:编译器是将语法树编译为逻辑执行计划
(3) 优化器:优化器是对逻辑执行计划进行优化
(4) 执行器:执行器是调用底层的运行框架执行逻辑执行计划
4、元数据存储系统
Hive 中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和 外部表),表的数据所在目录。
Metastore 默认存在自带的 Derby 数据库中。缺点就是不适合多用户操作,并且数据存 储目录不固定。数据库跟着 Hive 走,极度不方便管理
解决方案:通常存我们自己创建的 MySQL 库(本地 或 远程)
Hive 和 MySQL 之间通过 MetaStore 服务交互
转载自:https://www.cnblogs.com/qingyunzong/p/8707885.html
Hbase的基础
定义:大数据库,支持读写
表结构解析:
1、Rowkey:主键(唯一区分一行数据)
2、ColumnFamily:列族(包含多个列)
Hbase表的创建的时候就必须指定列族。就像关系型数据库创建的时候必须指定具体的列是一样的。
3、TimeStamp:版本控制
TimeStamp对Hbase来说至关重要,因为它是实现Hbase多版本的关键。在Hbase中使用不同的timestame来标识相同rowkey行对应的不通版本的数据。
4、单元格(Cell)
由{rowkey, column( = + ), version} 唯一确定的单元。 Cell 中的数据是没有类型的,全部是字节码形式存贮。
更多学习可参照:https://www.cnblogs.com/qingyunzong/