hbase的主要客戶端介面是由org.apache.hadoop.hbase.client包中的htable類提供的,通過該類,使用者可以完成向hbase儲存和檢索資料,以及刪除無效資料之類的操作。
所有修改資料的操作都保證了行級別的原子性,寫操作中涉及的列的數目不會影響該行資料的原子性,行原子性會同時保護到所有列
使用者應當盡量使用批處理(batch)更新來減少單獨操作同一行資料的次數
建立htable例項是有代價的,每個例項都需要掃瞄.meta.表,以檢查該錶是否存在、是否可用,此外,還要執行其他操作,這些檢查和操作導致例項呼叫非常耗時。因此,最好是只建立一次htable例項,而且是每個執行緒建立乙個,然後在客戶端應用的生存期內復用這個物件。如果使用者需要使用多個htable例項,應考慮使用htablepool類,它為使用者提供了乙個復用多個例項的便捷方式
region是hbase表中小一點兒的資料單位,由主(master)程序分配region給regionserver,每個regionserver一般託管多個region(regionserver必須能夠訪問hdfs),考慮到基礎資料儲存在hdfs上,所有客戶端都可以在乙個命名空間下訪問。所有regionserver都可以訪問檔案系統裡同乙個檔案,因此regionserver可以託管任何region。hbase中有兩個特殊的表,-root- 和 .meta.,用來查詢各種表的region位置。-root-永遠不會切分超過乙個region,meta和其他表一樣可以按需要切分成許多region。當客戶端要訪問某行時,先找-root-表,查詢什麼地方可以找到負責某行的region。-root-指向.meta.表的region。zookeeper是一種集中服務,用來維護配置資訊、命名服務、提供分布式同步和提供分組服務,是一種高可用、可靠地分布式配置服務。
hbase執行寫入命令時,會寫到兩個地方:預寫式日誌(write-ahead log,也稱hlog)和memstore。memstore是記憶體裡的寫入緩衝區,hbase中資料在永久寫入硬碟之前在這裡積累。當memstore填滿後,其中的資料會刷寫到硬碟,生成乙個hfile。hfile是hbase使用的底層儲存格式。hfile對應於列族,乙個列族可以有多個hfile,但乙個hfile不能儲存多個列族的資料。在集群的每個節點上,每個列族有乙個memstore。每台hbase伺服器有乙個wal,這台伺服器上的所有表(和它們的列族)共享這個wal。如果hbase伺服器宕機,沒有從memstore裡刷寫到hfile的資料將可以通過**wal來恢復。
hbase讀動作必須重新銜接持久化到硬碟上的hfile和記憶體中的memstore裡的資料。hbase在讀操作上使用了lru(最近最少使用演算法)快取技術。這種快取也叫做blockcache,和memstore在乙個jvm堆裡。blockcache設計用來儲存從hfile裡讀入記憶體的頻繁訪問的資料,避免硬碟讀。每個列族都有自己的blockcache。blockcache中的block是hbase從硬碟完成一次讀取的資料單位。hfile物理存放形式是乙個block的序列外加這些block的索引。block大小按照列族設定,預設值是64kb。block變小會導致索引變大,進而消耗更多記憶體。block變大意味著索引項變少,索引變小。從hbase中讀出一行,首先會檢查memstore等待修改的佇列,然後檢查blockcache看包含該行的block是否最近被訪問過,最後訪問硬碟上的對應hfile。
小合併(minorco mpaction)把多個小hfile合併生成乙個大hfile,因為讀出一條完整的行可能引用很多檔案,限制hfile的數量對於讀效能很重要。執行合併時,hbase讀出已有的多個hfile的內容,把記錄寫入乙個新檔案。然後,把檔案設定為啟用狀態,刪除構成這些新檔案的所有老檔案。大合併將處理給定region的乙個列族的所有hfile。大合併是hbase清理被刪除記錄的唯一機會
HBase基礎知識
hdfs myha01 hbase hbase.cluster.distributed true hbase.zookeeper.quorum hadoop02 2181,hadoop03 2181,hadoop04 2181 htable表 table htabledescriptor列族 col...
HBase基礎知識
hbase官網 學習 hbase是乙個建立在hadoop檔案系統之上的分布式的 面向列的開源資料庫,源於google的一篇 bigtable 乙個結構化資料的分布式儲存系統 hbase是google bigtable的開源實現,它利用hadoop hdfs作為其檔案儲存系統,利用hadoop map...
HBase基礎知識
1.hbase簡介 hbase hadoop database,是乙個高可靠性 高效能 面向列 可伸縮的分布式儲存系統,利用hbase技術可在廉價pc server上搭建起大規模結構化儲存集群。hbase利用hadoop hdfs作為其檔案儲存系統,利用hadoop mapreduce來處理hbas...