HBase一个十分高效的非关系型数据库。可以处理 百亿行X百万列的数据量,且速度在毫秒级,很强大!
1. Hbase 特点
面向列
HBase是面向列的存储和权限控制,并支持独立检索,根据数据的增加,动态增加列。
多版本
HBase每一列的数据的存储有多个version。 例如: 家庭住址有多个版本。
稀疏性
为空的列并不占用存储空间,表可以设计的十分稀疏。
扩展性
底层依赖 HDFS
高可靠性
WAL机制保证了数据写入时不会因集群异常而导致写入数据丢失。Replication机制保证了在集群出现严重问题时,数据不会发生丢失和损坏。而且Hbase底层使用HDFS,HDFS本身也有备份。
高性能
读写数据具有很高的性能,查询可以达到毫秒级。
与其说HBase是面向列的,不如说它是面向列簇的,用户在创建表的时候,不需要创建有哪些列,只用规定有哪些列簇即可。另外说明,一张表的列簇不会超过五个。
HBase架构体系
图片来自网络
HBase伪分布式配置包括三个部分:JDK、 Hadoop、HBase。而zookeeper(伪分布式我用的自带的,所以不用下载)
上资源:
我的路径是/usr/local/bigdata,以后不作说明
1. JDK配置略过,直接下载后解压,配一下环境变量即可。
2. ssh的安装与配置
sudo apt-get install ssh
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh localhost
如果免密码则设置成功
3. 配置Hadoop
- 修改 hadoop-env.sh
添加的路径是JDK路径 - 修改 core-site.xml
第一个value标签是 主机名:9000
第二个value标签是 hadoop用来存放namenode相关的原数据和日志信息的文件夹路径。需要自己创建:
cd /usr/local/bigdata/hadoop-2.5.0/
sudo mkdir -p data/tmp
-修改 hdfs-site.xml
-修改 slaves
将localhost改为主机名
启动hadoop,看是否配置成功,去sbin目录
格式化namenode
bin/hdfs namenode -format
启动hadoop
sudo sbin/hadoop-daemon.sh start namenode
sudo sbin/hadoop-daemon.sh start datanode
然后去浏览器输入:
http://主机名:50070
进入Hadoop的监控界面,如果出现以下界面则配置成功
下滑看到namenode
点击datanode可以看到datanode信息
datanode
4. 配置HBase
- 修改 hbase-env.sh
这里就是使用自己的zookeeper,如果要做完全分布式的话,这里为false
- 修改 hbase-site.xml
这里的改法和hadoop类似。第一个value还是需要自己创建,否则会使用默认的tmp文件夹。
cd /usr/local/bigdata/hbase-0.98.6-hadoop2/
sudo mkdir -p data/tmp
第二个value 仍然是主机名:9000
- 修改 regionservers
将localhost 修改为 主机名。主机名通过hostname获取。
接下来 通过启动HBase
bin中的启动文件
sudo bin/start-hbase.sh
然后去浏览器输入:
http://主机名:60010
进入HBase的监控界面,如果出现以下界面则配置成功
HBase监控页面
问题:
- 如果hadoop启动失败,并且报错是与权限相关,那么解决办法是:
将 /etc/sshd.confg 中的
PermitRootLogin prohibit-password 改为
PermitRootLogin yes
- 如果HBase是1.0以上版本的话,输入主机名:60010可能会失败:
原因:因为1.0.1版本的hbase的master web 默认是不运行的,所以需要自己配置默认端口。配置如下:
在hbase-site.xml中加入以下内容即可
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>