hadoop生态系统之hbase的部署
hbase的一些设计机制
zookeeper与hbase
hbase依赖zookeeper来管理它的HRegionServers,zookeeper存储的数据结构类似于文件系统的目录节点树模型,主要通过维护和监控你存储的数据的状态变化,触发事件,
从而进行基于数据的集群管理,zookeeper的用法,就类似如目录节点树的操作,首先创建一个目录节点,给某个目录节点设置数据,获取某个目录节点的所有子目录节点,
给某个目录节点设置权限和监控这个目录节点的状态变化,通知目录节点的拥有者。
zookeeper作为一个集群系统的管理系统,它对所管理的集群是无耦和的,它提供一个存储和管理数据场所,集群系统将它的管理模块入驻其中,
一旦数据的状态发生变化,Zookeeper就将负责通知相应的住户们作出反应,从而实现管理Master/Slave集群。
此外,zookeeper也适合用于集群的配置管理,共享琐,队列管理等。作为一个独立的集群管理系统它是很优秀的,值得一试。
zookeeper可以分布式部署,也可以只有一个。
hbase的存储系统
hbase有一套自己的完整的数据存储系统HStore,包括自己的存储格式(封装自HFile),内存存储缓冲MemStore,最终存储StoreFiles实体,小StoreFiles合并Compact系统,
大StoreFiles的Region Split系统。记录写操作的HLog等。
时钟同步
habse对时钟一致性有较高的要求。realserver建议装上ntp时钟同步服务。
Thrift Gateway
跟大多数nosql一样支持Thrift接口。 称为 hbase-thrift-server你需要启动这个服务。bin/hbase.sh thrift
文件打开数目限制
hbase运行时会大量的打开文件,一般默认的限制1024是不够的。使用ulimit打开habse的文件限制。设置为最大值把。
安装部署hbase集群
选用cloudera的 hbase0.94.6-cdh4.3.0
选用理由:依据cloudera的特色,cloudera知名,有实力,商用性强,生态系统组件完善,且各个组件版本对应正确,文档维护好。
申请的机器:
192.168.2.21
192.168.2.22
假设你已经安装好了。
配置过程:
配置hbase是比较简单的,只需要配置 conf/hbase-site.xml 跟文件就行 conf/hbase-env.sh
下面是我们用的一些:(注意我这里是用ip来代替的,在你的环境中请使用hostname来替换)
核心配置conf/hbase-site.xml
hbase.rootdir hdfs://192.168.2.21:9000/hbase hbase的根目录
hbase.cluster.distributed true 以分布式方式运行
hbase.zookeeper.property.quorum 192.168.2.21 zookeeper监管列表
hbase.regionserver.dns.interface 选中一个网卡,所有机器需要一样。无必要,不设置
hbase.regionserver.dns.nameserver 设置dns解析地址 用于解析hostname,生产环境有必要
运行是环境变量配置conf/hbase-env.sh :
HBASE_MANAGES_ZK true 使用内置的zookeeper服务在下面的文章中会介绍集群部署zookeeper
regionserver列表 conf/regionserver:
192.168.2.21 HMaster zookeeper regionserver
192.168.2.22 regionserver
启动hbase
*启动前确保你的主机们都是ssh无密码互通的,而且时间是一致的
bin/start-hbase.sh
启动后使用jps命令,你应该可以看到相关的服务,其中QuorumPeerMain为zookeeper服务
测试使用hbase
bin/hbase shell
进入shell界面
create ‘t1′,{NAME=>’cf1′},{NAME=>’cf2′},{NAME=>’cf3′}
创建表t1 columnfamily 是cf1,cf2,cf3
使用命令 list
列出你创建的表信息。