課程目標html
HBase能作什麼java
HBase在實際業務場景中的應用node
HBase是什麼shell
HBase是一個分佈式,版本化,面向列的數據庫,構建在 Apache Hadoop和 Apache ZooKeeper之上。
HBase的特色數據庫
容量大apache
HBase單表能夠有百億行、百萬列,數據矩陣橫向和縱向兩個維度所支持的數據量級都很是具備彈性
面向列vim
HBase是面向列的存儲和權限控制,並支持獨立檢索。列式存儲,其數據在表中是按照某列存儲的,這樣在查詢只須要少數幾個字段的時候,能大大減小讀取的數據量
多版本windows
HBase每個列的數據存儲有多個Version
稀疏性緩存
爲空的列並不佔用存儲空間,表能夠設計的很是稀疏
擴展性安全
底層依賴於HDFS
高可靠性
WAL機制保證了數據寫入時不會因集羣異常而致使寫入數據丟失;Replication機制保證了在集羣出現嚴重的問題時,數據不會發生丟失或損壞。並且HBase底層使用HDFS,HDFS自己也有備份
高性能
底層的LSM數據結構和Rowkey有序排列等架構上的獨特設計,使用HBase具備很是高的寫入性能。region切分、主鍵索引和緩存機制使用HBase在海量數據下具有必定的隨機讀取性能,該性能針對Rowkey的查詢可以達到毫秒級別
如何選擇合適HBase版本
HBase在Hadoop2.x生態系統中的定位
HBase架構體系
HBase表結構模型
HBase表結構模型舉例說明
Hbase數據模型
Hbase數據模型舉例說明
HBase列簇
HBase Region
HBase表與關係型數據庫表結構對比
對比 | HBase | 關係型數據庫 |
---|---|---|
表列 | 列動態增長 | 列不會動態增長 |
數據 | 數據自動切分 | 數據不會自動切分 |
併發 | 高併發讀取 | 高併發讀寫較差 |
查詢 | 不支持條件查詢 | 支持複雜查詢 |
zookeeper-3.4.5-cdh5.3.0.tar.gz
連接: https://pan.baidu.com/s/1ZGCq... 密碼:v57b
hadoop-2.5.0-cdh5.3.0.tar.gz
連接: https://pan.baidu.com/s/1vOKp... 密碼:hz4a
hbase-0.98.6-cdh5.3.0.tar.gz
連接: https://pan.baidu.com/s/1tojE... 密碼:yimh
Hadoop2.x分佈式安裝配置
解壓安裝包
tar -zxf hadoop-2.5.0-cdh5.3.0.tar.gz
進入/share目錄
cd hadoop-2.5.0-cdh5.3.0/share
(可選)刪除doc文檔
rm -rf doc/
進入/etc/hadoop目錄
cd hadoop-2.5.0-cdh5.3.0/etc/hadoop
(可選)刪除windows下執行腳本
rm -rf *.cmd
export JAVA_HOME=${JAVA_HOME}
其中${JAVA_HOME}
爲echo ${JAVA_HOME}
的值
參考地址
http://hadoop.apache.org/docs...
http://hadoop.apache.org/docs...
https://www.jb51.net/article/...
進入hadoop根目錄
cd hadoop-2.5.0-cdh5.3.0
建立臨時數據目錄
mkdir -p data/tmp
進入臨時數據目錄
mkdir -p data/tmp
使用pwd查看路徑
/home/zc/studio/hadoop-2.5.0-cdh5.3.0/data/tmp
在configuration節點中添加如下代碼
<property> <name>fs.defaultFS</name> <value>hdfs://zccoder.com:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/zc/studio/hadoop-2.5.0-cdh5.3.0/data/tmp</value> </property>
參考地址
http://hadoop.apache.org/docs...
在configuration節點中添加如下代碼
<property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.permissions.enabled</name> <value>false</value> </property>
將hostname
配置進去便可
zccoder.com
回到hadoop根目錄
cd hadoop-2.5.0-cdh5.3.0
系統進行format
bin/hdfs namenode -format
啓動namenode
sbin/hadoop-daemon.sh start namenode
啓動datanode
sbin/hadoop-daemon.sh start datanode
(注意)手動退出Hadoop的安全模式
bin/hadoop dfsadmin -safemode leave
訪問http://zccoder.com:50070/
進行驗證
解壓安裝包
tar -zxf zookeeper-3.4.5-cdh5.3.0.tar.gz
進入Zookeeper根目錄
cd zookeeper-3.4.5-cdh5.3.0/
進入conf目錄
cd conf/
複製示例配置文件zoo_sample.cfg爲zoo.cfg
cp zoo_sample.cfg zoo.cfg
在zk根目錄下建立數據存放目錄
mkdir zkData
進入zkData目錄,使用pwd命令得到全路徑
cd zkData pwd /home/zc/studio/zookeeper-3.4.5-cdh5.3.0/zkData
修改zoo.cfg文件的dataDir屬性
dataDir=/home/zc/studio/zookeeper-3.4.5-cdh5.3.0/zkData
server.1=zk1.zccoder.com:2888:3888 server.2=zk2.zccoder.com:2888:3888 server.3=zk3.zccoder.com:2888:3888
在zkData目錄下建立myid文件
touch myid
編輯myid文件,添加服務器編號,這裏寫入1
vim myid
而後,分別在另外兩臺zk上建立myid文件,並分別寫入2和3
分別啓動三臺zk服務
bin/zkServer.sh start
解壓安裝包
tar -zxf hbase-0.98.6-cdh5.3.0.tar.gz
進入HBase根目錄
cd hbase-0.98.6-cdh5.3.0
(可選)刪除docs目錄
rm -rf docs/
進入conf目錄
cd conf/
取消註釋export JAVA_HOME=/usr/java/jdk1.6.0/
並修改成JDK路徑
export JAVA_HOME=/studio/jdk1.8.0_11/
取消註釋export HBASE_MANAGES_ZK=true
並修改成false
使用部署好的zk
export HBASE_MANAGES_ZK=false
在configuration節點下添加如下代碼
<property> <name>hbase.tmp.dir</name> <value>/home/zc/studio/hbase-0.98.6-cdh5.3.0/data/tmp</value> </property> <property> <name>hbase.rootdir</name> <value>hdfs://zccoder.com:9000/hbase</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>zccoder.com</value> </property>
將hostname
配置進去便可
zccoder.com
HBase啓動命令
啓動HBase
bin/start-hbase.sh
訪問http://zccoder.com:60010/
進行驗證HMaster進程
訪問http://zccoder.com:60030/
進行驗證RegionServer進程
HBase表操做命令介紹並演示
進入HBase shell
bin/hbase shell
建立test表,包含info列簇
create 'test','info'
查看全部表
list
使用put增長一條數據
put 'test','0001','info:username','henry'
查看test表的數據
scan 'test'
查看test表的相關信息
describe 'test'
禁用test表
disable 'test'
查看test表是否可用
is_enabled 'test'
刪除test表
drop 'test'
HBase表數據操做命令介紹並演示
進入HBase shell
bin/hbase shell
新增年齡信息
put 'test','0001','info:age','30'
使用count對錶的行數求和
count 'test'
獲取表某一列的數據
get 'test','0001','info:username'
刪除某一行的數據
delete 'test','0001','info:age'
初始化表
truncate 'test'
HBase入門總結
架構體系: