HBase: NoSQL数据库,基于HDFS的分布式数据库,理论上支持无限横向扩展, HBase由HMaster与RegionServer组成,HMaster负责协调调度RegionServer进行数据处理,RegionServer负责数据的增删改查操作,RegionServer由多台分布在DataNode的组成,可以有多个。由HMaster负责RegionServer的调度情况,当RegionServer出现异常情况,HMaster进行对MetaRegionServer中的元数据进行更新管理。 当HBase中表的数据不断变大时,表中数据会进行Region分区,分为Region1,Region2...等,RegionServer1负责Region1,RegionServer2负责Region2等;每个RegionServer负责哪个Region的数据区由MetaRegionServer管理,MetaRegionServer运行在多个RegionServer中的任意一个。 HBase数据存储在HDFS上的存储也是按照层级来管理的,不同的库对应不同的目录,库下不同的表亦对应不同的目录,表下不同的Region对应不同的目录,Region下存放这HBase上的数据,HBase的数据是经过特殊处理的,所以直接看不到数据内容 HMaster支持HA高可用,所以在HBase集群对应的HMaster和RegionServer都启动后,在其他的RegonServer上启动HMaster,则该HMaster为StandBy,第一次启动的为Active。 HBase底层接口处理起来会比较吃力,一般处理方式是应用其他工具进行处理,如Flume,Sqoop MySQL与Hive的区别 MySQL:数据存储会受到限制,可以增删改查数据 Hive:1. 只能进行查询数据,不能进行该数据,可以根据查询结果进行建表存储数据 2. 基于HDFS,支持分布式存储,可以无限扩容 3. 基于MapReduce,支持大数据运算 HBase与MySQL的区别 MySQL:行式存储,适合处理联机事务 HBase:列式存储,适合处理对单列数据(列族归类的数据)进行快缩索引查询 HBase与Hive的区别 HBase:数据库,数据分布式存储在HDFS上的DataNode节点上,根据对数据进行增删改查等。 Hive:数据仓库,数据存储在HDFS上,与DataNodata 关系不大,管理历史数据,数据量会非常庞大,每天都会进来大量数据,不能进行更新删除操作, HBase概念 HMaster: 协调管理RegionServer服务状态及元数据管理 RegionServer: 负责对数据表的增删改差操作,主要负责单个Region的数据管理 RegionData:数据块 MetaRegionServer: 对RegionSever上对应的Region数据块进行索引管理 database 数据库 table: 数据表,定义表时需要指定列族,也可以再表建立后进行列族的管理 RowKey:行键,表示一行数据,一行数据中包含列族定义的东西, ColumnFamily: 列族,对业务进行分类后,可以根据业务对数据进行分类,把业务类似的一类数据分为一个列族,不同的业务可以分为不同的列族。分列族的主要目的是方便后期对数据的高速索引. CELL: 数据单元,保存单个KV字段. 运行逻辑: HMaster协调管理RegionServe,RegionServer主要负责处理Region数据块的处理,MetaRegionServer管理RegionServer对应Region数据的元数据信息。RegionServer服务异常时,HMaster进行元数据迁移,保证对Region数据的管理由对应的RegionServer来管理。 MetaRegionServer管理的元数据信息保存在HDFS上。 Client进行数据处理时,首先根据查询条件,通过MetaRegionServer获取到查询对应的RegionServer上,然后进行数据处理,Client不与HMaser进行交互,所以HMaser状态可以异常,不影响Client对RegionServer的使用。但是当RegionServer异常时,HMaster亦由于异常无法感知RegionServer的状态,这样会影像Client的数据处理。 HBase部署 1. 首先需要部署HDFS,对MapReduce不特殊要求,可以不部署 2. HBase上,HMaster及RegionServer,MetaRegionServer都是通过ZooKeeper来进行服务感知的,所以需要ZooKeeper部署, 3. 安装Java JDK/JRE 4. 在每个对应的DataNode上 解压HBase 5. 修改Hbase-env.xml (JAVA_HOME,ZK_ENABLE ),HBase-site.xml(zk路径) 6. 启动集群 7. 启动HMaster(StandBy),保证HA,亦可以不启用 HBase Web端口 16010 HBase操作 DDL: create table 创建表 drop table 删除表 modify table 修改表 DML: put data 增加数据 delete data 删除数据 get data 获取数据 scan data 查询数据 HBaseClient 交互式客户端 Hbase shell 直接启动 JavaClient DDL: 1. 获取Connection 2. 获取Admin DML: 1. 获取Connection 2. 获取Table