茂港手机网站建设公司,如何将音乐上传到wordpress,国内网站建设,wordpress 评论换行原文地址#xff1a;http://www.oschina.net/p/hbase/ HBase 概念 HBase – Hadoop Database#xff0c;是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统#xff0c;利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实…原文地址http://www.oschina.net/p/hbase/ HBase 概念 HBase – Hadoop Database是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBase是Google Bigtable的开源实现类似Google Bigtable利用GFS作为其文件存储系统HBase利用Hadoop HDFS作为其文件存储系统Google运行MapReduce来处理Bigtable中的海量数据HBase同样利用Hadoop MapReduce来处理HBase中的海量数据Google Bigtable利用 Chubby作为协同服务HBase利用Zookeeper作为对应。 上图描述了Hadoop EcoSystem中的各层系统其中HBase位于结构化存储层Hadoop HDFS为HBase提供了高可靠性的底层存储支持Hadoop MapReduce为HBase提供了高性能的计算能力Zookeeper为HBase提供了稳定服务和failover机制。 此外Pig和Hive还为HBase提供了高层语言支持使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能使得传统数据库数据向HBase中迁移变的非常方便。 HBase 访问接口 1. Native Java API最常规和高效的访问方式适合Hadoop MapReduce Job并行批处理HBase表数据 2. HBase ShellHBase的命令行工具最简单的接口适合HBase管理使用 3. Thrift Gateway利用Thrift序列化技术支持CPHPPython等多种语言适合其他异构系统在线访问HBase表数据 4. REST Gateway支持REST 风格的Http API访问HBase, 解除了语言限制 5. Pig可以使用Pig Latin流式编程语言来操作HBase中的数据和Hive类似本质最终也是编译成MapReduce Job来处理HBase表数据适合做数据统计 6. Hive当前Hive的Release版本尚没有加入对HBase的支持但在下一个版本Hive 0.7.0中将会支持HBase可以使用类似SQL语言来访问HBase HBase 数据模型 Table Column Family Row KeyTimestampColumn FamilyURIParserr1t3urlhttp://www.taobao.comtitle天天特价t2hosttaobao.com t1 r2t5urlhttp://www.alibaba.comcontent每天…t4hostalibaba.com Ø Row Key: 行键Table的主键Table中的记录按照Row Key排序 Ø Timestamp: 时间戳每次数据操作对应的时间戳可以看作是数据的version number Ø Column Family列簇Table在水平方向有一个或者多个Column Family组成一个Column Family中可以由任意多个Column组成即Column Family支持动态扩展无需预先定义Column的数量以及类型所有Column均以二进制格式存储用户需要自行进行类型转换。 Table Region 当Table随着记录数不断增加而变大后会逐渐分裂成多份splits成为regions一个region由[startkey,endkey)表示不同的region会被Master分配给相应的RegionServer进行管理 -ROOT- .META. Table HBase中有两张特殊的Table-ROOT-和.META. Ø .META.记录了用户表的Region信息.META.可以有多个regoin Ø -ROOT-记录了.META.表的Region信息-ROOT-只有一个region Ø Zookeeper中记录了-ROOT-表的location MapReduce on HBase 在HBase系统上运行批处理运算最方便和实用的模型依然是MapReduce如下图 HBase Table和Region的关系比较类似HDFS File和Block的关系HBase提供了配套的TableInputFormat和TableOutputFormat API可以方便的将HBase Table作为Hadoop MapReduce的Source和Sink对于MapReduce Job应用开发人员来说基本不需要关注HBase系统自身的细节。 HBase系统架构图 Client HBase Client使用HBase的RPC机制与HMaster和HRegionServer进行通信。对于管理类操作Client与HMaster进行RPC通信对于数据读写类操作Client与HRegionServer进行RPC通信。 Zookeeper Zookeeper Quorum中除了存储了-ROOT-表的地址和HMaster的地址HRegionServer也会把自己以Ephemeral方式注册到 Zookeeper 中使得 HMaster 可以随时感知到各个HRegionServer的健康状态。此外Zookeeper也避免了HMaster的单点问题。 HMaster HMaster没有单点问题HBase中可以启动多个HMaster通过Zookeeper的Master Selection机制保证总有一个Master运行HMaster在功能上主要负责Table和Region的管理工作 1. 管理用户对Table的增、删、改、查操作 2. 管理 HRegionServer 的负载均衡调整 Region 分布 3. 在 Region Split 后负责新 Region 的分配 4. 在 HRegionServer 停机后负责失效 HRegionServer 上的Regions迁移 HRegionServer HRegionServer主要负责响应用户I/O请求向HDFS文件系统中读写数据是HBase中最核心的模块。 HRegionServer内部管理了一系列HRegion对象每个HRegion对应了Table中的一个RegionHRegion中由多 个HStore组成。每个HStore对应了Table中的一个Column Family的存储可以看出每个Column Family其实就是一个集中的存储单元因此最好将具备共同IO特性的column放在一个Column Family中这样最高效。 HStore存储是HBase存储的核心了其中由两部分组成一部分是MemStore一部分是StoreFiles。MemStore是 Sorted Memory Buffer用户写入的数据首先会放入MemStore当MemStore满了以后会Flush成一个StoreFile底层实现是HFile 当StoreFile文件数量增长到一定阈值会触发Compact合并操作将多个StoreFiles合并成一个StoreFile合并过程中会进 行版本合并和数据删除因此可以看出HBase其实只有增加数据所有的更新和删除操作都是在后续的compact过程中进行的这使得用户的写操作只要 进入内存中就可以立即返回保证了HBase I/O的高性能。当StoreFiles Compact后会逐步形成越来越大的StoreFile当单个StoreFile大小超过一定阈值后会触发Split操作同时把当前 Region Split成2个Region父Region会下线新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer 上使得原先1个Region的压力得以分流到2个Region上。下图描述了Compaction和Split的过程 在理解了上述HStore的基本原理后还必须了解一下HLog的功能因为上述的HStore在系统正常工作的前提下是没有问题的但是在分布式 系统环境中无法避免系统出错或者宕机因此一旦HRegionServer意外退出MemStore中的内存数据将会丢失这就需要引入HLog了。 每个HRegionServer中都有一个HLog对象HLog是一个实现Write Ahead Log的类在每次用户操作写入MemStore的同时也会写一份数据到HLog文件中HLog文件格式见后续HLog文件定期会滚动出新的并 删除旧的文件已持久化到StoreFile中的数据。当HRegionServer意外终止后HMaster会通过Zookeeper感知 到HMaster首先会处理遗留的 HLog文件将其中不同Region的Log数据进行拆分分别放到相应region的目录下然后再将失效的region重新分配领取 到这些region的HRegionServer在Load Region的过程中会发现有历史HLog需要处理因此会Replay HLog中的数据到MemStore中然后flush到StoreFiles完成数据恢复。 HBase存储格式 HBase中的所有数据文件都存储在Hadoop HDFS文件系统上主要包括上述提出的两种文件类型 1. HFile HBase中KeyValue数据的存储格式HFile是Hadoop的二进制格式文件实际上StoreFile就是对HFile做了轻量级包装即StoreFile底层就是HFile 2. HLog FileHBase中WALWrite Ahead Log 的存储格式物理上是Hadoop的Sequence File HFile 下图是HFile的存储格式 首先HFile文件是不定长的长度固定的只有其中的两块Trailer和FileInfo。正如图中所示的Trailer中有指针指向其他数 据块的起始点。File Info中记录了文件的一些Meta信息例如AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEY等。Data Index和Meta Index块记录了每个Data块和Meta块的起始点。 Data Block是HBase I/O的基本单元为了提高效率HRegionServer中有基于LRU的Block Cache机制。每个Data块的大小可以在创建一个Table的时候通过参数指定大号的Block有利于顺序Scan小号Block利于随机查询。 每个Data块除了开头的Magic以外就是一个个KeyValue对拼接而成, Magic内容就是一些随机数字目的是防止数据损坏。后面会详细介绍每个KeyValue对的内部构造。 HFile里面的每个KeyValue对就是一个简单的byte数组。但是这个byte数组里面包含了很多项并且有固定的结构。我们来看看里面的具体结构 开始是两个固定长度的数值分别表示Key的长度和Value的长度。紧接着是Key开始是固定长度的数值表示RowKey的长度紧接着是 RowKey然后是固定长度的数值表示Family的长度然后是Family接着是Qualifier然后是两个固定长度的数值表示Time Stamp和Key TypePut/Delete。Value部分没有这么复杂的结构就是纯粹的二进制数据了。 HLogFile 上图中示意了HLog文件的结构其实HLog文件就是一个普通的Hadoop Sequence FileSequence File 的Key是HLogKey对象HLogKey中记录了写入数据的归属信息除了table和region名字外同时还包括 sequence number和timestamptimestamp是“写入时间”sequence number的起始值为0或者是最近一次存入文件系统中sequence number。 HLog Sequece File的Value是HBase的KeyValue对象即对应HFile中的KeyValue可参见上文描述。 ZOOM 云视频会议网站http://www.zoomonline.cn/ 转载于:https://www.cnblogs.com/gw811/p/4634355.html