您好,欢迎访问三七文档
HBase培训Hbase介绍及特点1Hbase逻辑视图2Hbase物理存储3Hbase系统架构4Hbaseshell的基本用法6Hbase安装部署与配置5HbaseJava实例7HBase–即HadoopDatabase,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。Hbase是基于GoogleBigtable开源实现。类似GoogleBigtable利用GFS作为其文件存储系统,HBase利用HadoopHDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用HadoopMapReduce来处理HBase中的海量数据;GoogleBigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。2006年底由PowerSet的ChadWalters和JimKellerman发起2008年成为ApacheHadoop的一个子项目现已作为产品被使用FacebookIntelYahoo阿里巴巴百度Hbase简介Hbase简介Hbase在Hadoop体系中的位置Hbase特点回顾一下传统关系型数据库:1.有事务的保障,ACID属性等2.丰富的数据类型和SQL操作3.严格的数据模型,行式存储关系型数据库在高并发、大数据应对方式:高并发措施:读写分离,分库分表带来数据一致性问题海量数据措施:分库分表实现复杂,后期迁移维护复杂,路由规则(DHT,自定义)高可用,可靠,伸缩措施:主备,主从,多主本身扩展性差,增加和节点宕机需要进行数据的迁移Hbase特点Hbase表特点:大表:一个表可以有上亿行,上百万列面向列:面向列族的存储,列族独立检索稀疏:对于空(null)的列,不占用存储空间……分布式数据库Hbase特点:基于列式的高效存储强一致的数据访问高可靠高性能可伸缩,自动切分、迁移SchemafreeHbase逻辑视图章节导读1.表存储结构2.Rowkey3.Columnsfamily4.TimeStamp5.Cell逻辑视图2.1表存储结构行键列列HBase以表的形式存储数据;表有行和列组成;列划分为若干个列族(rowfamily)2.2Rowkey逻辑视图RowKey:与nosql数据库们一样,rowkey是用来检索记录的主键。访问hbasetable中的行,只有三种方式:1、通过单个rowkey访问2、通过rowkey的range3、全表扫描Rowkey行键(Rowkey)可以是任意字符串(最大长度是64KB,实际应用中长度一般为10-100bytes),在hbase内部,rowkey保存为字节数组。存储时,数据按照Rowkey的字典序(byteorder)排序存储。设计key时,要充分利用排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)2.3Columnsfamily逻辑视图列簇hbase表中的每个列,都归属与某个列族。列族是表的schema的一部分(而列不是),必须在使用表之前定义。列名都以列族作为前缀。例如courses:history,courses:math都属于courses这个列族。访问控制、磁盘和内存的使用统计都是在列族层面进行的。实际应用中,列族上的控制权限能帮助我们管理不同类型的应用:我们允许一些应用可以添加新的基本数据、一些应用可以读取基本数据并创建继承的列族、一些应用则只允许浏览数据(甚至可能因为隐私的原因不能浏览所有数据)。2.4TimeStamp逻辑视图时间戳HBase中通过row和columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过时间戳来索引。时间戳的类型是64位整型。时间戳可以由hbase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。每个cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。为了避免数据存在过多版本造成的的管理(包括存贮和索引)负担,hbase提供了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。2.5Cell逻辑视图由{rowkey,column(=family+label),version}唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮。Cell的内容是不可分割的字节数组。关键字:无类型、字节码章节导读1.HTable2.HRegion3.Store4.HFile5.HLogHBase物理存储物理存储Hbase在物理存储中的一条记录如下:row,columnfamily,column,timestamp:value记录按照rowkey排序每插入一条会生成本条记录的时间戳(update)物理存储Table中的所有行都按照rowkey的字典序排列Table在行的方向上分割为多个HRegion3.1HTabe物理存储Region按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值时候,Hregion就会等分成两个新的Hregion。3.2HRegion物理存储HRegion是Hbase中分布式存储和负载均衡的最小单元。最小单元就表示不同的Hregion可以分步在不同的Hregionserver上。但一个HRegion是不会拆分到多个server上的。物理存储Hregion虽然是分布式存储的最小单元,但并不是存储的最小单元。在下层还有Store,而Store以Hfile的格式保存在HDFS上3.3Store物理存储Hfile格式3.3HFileHFile分为6部分DataBlock段-保存表中的数据,这部分可以被压缩。MetaBlock段(可选的)-保存用户自定义的kv对,可以被压缩。FileInfo段-Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。DataBlockIndex段-DataBlock的索引。每条索引的key是被索引的block的第一条记录的Key。MetaBlockIndex段(可选的)-MetaBlock的索引。Trailer-这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先读取Trailer,Trailer保存了每个段的起始位置(段的MagicNumber用来做安全check),然后,DataBlockIndex会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个block读取到内存中,再找到需要的key。DataBlockIndex采用LRU机制淘汰。HFile的DataBlock,MetaBlock通常采用压缩方式存储,压缩之后可以大大减少网络IO和磁盘IO,随之而来的开销当然是需要花费cpu进行压缩和解压缩。目标Hfile的压缩支持两种方式:Gzip,Lzo。3.3Hlog物理存储Hlog(WALLog)WAL意为Writeahead,类似mysql中的binlog,用来做灾难恢复只用,Hlog记录数据的所有变更,一旦数据修改,就可以从log中进行恢复。每个RegionServer维护一个Hlog,而不是每个Region一个。这样不同region(来自不同table)的日志会混在一起,这样做的目的是不断追加单个文件相对于同时写多个文件而言,可以减少磁盘寻址次数,因此可以提高对table的写性能。带来的麻烦是,如果一台regionserver下线,为了恢复其上的region,需要将regionserver上的log进行拆分,然后分发到其它regionserver上进行恢复。HLog文件就是一个普通的HadoopSequenceFile,SequenceFile的Key是HLogKey对象,HLogKey中记录了写入数据的归属信息,除了table和region名字外,同时还包括sequencenumber和timestamp,timestamp是”写入时间”,sequencenumber的起始值为0,或者是最近一次存入文件系统中sequencenumber。HLogSequeceFile的Value是HBase的KeyValue对象,即对应HFile中的KeyValue.系统架构物理部署系统架构逻辑结构图系统架构Client访问hbase的接口,维护着region位置的缓存信息Zookeeper保证任何时候,集群中只有一个master存储所有Region的寻址入口实时监控regionserver的状态。将上下线信息通知master存储hbase的schema,包括有哪些table,每个table有哪些columnfamily系统架构Master为Regionserver分配region负载regionserver的负载均衡发现失效的regionserver并重新分配其上的regionGFS上的垃圾文件回收处理schema更新请求RegionServer维护master分配给它的region,处理IO请求负责切分过大的region,可以看到client访问hbase上数据的过程并不需要master参与Hbase安装部署与配置章节导读1.hbase单机安装部署与配置2.hbase分布式安装部署与配置Hbase安装部署与配置5.1Hbase单机安装部署与配置安装的前提条件是已经成功安装了hadoop,而且hadoop的版本要和hbase的版本相匹配。如果安装的hbase是hbase-0.90.4版本,则需要的hadoop是hadoop-0.20.2版本。安装步骤1.将下载的hbase-0.90.4解压到相应的目录,如/home/hbase-0.90.42.修改hbase-0.90.4下的conf目录下的配置文件hbase-env.sh和hbase-site.xml首先,修改hbase-env.sh中的如下属性:exportJAVA_HOME=/home/jdk1.6exportHBASE_CLASSPATH=/home/hadoop-0.20.2/confexportHBASE_MANAGES_ZK=trueHbase安装部署与配置5.1Hbase单机安装部署与配置3.修改hbase-site.xml文件propertynamehbase.rootdir/namevaluehdfs://localhost:9000/hbase/value//此属性要根据自己的hadoop的配置信息进行相应的修改/propertypropertynamehbase.cluster.distributed/namevaluetrue/value/property4.将hbase下的bin目录添加到系统的path中,修改/etc/profile,添加如下的内容:exportPATH=$PATH:/home/hbase-0.90.4/bin执行:source/etc/profile使添加变量生效5.$start-hbase.sh启动hbaseHbase安装部署与配置5.1Hbase单机安装部署与配置$jpsSecondaryNameNodeDataNodeQuorumPeerMainTaskTrackerJobTrackerJpsHRegionServerHmasterNameNode//可以看到,HBase的相关进程已经启动了5.2hbase分布式安装部署与配置Hbase安装部署与配置假设环境PC-110.192.1.1PC-210.192.1.2PC-310.19
本文标题:hbase培训教材
链接地址:https://www.777doc.com/doc-4390013 .html