1.Why
1.1.為什麼要學習hbase
Web架構圖
Model2
- 開發的順序:從下到上
- 讀别人代碼的時候是從上到下
- 總結(共性)
所有的項目,資料都存儲到了資料庫中 資料庫隻認sql語句(crud)
使用者會在網頁上進行:點選,輕按兩下,右擊,滑動此效果;會被jsp(Servlet)(java)翻譯成sql語句,發送給資料庫
Cud:是對資料庫進行更改操作,R:對資料庫進行查詢操作;一張的crud:最常用的是R(查詢);而每一次發送查詢,都會發送一條sql語句;資料庫見到sql語句就會執行;同樣的查詢會發送多條sql語句;如果發現sql語句執行的結果是一樣的,直接隻查詢一次資料庫;把查詢的資料放到一個地兒(記憶體);下次查詢的時候直接查詢記憶體,這樣會超級快;對于資料庫來說減輕了壓力;如果資料庫裡面的記錄發生了修改,請順手把緩存也更新一次3
- 緩存的條件
表裡面的記錄超級多;
表裡面的記錄不經常修改
命中率:得經常通路
- 緩存的分類:
Jvm的集合:map;缺點:jvm(tomcat)要是重新開機了咋辦
早期的Memcache:它是一個獨立的軟體,使用的時候當成map使用;缺點:電腦重新開機咋辦
Redis:把資料放到記憶體中,會定時的把資料放到磁盤中; Web項目映射到大資料項目中
- Web項目映射到大資料項目中
web項目 | 大資料 |
---|---|
磁盤 | Hdfs |
Db | hive |
緩存(Redis) | Hbase |
2.介紹
官網:http://hbase.apache.org/
- 谷歌的三篇論文
Gfs===>hadoop的hdfs
Mapreduce—>hadoop的mapReduce
bigTable—>Hbase
下載下傳:http://hbase.apache.org/downloads.html
上圖解析:
Bin:可執行檔案
Conf:配置檔案
Docs:幫助文檔
Hbase-webapps:web界面
Lib:jar包
README.txt:幫助文檔
3.配置單機版本
-
将下載下傳好的HBase壓縮包拉到虛拟機上
#解壓目錄
tar -xzvf hbase-2.2.2-bin.tar.gz
#重新命名
mv hbase-2.2.2/ hbase
#删除docs目錄
rm -rf docs/(此目錄是幫助文檔,可删可不删)
-
修改hbase下的 conf hbase-env.sh配置檔案
配置JAVE_HOME路徑
如何檢視java安裝的目錄? - 修改hbase下的 conf hbase-site.xml配置檔案
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hbase.rootdir</name>
<!--
file://表示的是本地目錄
hdfs://表示的是hdfs的目錄;
hdfs://namenode.example.org:8020/hbase
-->
<value>file:///data/hbase/data</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<!-- zookeeper的目錄:data目錄 -->
<value>/data/hbase/zookeeper_data</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
<description>
檢查相容性,如果設定為false,資料有可能丢失(這是一個警告)
Controls whether HBase will check for stream capabilities (hflush/hsync).
Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
with the 'file://' scheme, but be mindful of the NOTE below.
WARNING: Setting this to false blinds you to potential data loss and
inconsistent system state in the event of process and/or node failures. If
HBase is complaining of an inability to use hsync or hflush it's most
likely not a false positive.
</description>
</property>
</configuration>
- 啟動hbase
bin/start-hbase.sh
如果啟動報錯,去檢視日志
網頁通路 :http://主機名:16010
- 停止
bin/stop-hbase.sh
- 啟動用戶端
bin/hbase shell
- 幫助文檔
- 檢視所有的指令 :Help
檢視指定指令的用法
help ‘create_namespace’
![在這裡插入圖檔描述](https://img-blog.csdnimg.cn/20191213201404439.png
建立一張表
create ‘表名’,’列族’(column family)
建立指定namespace目錄下面的表;所有的表名左邊要加上namespace,如果不加,預設是default
建立namespace
檢視表結構
list 表名
插入資料
put 表名,鍵(主鍵),列的名字,值
put ‘test’,‘01’,‘cf:name’,‘zhangsan’
put ‘test’,‘01’,‘cf:age’,‘18’
查詢
查詢所有記錄
scan 表名
根據主鍵查詢
查詢所有記錄(這裡相當于mysql裡的 select * from test where id = 01;)
删除表(删除表一定要先停用表,不然無法删除)
停用表:disable 表名
drop ‘表名’
退出用戶端:quit, exit
資料庫mysql | Hbase |
---|---|
資料庫 | Namespace |
表 | 表 |
記錄 | 記錄 |
列 | 列族下面才有列 |