前面寫了Hadoop的Hive,咱們再來看看另一個HBase數(shù)據(jù)庫,這個是NoSQL數(shù)據(jù)庫,非關(guān)系數(shù)據(jù)庫,下面有和普通數(shù)據(jù)庫的比較部分。
一、HBase數(shù)據(jù)庫基礎(chǔ)知識
1.HBase是縱表,存儲形式如下
| Id | Column | Value |
|---|---|---|
| 1 | Name | zhangsan |
| 1 | Birthday | 1987-01-01 |
| 2 | Name | lisi |
| 2 | Birthday | 1988-01-01 |
2.相比傳統(tǒng)關(guān)系數(shù)據(jù)庫,方便擴展,節(jié)省空間,如果需要新增字段,Gender,只需要再增加一行或者多行數(shù)據(jù),不需要為每一個Id的人都增加該字段,而傳統(tǒng)數(shù)據(jù)庫必須為所有數(shù)據(jù)都增加該字段。具體如下,只需要給Id為1的人增加一條數(shù)據(jù)即可。
| Id | Column | Value |
|---|---|---|
| 1 | Name | zhangsan |
| 1 | Birthday | 1987-01-01 |
| 1 | Gender | 男 |
| 2 | Name | lisi |
| 2 | Birthday | 1988-01-01 |
3.由于在大數(shù)據(jù)集群中,存儲比較便宜,縱表把很多不同的信息都存儲到同一張表中,例如用戶的班級信息,教師是哪位,都可以同時存儲在同一張表中,每一次查詢都可以把用戶的所有信息都查詢出來,效率很高。
4.HBase不支持SQL,只允許增刪改查,表上沒有索引,只有行鍵可以標識記錄,沒有其他二級索引,沒有約束檢查字段是否有效,沒有辦法說明該字段是否允許為null,沒有辦法指定外鍵等等。
5.總結(jié)下HBase和傳統(tǒng)數(shù)據(jù)庫的區(qū)別:
| 傳統(tǒng)數(shù)據(jù)庫 | HBase |
|---|---|
| 按照行和列存儲 | 按照列存儲 |
| 支持SQL | NoSQL |
| 支持復(fù)雜查詢,group by join等操作 | 只支持增刪改查 |
| 存儲規(guī)范化,最大程度減少冗余并確保更新簡單,例如增加字段,每條數(shù)據(jù)都增加該字段 | 最小化磁盤查找,把所有數(shù)據(jù)集中到一個表中,取消存儲標準化,增加字段,不必處理所有數(shù)據(jù),只針對需要增加的Id,增加一行數(shù)據(jù)即可。 |
| 兼容ACID | 只在行級別兼容ACID,跨行或者多個表無法保證數(shù)據(jù)的完整性 |
二、安裝HBase
到阿帕奇官網(wǎng)下載https://hbase.apache.org/downloads.html
由于我的是hadoop,不兼容最新版的hbase,因此下載了2021年的hbase-1.7.1-bin.tar.gz
#將下載好的文件cp到docker中
docker cp Downloads/hbase-1.7.1-bin.tar.gz master:/usr/local
#解壓
tar -xvzf hbase-1.7.1-bin.tar.gz
#編輯配置文件hbase-site.xml
cd /usr/local/hbase-1.7.1/conf
vi hbase-site.xml
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>./tmp</value>
</property>
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>
</configuration>
#編輯配置文件hbase-env.sh
vi hbase-env.sh
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
#配置hbase環(huán)境變量
vi ~/.bash_profile
export HBASE_HOME=/usr/local/hbase-1.7.1
PATH=$PATH:$HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$JAVA_HOME/bin:$HBASE_HOME/bin
source ~/.bash_profile
#啟動hbase
./start-hbase.sh
最后通過執(zhí)行jps查看到HQuorumPeer,HRegionServer表明啟動成功,下一篇咱們看看HBase的基礎(chǔ)命令如何
jps
138 NameNode
432 SecondaryNameNode
5512 HQuorumPeer
265 DataNode
708 NodeManager
5718 HRegionServer
5990 Jps
606 ResourceManager
謝各位的閱讀,謝謝您動動手指點贊,萬分感謝各位。另外以下是我之前寫過的文章,感興趣的可以點進去繼續(xù)閱讀。
歷史文章
Hadoop系列-入門安裝
Hadoop系列-HDFS命令
Hadoop系列-Hive安裝
Hadoop系列-Hive數(shù)據(jù)庫常見SQL命令
Hadoop系列-HBase數(shù)據(jù)庫
Hadoop系列-HBase數(shù)據(jù)庫(二)
Hadoop系列-HBase數(shù)據(jù)庫JAVA篇
Hadoop系列-Spark安裝以及HelloWorld
JAVA面試匯總(五)數(shù)據(jù)庫(一)
JAVA面試匯總(五)數(shù)據(jù)庫(二)
JAVA面試匯總(五)數(shù)據(jù)庫(三)
JAVA面試匯總(四)JVM(一)
JAVA面試匯總(四)JVM(二)
JAVA面試匯總(四)JVM(三)
JAVA面試匯總(三)集合(一)
JAVA面試匯總(三)集合(二)
JAVA面試匯總(三)集合(三)
JAVA面試匯總(三)集合(四)
JAVA面試匯總(二)多線程(一)
JAVA面試匯總(二)多線程(二)
JAVA面試匯總(二)多線程(三)
JAVA面試匯總(二)多線程(四)
JAVA面試匯總(二)多線程(五)
JAVA面試匯總(二)多線程(六)
JAVA面試匯總(二)多線程(七)
JAVA面試匯總(一)Java基礎(chǔ)知識