1.啟動Hadoop
start-all.sh
驗證
http://master:50070
2、啟動zookeeper
需要在在三臺中分別啟動
zkServer.sh start
zkServer.sh status
搭建Hbase
1、上傳解壓配置環境變數
tar -xvf hbase-1.4.6-bin.tar.gz
2、修改hbase-env.sh檔案
增加java配置
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
關閉默認zk配置
export HBASE_MANAGES_ZK=false
3、修改hbase-site.xml檔案
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>node1,node2,master</value>
</property>
4、修改regionservers檔案
增加
node1
node2
如果是偽分布式版本,增加master即可
5、同步到所有節點(如果是偽分布式不需要同步)
scp -r hbase-1.4.6/ node1:`pwd`
scp -r hbase-1.4.6/ node2:`pwd`
6、配置環境變數
vim /etc/profile
7、啟動hbase集群 , 需要在master上執行
start-hbase.sh
8、驗證hbase
http://master:16010

hbase日志檔案所在的目錄
/usr/local/soft/hbase-1.4.6/logs
關閉集群的命令
stop-hbase.sh
時間同步
yum install ntp -y
ntpdate -u time.windows.com
通過 hbase shell 進入到hbase的命令列
創建表 列簇 列式資料庫
create 'test','info'
插入資料
put 'test','000','info:name','zhaosi'
put 'test','001','info:name','zhangsan'
put 'test','002','info:name','lisi'
put 'test','003','info:name','wangwu'
put 'test','0011','info:name','wangwu2'
查詢資料
get 'test','001'
hbase 搭建失敗了 不知道問題出在哪里
重置hbase
1、關閉hbase集群
殺死行程
stop-hbase.sh
2、洗掉資料 hdfs
hadoop dfs -rmr /hbase
3、洗掉元資料 zk
zkCli.sh
rmr /hbase
4、重新啟動hbase
start-hbase.sh
Hbase架構
1.Hbase簡介
HBase – Hadoop Database,是一個高可靠性、高性能、面向列、可伸縮、實時讀寫的分布式資料庫
利用Hadoop HDFS作為其檔案存盤系統,利用Hadoop MapReduce來處理HBase中的海量資料,利用Zookeeper作為其分布式協同服務
主要用來存盤非結構化和半結構化的松散資料(列存 NoSQL 資料庫)
Master
·為Region server分配region
·負責Region server的負載均衡
·發現失效的Region server并重新分配其上的region
·管理用戶對table的增刪改操作
RegionServer
· Region server維護region,處理對這些region的IO請求· Region server負責切分在運行程序中變得過大的region
Region
HBase自動把表水平劃分成多個區域(region),每個region會保存一個表里面某段連續的資料;每個表一開始只有一個region,隨著資料不斷插入表,region不斷增大,當增大到一個閥值的時候,region就會等分會兩個新的region(裂變),
當table中的行不斷增多,就會有越來越多的region,這樣一張完整的表被保存在多個Regionserver 上

Row key
唯一標識一行資料
可以通過RowKey獲取一行資料
按照字典升序排序的,
Row key只能存盤64k的位元組資料 10-100byte
Column Family(列族)和qualifier(列)
HBase表中的每個列都歸屬于某個列族,列族必須作為表模式(schema)定義的一部分預先給出,如 create ‘test’, ‘course’,
列名以列族作為前綴,每個“列族”都可以有多個列成員(column);如course:math, course:english, 新的列族成員(列)可以隨后按需、動態加入,
權限控制、存盤以及調優都是在列族層面進行的;
HBase把同一列族里面的資料存盤在同一目錄下,由幾個檔案保存,

Memstore 與 storefile
一個region由多個store組成,一個store對應一個CF(列族)store包括位于記憶體中的memstore和位于磁盤的storefile寫操作先寫入memstore,當memstore中的資料達到某個閾值,hregionserver會啟動flashcache行程寫入storefile,每次寫入形成單獨的一個storefile
當storefile檔案的數量增長到一定閾值后,系統會進行合并(minor、major compaction),在合并程序中會進行版本合并和洗掉作業(majar),形成更大的storefile
當一個region所有storefile的大小和數量超過一定閾值后,會把當前的region分割為兩個,并由hmaster分配到相應的regionserver服務器,實作負載均衡
客戶端檢索資料,先在memstore找,找不到再找storefile
Timestamp時間戳
在HBase每個cell存盤單元對同一份資料有多個版本,根據唯一的時間戳來區分每個版本之間的差異,不同版本的資料按照時間倒序排序,最新的資料版本排在最前面,
時間戳的型別是 64位整型,
時間戳可以由HBase(在資料寫入時自動)賦值,此時時間戳是精確到毫秒的當前系統時間
時間戳也可以由客戶顯式賦值,如果應用程式要避免資料版本沖突,就必須自己生成具有唯一性的時間戳,
Cell單元格
由行和列的坐標交叉決定, 單元格是有版本的,
單元格的內容是未決議的位元組陣列, 由{row key, column( =<family> +<qualifier>), version} 唯一確定的單元,
cell中的資料是沒有型別的,全部是位元組碼形式存貯,

HLog(WAL log)
HLog檔案就是一個普通的Hadoop Sequence File,Sequence File 的Key是HLogKey物件,HLogKey中記錄了寫入資料的歸屬資訊,除了table和region名字外,同時還包括 sequence number和timestamp,timestamp是”寫入時間”,sequence number的起始值為0,或者是最近一次存入檔案系統中sequence number,
HLog SequeceFile的Value是HBase的KeyValue物件,即對應HFile中的KeyValue,

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/309408.html
標籤:NoSQL
上一篇:定制Locust的輸入引數
下一篇:Hbase Shell
