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 nofile 25535
hadoop soft nproc 50000
hadoop hard nproc 50000
hadoop soft nofile 25535
hadoop hard nofile 25535
/