前面写了Hadoop的Hive,咱们再来看看另一个HBase数据库,这个是NoSQL数据库,非关系数据库,下面有和普通数据库的比较部分。
一、HBase数据库基础知识
1.HBase是纵表,存储形式如下
Id | Column | Value |
---|---|---|
1 | Name | zhangsan |
1 | Birthday | 1987-01-01 |
2 | Name | lisi |
2 | Birthday | 1988-01-01 |
2.相比传统关系数据库,方便扩展,节省空间,如果需要新增字段,Gender,只需要再增加一行或者多行数据,不需要为每一个Id的人都增加该字段,而传统数据库必须为所有数据都增加该字段。具体如下,只需要给Id为1的人增加一条数据即可。
Id | Column | Value |
---|---|---|
1 | Name | zhangsan |
1 | Birthday | 1987-01-01 |
1 | Gender | 男 |
2 | Name | lisi |
2 | Birthday | 1988-01-01 |
3.由于在大数据集群中,存储比较便宜,纵表把很多不同的信息都存储到同一张表中,例如用户的班级信息,教师是哪位,都可以同时存储在同一张表中,每一次查询都可以把用户的所有信息都查询出来,效率很高。
4.HBase不支持SQL,只允许增删改查,表上没有索引,只有行键可以标识记录,没有其他二级索引,没有约束检查字段是否有效,没有办法说明该字段是否允许为null,没有办法指定外键等等。
5.总结下HBase和传统数据库的区别:
传统数据库 | HBase |
---|---|
按照行和列存储 | 按照列存储 |
支持SQL | NoSQL |
支持复杂查询,group by join等操作 | 只支持增删改查 |
存储规范化,最大程度减少冗余并确保更新简单,例如增加字段,每条数据都增加该字段 | 最小化磁盘查找,把所有数据集中到一个表中,取消存储标准化,增加字段,不必处理所有数据,只针对需要增加的Id,增加一行数据即可。 |
兼容ACID | 只在行级别兼容ACID,跨行或者多个表无法保证数据的完整性 |
二、安装HBase
到阿帕奇官网下载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环境变量
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
最后通过执行jps查看到HQuorumPeer,HRegionServer表明启动成功,下一篇咱们看看HBase的基础命令如何
jps
138 NameNode
432 SecondaryNameNode
5512 HQuorumPeer
265 DataNode
708 NodeManager
5718 HRegionServer
5990 Jps
606 ResourceManager
谢各位的阅读,谢谢您动动手指点赞,万分感谢各位。另外以下是我之前写过的文章,感兴趣的可以点进去继续阅读。
历史文章
Hadoop系列-入门安装
Hadoop系列-HDFS命令
Hadoop系列-Hive安装
Hadoop系列-Hive数据库常见SQL命令
Hadoop系列-HBase数据库
Hadoop系列-HBase数据库(二)
Hadoop系列-HBase数据库JAVA篇
Hadoop系列-Spark安装以及HelloWorld
JAVA面试汇总(五)数据库(一)
JAVA面试汇总(五)数据库(二)
JAVA面试汇总(五)数据库(三)
JAVA面试汇总(四)JVM(一)
JAVA面试汇总(四)JVM(二)
JAVA面试汇总(四)JVM(三)
JAVA面试汇总(三)集合(一)
JAVA面试汇总(三)集合(二)
JAVA面试汇总(三)集合(三)
JAVA面试汇总(三)集合(四)
JAVA面试汇总(二)多线程(一)
JAVA面试汇总(二)多线程(二)
JAVA面试汇总(二)多线程(三)
JAVA面试汇总(二)多线程(四)
JAVA面试汇总(二)多线程(五)
JAVA面试汇总(二)多线程(六)
JAVA面试汇总(二)多线程(七)
JAVA面试汇总(一)Java基础知识