您好,欢迎访问三七文档
-HBaseJune20141AgendaHbase介绍1Hbase安装2Hbase功能3Hbase应用示例42Hbase介绍Hbase简介Hbase访问接口Hbase逻辑视图Hbase物理存储Hbase体系架构Agenda13HBase–HadoopDatabase,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群HBase是GoogleBigtable的开源实现,类似GoogleBigtable利用GFS作为其文件存储系统,HBase利用HadoopHDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用HadoopMapReduce来处理HBase中的海量数据;GoogleBigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。Hbase简介右图描述了HadoopEcoSystem中的各层系统,其中HBase位于结构化存储层HadoopHDFS为HBase提供了高可靠性的底层存储支持HadoopMapReduce为HBase提供了高性能的计算能力Zookeeper为HBase提供了稳定服务和failover机制。4Hbase接口NativeJavaAPI,最常规和高效的访问方式,适合HadoopMapReduceJob并行批处理HBase表数据HBaseShell,HBase的命令行工具,最简单的接口,适合HBase管理使用ThriftGateway,利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据Pig,可以使用PigLatin流式编程语言来操作HBase中的数据,和Hive类似,本质最终也是编译成MapReduceJob来处理HBase表数据,适合做数据统计Hive,当前Hive的版本已经支持HBase,可以使用类似SQL语言来访问HbaseHbaseWeb管理界面,图形化得Hbase管理界面。默认访问端口600105HbaseWeb管理界面可通过访问Hbase的Web界面6Hbaseshell–Hbase的命令窗口Hbase提供类似DB2cmd的命令窗口shell在10.xxx.xxx.118上运行bin/hbaseshell,即可打开命令窗口Shell中键入help可打开命令行的帮助信息7Hbase逻辑视图HBase以表的形式存储数据。表有行和列组成。列划分为若干个列族(rowfamily)。如下图RowKey:行键,Table的主键,Table中的记录按照RowKey排序Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的versionnumberColumnFamily:列簇,Table在水平方向有一个或者多个ColumnFamily组成,一个ColumnFamily中可以由任意多个Column组成,即ColumnFamily支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。8Hbase物理存储1.Table中的所有行都按照rowkey的字典序排列2.Table在行的方向上分割为多个Hregion3.region按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,Hregion就会等分成两个新的Hregion。当table中的行不断增多,就会有越来越多的Hregion9Hbase物理存储-续4.HRegion是Hbase中分布式存储和负载均衡的最小单元。最小单元就表示不同的Hregion可以分布在不同的HRegionserver上。但一个Hregion是不会拆分到多个server上的10Hbase物理存储-续5.HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。HRegion由一个或者多个Store组成,每个store保存一个columnsfamily。每个Strore又由一个memStore和0至多个StoreFile组成。如图:StoreFile以HFile格式保存在HDFS上11Hbase物理存储-续6.Hfile是Hbase在hadoop中的最终存储形式。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机制淘汰。7.Hlog(WALLog)•WAL意为WriteaheadLog,用来做灾难恢复只用。Hlog记录数据的所有变更,一旦数据修改,就可以从log中进行恢复。•每个RegionServer维护一个Hlog,目的是不断追加单个文件可以减少磁盘寻址次数,提高对table的写性能。•HLog文件是一个普通的HadoopSequenceFile,HLogKey中记录了写入数据的归属信息(table、region的名字,sequencenumber和timestamp)。HLogSequeceFile的Value是HBase的KeyValue对象,即对应HFile中的KeyValue。HFile的格式12Hbase体系架构13Hbase体系架构Client:包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如regione的位置信息Zookeeper:存储了-ROOT-表的地址和HMaster的地址,避免了HMaster的单点问题。保证任何时候,集群中只有一个master存贮所有Region的寻址入口。实时监控RegionServer的状态,将Regionserver的上线和下线信息实时通知给Master存储Hbase的schema,包括有哪些table,每个table有哪些columnfamilyHmaster:主要负责Table和Region的管理工作:管理用户对Table的增、删、改、查操作管理HRegionServer的负载均衡,调整Region分布在RegionSplit后,负责新Region的分配在HRegionServer停机后,负责失效HRegionServer上的Regions迁移RegionServer1Regionserver维护Master分配给它的region,处理对这些region的IO请求2Regionserver负责切分在运行过程中变得过大的region14Hbase安装单机模式伪分布式模式完全分布式模式Agenda215Hbase安装:单机模式下载及解压hbase安装包修改conf/hbase-env.sh脚本,设置环境变量编辑hbase-site.xml进行配置启动Hbase验证Hmaster已经启动进入shell16下载及解压Hbase安装包01.下载地址:创建安装目录,如/apps/hbase,解压文件到该目录/03.创建数据目录,如/bigdata/hbase,作为存储Hbase数据的文件/17配置环境变量04.修改hbase-env.sh,指定JAVA_HOME的路径05.配置hbase-site.xml,指定存放Hbase数据的路径06.在安装目录下运行bin/hbaseshell启动hbase客户端验证18Hbase安装:伪分布式模式在单点模式的基础上继续编辑hbase-env.sh打开Zookeeper管理模式编辑hbase-site.xml打开分布模式启动hbase验证启动19配置环境变量01.修改hbase-env.sh,启用hbase管理zookeeper的形式02.配置hbase-site.xml,指定存放Hbase数据的路径等Hbase的分布式文件路径打开分布式模式指定zookeeoper服务器Hbase临时目录03.在安装目录下运行bin/hbaseshell启动hbase客户端验证20Hbase安装:完全分布式模式在伪分布式的基础上继续配置配置hosts,确保涉及的主机名均可以解析为ip编辑hbase-site.xml编辑regionservers文件把Hbase复制到其它节点启动Hbase验证启动21配置hosts01.编辑所有节点的hostsmaster10.XXX.XXX.118Regionserver10.XXX.XXX.11910.XXX.XXX.120Zookeeper10.XXX.XXX.11810.XXX.XXX.11910.XXX.XXX.12022配置环境变量02.修改hbase-site.xml,增加zookeeper节点03.修改conf/regionservers23配置其他节点05.把hbase安装目录复制到其他两个节点06.在10.XXX.XXX.118上启动hbase07.运行jps验证,出现如图红框内的进程即安装成功24Hbase功能Hbase功能Agenda325Hbase命令(1)01.查询数据库状态02.查询数据库版本03.创建表26Hbase命令(2)04.列出数据库中的表05.查看表信息27Hbase命令(3)06.设置表状态为离线08.设置表状态为在线07.修改表信息示例:删除列族member_id注意:修改表信息前必须先把表的状态置为离线。修改后可运行describe命令查看修改的结果28Hbase命令(4)09.删除表10.查看表是否存在注意:删除表前必须先把表的状态置为离线。11.判断表是否enable或disable29Hbase命令(5)12.插入记录put'member','scutshuxue','info:age','24'put'member','scutshuxue','info:birthday','1987-06-17'put'member','scutshuxue','info:company','alibaba'put'member','scutshuxue','address:contry','china'put'member','scutshuxue','address:province','zhejiang'put'member','scutshuxue','address:city','hangzhou'put'member','xiaofeng','info:birthday','1987-4-17'put'member','xiaofeng','info:favorite','movie'put'member','xiaofeng','info:company','alibaba'put'member','xiaofeng','address:contry','china'put'member','xiaofeng','address:province','guan
本文标题:Hbase全1
链接地址:https://www.777doc.com/doc-1805082 .html