您好,欢迎访问三七文档
HBASE内容提要为什么需要HBaseHTable的逻辑组织HBase的运行机制HBase与HDFSHBase的对外接口引入HBASE的原因数据库系统已无法适应大型分布式数据存储的需要改良的关系数据库(副本、分区等)难于安装与维护关系模型对数据的操作使数据的存贮变得复杂引入HBASE的原因HBASE从设计理念上就为可扩展做好了充分准备空间的扩展只需要加入存储结点使用‘表’的概念,但不同于关系数据库,不支持SQL实质上是一张极大的、非常稀疏的,存储在分布式文件系统上的表HBase历史2006年底由PowerSet的ChadWalters和JimKellerman发起2008年成为ApacheHadoop的一个子项目现已作为产品被使用WorldLingoStreamy.comOpenPlacesYahooAdobeHBASE用例-WebTable存储抓取网页和相关信息每个页面对应一行,是个有百万行的大表要基于此表进行分析与解析并由搜索引擎对关键字进行索引表需要并发地被众多网页抓取程序随机地访问以及更新数据表内容也要作为网页实时缓存被大量用户随机访问逻辑视图RowKeyTimeStampColumnContentsColumnAnchorColumn“mime”cnnsi.commy.look.ca“com.cnn.”T9CNNT8CNN.COMT6“html..“Text/htmlT5“html..“t3“html..“数据模型-行RowKeyTimeStampColumnContentsColumnAnchorColumn“mime”cnnsi.commy.look.ca“com.cnn.”T9CNNT8CNN.COMT6“html..“Text/htmlT5“html..“t3“html..“行键列列数据模型-行每行数据有一可排序的关键字和任意列项字符串、整数、二进制串甚至与串行化的结构都可以作为行键表按照行键的“逐字节排序”顺序对行进行有序化处理表内数据非常‘稀疏’,不同的行的列的数完全目可以大不相同数据模型-行可以只对一行上“锁”对行的写操作是始终是“原子”的数据模型-列列必须用‘族’(family)来定义任意一列有如下形式“族:标签”其中,族和标签都可为任意形式的串物理上将同“族”数据存储在一起数据可通过时间戳区分版本数据模型-列RowKeyTimeStampColumnContentsColumnAnchorColumn“mime”cnnsi.commy.look.ca“com.cnn.”T9CNNT8CNN.COMT6“html..“Text/htmlT5“html..“t3“html..“族标签物理视图RowKeyTimeStampColumn:ContentsCom.cnn.“html..”T5“html..”T3“html..”RowKeyTimeStampColumn:AnchorCom.cnn.:my.look.caCNN.COMRowKeyTimeStampColumn:mimeCom.cnn.小结RowKeyTimeStampColumnContentsColumnAnchorColumn“mime”cnnsi.commy.look.ca“com.cnn.”T9CNNT8CNN.COMT6“html..“Text/htmlT5“html..“t3“html..“系统总体结构HDFSClusterZooKeeperClusterRegionServerRegionServerRegionServerMasterServerHStoreMapFilesHStoreMapFilesRegion数据存储实体-区域表按照“水平”的方式划分成一个或多个“区域”(region)每个区域都包含一个随机id,区域内的行也是按行键有序的最初每张表包含一个区域,当表增大超过阈值后,这个区域被自动分割成两个相同大小的区域区域以分布式的方式分布在集群内区域的管理区域服务器(RegionServer)为区域的访问提供服务,直接为用户提供服务负责维护区域的分割负责数据存持久化主服务器(MasterServer)管理区域服务器指派区域服务器对服务特定区域恢复失效的区域服务器特殊目录数据元数据(META)全部用户区域的属性数据都存在元数据表中包括区域中数据起止行信息、区域“在线”状态等保存区域服务器地址元数据表也可包含多个区域,区域属性数据存储在“根”结点上特殊目录数据“根”表(ROOT)只存包含一个区域将元数据中的区域映射到区域服务器存储元数据服务器位置以及映射了哪些元数据区域区域服务器(RegionServer)职能负责处理用户的读写请求向主服务器(MasterServer)上报自己的状态,并获取自己需要服务的区域为提高效率,消息通过捎带(pigback)方式通过“心跳”分组进行传递区域服务器-“写”写数据首先写入“预写”日志对于一个区域服务器而言,对其提供服务的所有区域的“写”操作日志都存储在同一个日志中数据并非直接写文件系统,而是先缓存,缓存到一定数量再批量写入写入完成后在日志中做标记区域服务器-“读”区域服务器现在内存的缓存中查找,如果命中请求,则直接服务如果存在多个版本,则返回顺序按照从最新到最老区域服务器-合并如果映射文件(MapFile)数量超过阈值,区域服务器会进行一次合并(Compaction)合并操作也周期性进行合并可与区域服务器响应用户的读写请求并发进行如果读写请求与合并区域相关,读写操作先挂起,直到合并操作完成区域服务器-分割当区域文件大过阈值后,区域文件会按照行的方式对半进行分割(Split)操作分割也作为一种请求被区域服务器处理被分割区域先离线区域服务器在元信息表中生成子表元信息主服务器在得知分割操作进行后,将子表分配给新的区域服务器进行服务被分割区域通过垃圾回收机制回收区域服务器-分割如果主服务器没能正确收到分割消息,主服务器可通过定期检查MATA数据发现分割操作开始分割操作后,被分割区域离线,此时客户端能检测到并在分割后的区域上线后重发访问请求失效恢复由于检测没有心跳,主服务器能够探知区域服务器的失效主服务器将失效服务器所提供服务的区域重新分配给其它区域服务器原失效区域服务器的“预写”日志由主服务器进行分割并派送给新的区域服务器客户端连接到ZooKeeper集群获取根区域数据和元数据的位置在元数据中查找需要访问行所在的区域并定位提供该区域服务的区域服务器直接与区域服务器交互以获取数据根区域数据、元数据以及用户区域信息都被客户端缓存以备下次访问使用系统总体结构HDFSClusterZooKeeperClusterRegionServerRegionServerRegionServerMasterServerHStoreMapFilesHStoreMapFilesRegionHBase安装需要ZooKeeper支持本身带zookeeper.jar包步骤解压,并添加支撑的.jar包到用户CLASS_PATH修改conf下hbase-env.sh,regionserversHbase-site.xml启动Hbase:bin/start-hbase.shHBaseShell启动bin/hbaseshell主要命令create创建表describe描述表enable/disable表激活/取消drop删除表get/put表读写HBaseAPIHBaseConfigurationaddResource(…)HTableput(…)get(…)ResultScannernext(…)HBase与HDFS如果使用HDFS需要配置RegionServer,定位存储位置为HDFS服务HBASE_ROOT/conf/hbase-site.xml定义hbase.rootdir值,指向HDFS服务,如:hdfs://hdfs_server:port/hbase_rootHBase与其它文件系统HBase可以使用其它分布式文件系统mount至挂载点,如/mnt/mydfs定义hbase.rootdir值,指向挂载点,如file:///mnt/mydfs/hbase_root
本文标题:云计算系列教程9
链接地址:https://www.777doc.com/doc-7032856 .html