一、關鍵字
分布式儲存系統、開源、基於列模式、適合非結構化
二、特性
海量儲存,資料可達pb級別
列式儲存,一種nosql資料庫
極易擴充套件,分布式資料庫
高併發,多個pc同時處理
稀疏,指hbase列的靈活性,可以指定任意多的列
三、什麼適合用hbase?
hbase不適合解決所有的問題:
資料庫量要足夠多, 如果有十億及百億行資料, 那麼hbase是乙個很好的選項, 如果只有幾百萬行甚至不到的資料量,rdbms是乙個很好的選擇, 因為資料量小的話, 真正能工作的機器少, 剩餘的機器處於空閒的狀態
不需要輔助索引,靜態型別的列,事務等特性
保證硬體資源足夠,集群中節點數少於5個,都不能表現的很好
四、應用場景
五、hbase架構體系
六、應用開發
批量建立表
在建立表時只要指定表名、列簇就可以建立了, 當然在實際生產環境中通常會根據業務場景指定好錶的預分割槽,這樣可以防止資料存入到乙個region上,造成熱點問題。
/* 判斷表是否存在 */
def i***ists(tablename: string): boolean =
result
} def createtable(tablename: string, columnfamilys: array[string]) =
//建立表
admin.createtable(descriptor)
//建立分割槽表,使資料均勻分布到各個伺服器上
val splitkesy = array(2, 4, 6, 8).map(bytes.tobytes(_))
admin.createtable(descriptor, splitkesy)
println("create successful!!")}}
2. 資料寫入
資料寫入可以單條寫入也可以批量寫入, 實際環境中通常是批量寫入,這樣會提高寫入效率
//向hbase表中插入資料, 更新操作一樣
def inserttable(tablename: string, rowkey: string, columnfamily: string, column: string, value: string) =
3. 資料更新
資料的更新和資料插入**是一樣的, 邏輯是不存在的列會建立插入, 存在則會覆蓋掉原有的資料。
//向hbase表中插入資料, 更新操作一樣
def inserttable(tablename: string, rowkey: string, columnfamily: string, column: string, value: string) =
4. 資料刪除
資料刪除就是根據表名、rowkey、還有對應的列簇和列刪除即可。
//刪除某條記錄
def deleterecord(tablename: string, rowkey: string, columnfamily: string, column: string) =
5. 資料查詢
資料查詢通常根據rowkey範圍進行掃瞄查詢,這樣效率最高
//獲取hbase表中的資料
def scandatafromhtable(tablename: string, columnfamily: string, column: string) = ,列簇:$:$,value:$")
result = scanner.next()
}//通過scan取完資料後,記得要關閉resultscanner,否則regionserver可能會出現問題(對應的server資源無法釋放)
scanner.close()
table.close()
}
查詢優化的點有
以上就是本文的全部內容。
HBase簡介及使用
由google發表的關於bigtable的 啟發,使得hbase成為了基於hdfs開發的 面向列的 可伸縮的 開源的分布式資料庫,並且它提供了隨機實時讀寫功能。hbase作為hadoop生態系統中的結構化儲存工具,hdfs為它提供了高可靠性的底層儲存支援,hadoop mapreduce為它提供了高...
HBase簡介及HBase Shell操作
二 hbase shell操作 hbase的安裝可以參照 hbase偽分布式搭建 hbase是乙個高可靠性 高效能 面向列 可伸縮的nosql分布式資料儲存系統,利用hbase可實現對大型資料的實時 隨機的讀寫訪問。hbase 依賴於 hdfs 做底層的資料儲存 依賴於 mapreduce做資料計算...
HBASE簡介及部分操作例項
一 hbase簡介 hbase是乙個分布式的 面向列的開源資料庫,其名字 於hadoop資料庫 hadoop database hbase不同於一般的關聯式資料庫,它是乙個適合於非結構化資料儲存的資料庫,隸屬於apache的hadoop專案。二 hbase相關概念 表 table hbbase同樣是...