1 HBase介绍
HBase是一个分布式的、面向列的开源数据库,就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。它是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase的常见使用场景如下:
1、大数据量(100s TB级数据)且有快速随机访问的需求。例如淘宝的交易历史记录,数据量巨大无容置疑,面向普通用户的请求必然要即时响应。
2、容量的优雅扩展。大数据驱使下的动态扩展系统容量是必须的。
3、业务场景简单,不需要关系数据库中很多特性(例如交叉列、交叉表,事务,连接等等)。
4、合理设计rowkey。因为hbase的查询用rowkey是最高效的,也几乎是生产环境下唯一可行的方式。
2 集群规划
在搭建HBase高可用集群时,将HBase的RegionServer部署在HDFS的3个DataNode节点上,HBase的HMaster服务部署在HDFS的2个NameNode(Active和Standby)节点上,部署2个HMaster保证集群的高可用性,防止单点问题。这里使用了独立的ZooKeeper集群,未使用HBase自带的ZooKeeper。下面给出HBase的集群搭建架构图:
搭建HBase HA集群需要首先搭建Hadoop HA集群,其方法可参考我的上一篇文章《Hadoop2.0 HA高可用集群配置详解》。在其基础上加入HBaseHA,规划整个集群由5台主机组成,具体情况如下表所示:
主机名 |
IP地址 |
安装的软件 |
JPS |
hadoop-master1 |
172.16.20.81 |
Jdk/hadoop/hbase |
Namenode/ZKFC/ResourceManager/ JobHistoryServer/HMaster |
hadoop-master2 |
172.16.20.82 |
Jdk/hadoop/hbase |
Namenode/ZKFC/ResourceManager/ WebProxyServer/HMaster |
hadoop-slave1 |
172.16.20.83 |
Jkd/hadoop/hbase/zookeepe |
Datanode/JournalNode/NodeManager/ quorumPeerMain/HRegionServer |
hadoop-slave2 |
172.16.20.84 |
Jkd/hadoop/hbase/zookeeper |
Datanode/JournalNode/NodeManager/ quorumPeerMain/HRegionServer |
hadoop-slave3 |
172.16.20.85 |
Jkd/hadoop/hbase/zookeeper |
Datanode/JournalNode/NodeManager/ quorumPeerMain/HRegionServer |
3 企业级系统参数配置
// 查看linux系统最大进程数和最大文件打开数
$ ulimit-a
// 设置linux系统最大进程数和最大文件打开数(设置完重新登录shell)
$ suroot
# vim/etc/security/limits.conf
root soft nproc 50000
root hard nproc 50000
root soft nofile 25535
root hard &n