HBase、Hive、Hdfs的关系
初入大数据的坑,HBase和Hive搞得懵懵懂懂,此blog仅作为笔记,帮助自己理顺思路。
一. 一副简明扼要的说明:
二. Hive:
- hive有3种搭建模式:
- Hive不支持更改数据的操作,Hive基于数据仓库,文件只能追加,不能删除修改,可以获取到数据在各时点的状态。
- 提供静态数据的动态查询,使用类SQL语言,底层经过编译转为MapReduce程序,在Hadoop上运行,数据存储在HDFS上。但Hive自带了MR的优化器
三. HBase:需要随机、实时读写访问大数据时,(十亿级别的行百万级别的列)。Hbase是面向列的、开源的、分布式的、有版本概念的、非关系型数据库。依赖HDFS存储原始数据。 - 与mysql之类的区别:个人理解是相当于一个分布式的数据库,充分利用了顺序读写,适用于高并发场景。
- 特点:高可靠性,高性能,面向列,可伸缩,实时读写的分布式数据库。
主要用来存储非结构和和半结构化(json)的松散数据。
利用HDFS作为文件存储系统,利用MR来处理Hbase中的海量数据,利用ZK作为分布式协同服务。
与hive的区别,有数据库的schema,元数据等,可实现高效率的实时增删改查 - HBase的数据模型:
- HBase的系统图:
- Hbase在修改和删除时,仅能append以确保效率,内部有minor compact和major compact机制,可以整理数据。
四. HDSF:HDFS是GFS的一种实现,他的完整名字是分布式文件系统,类似于FAT32,NTFS,是一种文件格式,是底层的。
Hive与Hbase的数据一般都存储在HDFS上。Hadoop HDFS为他们提供了高可靠性的底层存储支持。