hbase整理

漏船載酒發表於2018-03-12

時間同步設定
ntpdate.cn.pool.ntp.org
zookeeper
分散式系統協調工具 高可用協調工具
zookeeper 上的資料存在於每個server節點上 每個節點上的zookeeper節點上儲存的資料都是全量資料zookeeper上儲存的資料的方式和檔案系統儲存資料一樣

hbase的資料模型
sql 在sql的資料庫中包含兩種元素
即 模式和元組
nosql:在nosql裡面一般更強調元組而弱化模式 有些nosql中沒有模式 有些nosql有比較弱的模式 比方說有些表而沒有明確欄位 或者有表有更為冠以上的欄位

hbase 是nosql中的一種 它的設計和他使用都是反模式的。它裡面不是完全沒有模式 ,它的模式分為三層。
1.namespace 類似於mysql 的database
2.table 類似於MySQL的table
3.column 雷速與mysql的table
把他認為是mysql裡面一個表的多個欄位按照找某個條件分成多組
一個hbase 中可以建立若干個2namespace namespace一般用來做部門或者應用之間的資料隔離
一個namespace下可以建立若干個table table做不通種類的資料之間的隔離
一個列簇下面可以有若干個列簇

hbase 的劣質可以使任意型別
hbase對其中所有儲存的資料不做任何型別上的限制
hbase在儲存資料的位置不作任何型別上的限制
hbase在儲存書籍肚餓位置處統一的吧資料轉換成位元組陣列來進行儲存的。

namespace的基本操作
create_namespace `bd2o`
list_namespace 展示hbase有多少個namespace
list_namespace_table `bd20` 展示bd20資料下有多少張表

drop_namespace `bd20`
table 的基本操作
建立表
create `bd20:table_name` ,`column_family`
describe `bd20:table_name`
disable `bd20:table_name`
drop `bd20:table_name`

–alter table
alter `bd20:table1`,NAME=>`c1`,method=>`delete`
alter table `bd20:tale1`,NAME=>`c2`
create

create `cms_link`,`primary_info`,`system_info`

mysql 上所說的一條資料值的是一行資料
hbase中所說的一條資料值的是一行資料中的單元格
put ‘cms_link’,`1`,`primary_info:category_id`,`19`

hbase 底層資料儲存
hbase 的底層資料是按照挑來儲存的,每一條資料在底層資料檔案裡面佔據一個儲存空間。每條資料的格式如下
rowkey
timestamp
family_column
hbase的資料檔案是吧每條資料以kv的形式來儲存的
因為key上的大部分資料都是冗餘的,正規化我們自己設計的kety上的資料 儘可能的限定他們的長度
rowkey在設計師要捨得儘可能的端
列簇在設計上要儘可能的端,要儘可能的表達劣質的資料內容的意義,比方說姓名,年齡等。
hbase架構原理
hbase中的沒一張表都是分散式儲存的
hbase 吧一張表的tale劃分為多個region 每個rigion可以散佈在不同的regionserver 上來對外提供服務,hbase 是根據興業劃分region 也就是說hbase是根據rowkey 來劃分region的。
每個region都有自己的rowkey上下線,第一個region沒下線,最後一個region 沒有上下限,當一條記錄需要儲存在habse 中,hmaster 會判斷這條記錄的rowkey應該分佈在哪個region上,然後轉交給這個region所負責的regionserver來執行讀寫操作。

hbase 的region 的大小會隨著裡面的數量的增加而增加。當以region的體諒超過256M時,這個region就會分裂。分裂的過程有hmaster主導,由hregionserver執行,在分裂的過程中,不對外提供讀寫服務。
hbase 中如果在定義表示不對錶進行預分割槽。那麼整個hbase 表就只有一個region 為了儘可能的皮面分裂最好。
create ‘stable1’,‘i’,SPLITS=>[`100`,`200`,`300`,`400`,`500`]
hbase 根據rowkey查詢一個表tableA資料的過程 根據root表來確定meta的位置,root表存在於zookeeper 中 根據後設資料定位taleA的位置,後設資料儲存在hbase的meta 表中。
定位tableA的位置,然後根據rowkey來確定要查詢記錄的準確region 根據region定位其所在。
regionserver regionserver根據rowkey就檢索資料檔案中記錄的位置從而獲取資料。

hbase中的資料來源
1.來源自自己有的資料檔案
mapreduce
hive
spark

bulk loading
2.來自業務系統不斷增加的資料記錄。
java api
shell
其他語言 +thrift服務
hbase api操作
1.構建配置引數物件,使用hbaseConfiguration來建立。
2.建立Connection 物件。使用ConnectionFactory 來建立。
3.如果執行ddl來操作的話需要Admin物件。通過Connection來獲取。
4.如果執行dml操作的話需要Table物件,通過Connection來獲取。
往hbase裡面插入資料 需要Put物件,一個Put物件代表一行資料。
mapreduce讀寫hbase
TableInoutFormat
TableOutputFotmat
TableMapper
TableReducer
TableMapReduceUtil
寫hbase 需要在job上配置輸出格式為
TableOutputFormat,reduce 的輸出kv必須滿足寫入hbase表的kv型別
可以通過寫reduce繼承TabeReducer來解決這個kv型別的限定。
在Job中還得設定目標表,可以通過呼叫。