<p style="text-align: center;"><img alt="" src="https://simg.open-open.com/show/93edf1779809a61a801aa4f16008e17e.png" /></p> <p>HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务,可以存储海量稀疏的数据,并具备一定的容错性、高可靠性及伸缩性。主要应用场景是实时随机读写超大规模的数据。</p> <p>HBase在列上实现了BigTable论文提到的压缩算法、内存操作和布隆过滤器。HBase的表能够作为MapReduce任务的输入和输出,可以通过Java API来存取数据,也可以通过REST、Avro或者Thrift的API来访问。</p> <p>HBase不能取代RDBMS,因为二者的应用场景不同。HBase为了解决海量数据的扩展性,支持简单的增加节点来实现线性扩展,从而在集群上管理海量的非结构化或半结构化的稀疏数据。HBase仅能通过主键(row key)或主键的range检索数据,支持单行事务。</p> <p>HBase的优势主要在以下几方面:</p> <ul> <li>海量数据存储</li> <li>快速随机访问</li> <li>大量写操作的应用</li> </ul> <p>常见的应用场景:</p> <ul> <li>互联网搜索引擎数据存储(BigTable要解决的问题)</li> <li>审计日志系统</li> <li>实时系统</li> <li>消息中心</li> <li>内容服务系统</li> </ul> <p style="text-align: center;"><img alt="" src="https://simg.open-open.com/show/e171f896d2d4c15827121c496dba7187.png" /></p> <p style="text-align: center;"><strong>HBase架构 </strong></p> <h2><strong>更新日志</strong></h2> <h3>Sub-task</h3> <ul> <li>[<a href="/misc/goto?guid=4958992233877185664">HBASE-15386</a>] - PREFETCH_BLOCKS_ON_OPEN in HColumnDescriptor is ignored</li> <li>[<a href="/misc/goto?guid=4958992233979531546">HBASE-15640</a>] - L1 cache doesn't give fair warning that it is showing partial stats only when it hits limit</li> <li>[<a href="/misc/goto?guid=4958992234077595498">HBASE-15872</a>] - Split TestWALProcedureStore</li> <li>[<a href="/misc/goto?guid=4958992234171280065">HBASE-15878</a>] - Deprecate doBulkLoad(Path hfofDir, final HTable table) in branch-1 (even though its 'late')</li> <li>[<a href="/misc/goto?guid=4958992234261083059">HBASE-16034</a>] - Fix ProcedureTestingUtility#LoadCounter.setMaxProcId()</li> <li>[<a href="/misc/goto?guid=4958992234357516929">HBASE-16056</a>] - Procedure v2 - fix master crash for FileNotFound</li> <li>[<a href="/misc/goto?guid=4958992234449195887">HBASE-16068</a>] - Procedure v2 - use consts for conf properties in tests</li> </ul> <h3>Bug修复</h3> <ul> <li>[<a href="/misc/goto?guid=4958992234544373402">HBASE-11625</a>] - Reading datablock throws "Invalid HFile block magic" and can not switch to hdfs checksum</li> <li>[<a href="/misc/goto?guid=4958992234633553754">HBASE-14644</a>] - Region in transition metric is broken</li> <li>[<a href="/misc/goto?guid=4958992234737340664">HBASE-14818</a>] - user_permission does not list namespace permissions</li> <li>[<a href="/misc/goto?guid=4958992234835370678">HBASE-15234</a>] - ReplicationLogCleaner can abort due to transient ZK issues</li> <li>[<a href="/misc/goto?guid=4958992234927296778">HBASE-15465</a>] - userPermission returned by getUserPermission() for the selected namespace does not have namespace set</li> <li>[<a href="/misc/goto?guid=4958992235022108598">HBASE-15485</a>] - Filter.reset() should not be called between batches</li> <li>[<a href="/misc/goto?guid=4958992235120693852">HBASE-15582</a>] - SnapshotManifestV1 too verbose when there are no regions</li> <li>[<a href="/misc/goto?guid=4958992235209654093">HBASE-15587</a>] - FSTableDescriptors.getDescriptor() logs stack trace erronously</li> <li>[<a href="/misc/goto?guid=4958992235305989579">HBASE-15591</a>] - ServerCrashProcedure not yielding</li> <li>[<a href="/misc/goto?guid=4958992235408285314">HBASE-15596</a>] - hbAdmin is not closed after LoadIncrementalHFiles completes</li> <li>[<a href="/misc/goto?guid=4958992235501476907">HBASE-15613</a>] - TestNamespaceCommand times out</li> <li>[<a href="/misc/goto?guid=4958992235585609831">HBASE-15615</a>] - Wrong sleep time when RegionServerCallable need retry</li> <li>[<a href="/misc/goto?guid=4958992235685638735">HBASE-15617</a>] - Canary in regionserver mode might not enumerate all regionservers</li> <li>[<a href="/misc/goto?guid=4958992235770765036">HBASE-15621</a>] - Suppress Hbase SnapshotHFile cleaner error messages when a snaphot is going on</li> <li>[<a href="/misc/goto?guid=4958992235863742355">HBASE-15622</a>] - Superusers does not consider the keytab credentials</li> <li>[<a href="/misc/goto?guid=4958992235975995195">HBASE-15627</a>] - Miss space and closing quote in AccessController#checkSystemOrSuperUser</li> <li>[<a href="/misc/goto?guid=4958992236073213613">HBASE-15636</a>] - hard coded wait time out value in HBaseTestingUtility#waitUntilAllRegionsAssigned might cause test failure</li> <li>[<a href="/misc/goto?guid=4958992236169422634">HBASE-15645</a>] - hbase.rpc.timeout is not used in operations of HTable</li> <li>[<a href="/misc/goto?guid=4958992236260138805">HBASE-15670</a>] - Add missing Snapshot.proto to the maven profile for compiling protobuf</li> <li>[<a href="/misc/goto?guid=4958992236351930702">HBASE-15674</a>] - HRegionLocator#getAllRegionLocations should put the results in cache</li> <li>[<a href="/misc/goto?guid=4958992236447454204">HBASE-15676</a>] - FuzzyRowFilter fails and matches all the rows in the table if the mask consists of all 0s</li> <li>[<a href="/misc/goto?guid=4958992236546168207">HBASE-15693</a>] - Reconsider the ImportOrder rule of checkstyle</li> <li>[<a href="/misc/goto?guid=4958992236634780745">HBASE-15698</a>] - Increment TimeRange not serialized to server</li> <li>[<a href="/misc/goto?guid=4958992236729806132">HBASE-15738</a>] - Ensure artifacts in project dist area include required md5 file</li> <li>[<a href="/misc/goto?guid=4958992236825692203">HBASE-15742</a>] - Reduce allocation of objects in metrics</li> <li>[<a href="/misc/goto?guid=4958992236917044040">HBASE-15746</a>] - Remove extra RegionCoprocessor preClose() in RSRpcServices#closeRegion</li> <li>[<a href="/misc/goto?guid=4958992237007776648">HBASE-15755</a>] - SnapshotDescriptionUtils and SnapshotTestingUtils do not have any Interface audience marked</li> <li>[<a href="/misc/goto?guid=4958992237102476159">HBASE-15801</a>] - Upgrade checkstyle for all branches</li> <li>[<a href="/misc/goto?guid=4958992237192879632">HBASE-15811</a>] - Batch Get after batch Put does not fetch all Cells</li> <li>[<a href="/misc/goto?guid=4958992237293835955">HBASE-15824</a>] - LocalHBaseCluster gets bind exception in master info port</li> <li>[<a href="/misc/goto?guid=4958992237388771408">HBASE-15827</a>] - Backport HBASE-15125 'HBaseFsck's adoptHdfsOrphan function creates region with wrong end key boundary' to 1.2</li> <li>[<a href="/misc/goto?guid=4958992237476723898">HBASE-15841</a>] - Performance Evaluation tool total rows may not be set correctly</li> <li>[<a href="/misc/goto?guid=4958992237571550664">HBASE-15850</a>] - Localize the configuration change in testCheckTableLocks to reduce flakiness of TestHBaseFsck test suite</li> <li>[<a href="/misc/goto?guid=4958992237655104003">HBASE-15856</a>] - Cached Connection instances can wind up with addresses never resolved</li> <li>[<a href="/misc/goto?guid=4958992237745248947">HBASE-15873</a>] - ACL for snapshot restore / clone is not enforced</li> <li>[<a href="/misc/goto?guid=4958992237838133934">HBASE-15880</a>] - RpcClientImpl#tracedWriteRequest incorrectly closes HTrace span</li> <li>[<a href="/misc/goto?guid=4958992237921609394">HBASE-15920</a>] - Backport submit-patch.py to branch-1 and earlier branches.</li> <li>[<a href="/misc/goto?guid=4958992238010186022">HBASE-15925</a>] - compat-module maven variable not evaluated</li> <li>[<a href="/misc/goto?guid=4958992238102523023">HBASE-15946</a>] - Eliminate possible security concerns in RS web UI's store file metrics</li> <li>[<a href="/misc/goto?guid=4958992238189479379">HBASE-15954</a>] - REST server should log requests with TRACE instead of DEBUG</li> <li>[<a href="/misc/goto?guid=4958992238285781441">HBASE-15955</a>] - Disable action in CatalogJanitor#setEnabled should wait for active cleanup scan to finish</li> <li>[<a href="/misc/goto?guid=4958992238373926514">HBASE-15957</a>] - RpcClientImpl.close never ends in some circumstances</li> <li>[<a href="/misc/goto?guid=4958992238464989068">HBASE-15975</a>] - logic in TestHTableDescriptor#testAddCoprocessorWithSpecStr is wrong</li> <li>[<a href="/misc/goto?guid=4958992238559097382">HBASE-15976</a>] - RegionServerMetricsWrapperRunnable will be failure when disable blockcache.</li> <li>[<a href="/misc/goto?guid=4958992238641878164">HBASE-16012</a>] - Major compaction can't work due to obsolete scanner read point in RegionServer</li> <li>[<a href="/misc/goto?guid=4958992238738998667">HBASE-16016</a>] - AssignmentManager#waitForAssignment could have unexpected negative deadline</li> <li>[<a href="/misc/goto?guid=4958992238820379225">HBASE-16032</a>] - Possible memory leak in StoreScanner</li> <li>[<a href="/misc/goto?guid=4958992238911109986">HBASE-16062</a>] - Improper error handling in WAL Reader/Writer creation</li> <li>[<a href="/misc/goto?guid=4958992239005103242">HBASE-16093</a>] - Splits failed before creating daughter regions leave meta inconsistent</li> <li>[<a href="/misc/goto?guid=4958992239086022255">HBASE-16129</a>] - check_compatibility.sh is broken when using Java API Compliance Checker v1.7</li> <li>[<a href="/misc/goto?guid=4958992239182847788">HBASE-16238</a>] - It's useless to catch SESSIONEXPIRED exception and retry in RecoverableZooKeeper</li> </ul> <h3>改进</h3> <ul> <li>[<a href="/misc/goto?guid=4958992239265233716">HBASE-13532</a>] - Make UnknownScannerException logging less scary</li> <li>[<a href="/misc/goto?guid=4958992239359190403">HBASE-15119</a>] - Include git SHA in check_compatibility reports</li> <li>[<a href="/misc/goto?guid=4958992239445594627">HBASE-15551</a>] - Make call queue too big exception use servername</li> <li>[<a href="/misc/goto?guid=4958992239534049521">HBASE-15569</a>] - Make Bytes.toStringBinary faster</li> <li>[<a href="/misc/goto?guid=4958992239620875989">HBASE-15720</a>] - Print row locks at the debug dump page</li> <li>[<a href="/misc/goto?guid=4958992239716112478">HBASE-15791</a>] - Improve javadoc in ScheduledChore</li> <li>[<a href="/misc/goto?guid=4958992239797657375">HBASE-15808</a>] - Reduce potential bulk load intermediate space usage and waste</li> <li>[<a href="/misc/goto?guid=4958992239889936576">HBASE-15837</a>] - Memstore size accounting is wrong if postBatchMutate() throws exception</li> <li>[<a href="/misc/goto?guid=4958992239979550558">HBASE-15854</a>] - Log the cause of SASL connection failures</li> <li>[<a href="/misc/goto?guid=4958992240067379155">HBASE-16124</a>] - Make check_compatibility.sh less verbose when building HBase</li> <li>[<a href="/misc/goto?guid=4958992240164071757">HBASE-16140</a>] - bump owasp.esapi from 2.1.0 to 2.1.0.1</li> </ul> <h3>新特性</h3> <ul> <li>[<a href="/misc/goto?guid=4958992240241806069">HBASE-15592</a>] - Print Procedure WAL content</li> </ul> <h3>Task</h3> <ul> <li>[<a href="/misc/goto?guid=4958992240338941910">HBASE-15729</a>] - Remove old JDiff wrapper scripts in dev-support</li> <li>[<a href="/misc/goto?guid=4958992240431623068">HBASE-15895</a>] - remove unmaintained jenkins build analysis tool.</li> <li>[<a href="/misc/goto?guid=4958992240520673300">HBASE-16019</a>] - Cut HBase 1.2.2 release</li> <li>[<a href="/misc/goto?guid=4958992240611035767">HBASE-16073</a>] - update compatibility_checker for jacc dropping comma sep args</li> <li>[<a href="/misc/goto?guid=4958992240702403600">HBASE-16154</a>] - bring non-master branches up to date wrt check_compatibility script</li> </ul> <h2>下载</h2> <ul> <li><a href="/misc/goto?guid=4958992240793341227">hbase-1.2.2-bin.tar.gz</a></li> <li><a href="/misc/goto?guid=4958992240878276421">hbase-1.2.2-src.tar.gz</a></li> </ul>