做行业门户网站注意什么,糗事百科 wordpress,淘宝关键词搜索排名,零基础学习做网站【图解大数据技术】Hive、HBase Hive数据仓库Hive的执行流程Hive架构数据导入Hive HBaseHBase简介HBase架构HBase的列式存储HBase建表流程HBase数据写入流程HBase数据读取流程 Hive
Hive是基于Hadoop的一个数据仓库工具#xff0c;Hive的数据存储在HDFS上#xff0c;底层基于… 【图解大数据技术】Hive、HBase Hive数据仓库Hive的执行流程Hive架构数据导入Hive HBaseHBase简介HBase架构HBase的列式存储HBase建表流程HBase数据写入流程HBase数据读取流程 Hive
Hive是基于Hadoop的一个数据仓库工具Hive的数据存储在HDFS上底层基于MapReduce进行数据计算。Hive将HDFS中结构化的数据文件映射成一张表然后提供类SQL的查询功能然后将SQL翻译成MapReduce并执行可以解决海量结构化日志的统计查询。 数据仓库
数据仓库的作用是存储大量的历史数据然后给各种BI报表、其他图形化界面或生成各种报告的系统提供数据分析统计的功能。 数据仓库的数据来源一般是各种业务系统的日志文件或者数据库的历史数据等经过数据清洗后到导入到数据仓库。然后使用BI报表等各种非实时性的统计分析应用对数据仓库中的数据做统计分析。
数据仓库本质也是数据库但是它和传统的关系型数据库还是有区别的。关系型数据库一般给业务系统对数据进行CRUD等OLTP操作而数据仓库则更多的是给分析型应用进行OLAP操作。 而且关系型数据库一般不会存储大量的历史数据而是存储近期某个时间范围内的业务数据而数据仓库则会存储大量的历史数据。 Hive的执行流程 Hive内部封装了各种MapReduce模板每个MapReduce都与一种SQL类型相对于。当客户端提交sql到hive执行时hive会根据sql匹配出对应的MapReduce类型然后执行MapReduce程序获取返回结果然后把返回结果返回给客户端。
Hive架构 大体架构和MySQL还是有几分相似。
Client客户端工具比如CLI命令行工具JDBC等。Metastore存储Hive的元数据信息比如表信息表的列信息还有表对应的数据在HDFS中的目录。解析器解析器解析sql为抽象语法树AST。编译器根据AST生成执行计划。优化器对执行计划进行优化。执行器根据执行计划生成相应的MapReduce并执行。
数据导入Hive 我们需要把数据导入到Hive中使其在Hive中映射为表才能通过Hive对数据进行统计分析。
导入的方式有好几种可以是本地文件HDFS文件或者通过sqoop等类似的工具从其他数据源导入。 其中Sqoop是Hadoop和关系型数据库间的传输工具比如可以把Mysql中的数据导入到Hive中。 HBase
HBase简介 HBase是一个用于存储海量非结构化或半结构化数据的列示存储数据库支持高性能写入准实时查询。
HBase底层基于HDFS实现了PB级别的海量数据存储。通过缓存和预写日志技术实现了高性能写入和低延迟查询。通过Zookeeper的监控通知HMaster故障转移实现了高可靠性。通HMaster接收RegionServer注册以及HMaster的RegionServer集群负载均衡能力实现高扩展性。
HBase架构
HBase的架构与组件间的关系如下图 大体由Client、Zookeeper、HMaster、HRegionServer四个角色组成加上HDFS就是五个。
Client会通过zk读取meta表Region所在的位置然后请求对应该Region所在RegionServer获取元数据信息然后通过元数据得知目标Region所在位置再对目标Region所在RegionServer发起读写操作。
HRegionServer负责数据的存储和处理客户端的读写请求。HRegionServer中有多个HRegion每个Region对应一个表的一个分片Region中又有多个Store每个Stroe对应表中一个列族。然后Stroe中有一个MemStore是Store的缓存会缓存客户端读写的数据。StoreFile封装了HFileHFile通过HDFS客户端工具把具有一定格式的文件数据写入到HDFS中。HLog是预写日志当HRegionServer接收到客户端的写请求时把数据存储到MemStore中然后在HLog中记录日志由于HLog是顺序写速度很快。
HRegionServer启动时向HMaster注册HMaster接收HRegionServer的注册并进行HRegionServer的数据存储的负载均衡HMaster接收到Zookeeper发来的某个HRegionServer故障的通知后负责HRegionServer的故障转移HMaster接收到Client的建表请求后写入元数据到meta表对应的Region然后记录Region所在位置的HRegionServer到Zookeeper。
Zookeeper负责监控HMaster和HRegionServer保证它们的高可用当HRegionServer故障时会通知HMasterZookeeper还存储meta表Region的位置Client可以通过Zookeeper得知meta表Region所在的HRegionServer。
HBase的列式存储 RowKey相当于是MySQL中的主键表中的数据根据RowKey进行排序我们可以通过RowKey查询指定的某一行或进行范围查询。ColumnFamily列族在建表的时候需要预先声明列族一个列族对应一个物理文件。Column列列无需在建表的时候预先指定可以随意增加并且查询的时候可以指定列名进行查询。 timestamp时间戳同一个RowKey的不同版本的数据。
HBase建表流程 Client通过rpc调用HMaster进行表创建。HMaster根据集群存储情况确定一个RegionServer存储新建表的数据然后通知该RegionServer创建Region。HMaster把表的元数据信息写入meta表对应的Region中同时如果该Region是新建的话会在zk中更新meta表所在位置的信息。
HBase数据写入流程 Client通过ZK得知meta表所在位置。Client访问meta表对应的Region获取目标用户表的元数据得知该表数据存储在哪个Region上。Client访问目标Region写入数据。数据写入MemStore并记录HLog日志当MemStore达到阈值后才会flush到StoreFile中StoreFile通过HFile把数据写入到HDFS。
HBase数据读取流程 Client通过ZK得知meta表所在位置。Client访问meta表对应的Region获取目标用户表的元数据得知该表数据存储在哪个Region上。Client访问目标Region读取数据先尝试从MemStore中读取要查询的数据如果没有再从BlockCache中读取BlockCache存储了之前查询返回的数据还是没有那就要通过HFile从HDFS中取了。