最后一部分了。。。分两章吧。HBase和Hadoop紧密相关,更为具体的部署和运维内容推荐Hadoop Operations和HBase Administration Cookbook。本文粗粒度列出一些HBase部署运维的最佳实践和基本原则。
一个完整的HBase集群包含HBase Master,ZooKeeper,RegionServers和Hadoop相关组件。生产集群按照规模大小可分为小型(10-20个节点)、中型(50个节点)和大型(超过50个节点)。集群规划需要为这些组件选择合适的硬件配置和部署分布:
另外,从性价比和易用性角度来讲,可以考虑Amazon提供的AWS云服务。
自动化部署工具一般使用Puppet或者Chef。Apache提供了Whirr帮助在云端部署HBase,其他发行版也有自己专门的部署管理工具。
据我所知,基本还没有公司在生产环境使用Apache Hadoop原生发行版,要么自己改改(大公司,比如狼厂),要么使用Cloudera的CDH发行版或者Hortonworks的HDP平台(中小企业)。CDH等版本的优点是在Apache发行版的基础上打了不少patches(patches本身一般也会在Apache代码库中,但还不在当前发行版中)修正bug,经过更严格的测试,稳定性和性能方面都会有所改善。
HBase所有配置参数请参考主页文档http://hbase.apache.org/book/configuration.html。这节会列出部分重要参数,在下一章的性能调优相关章节还会继续介绍一些重要参数。
HBase配置参数分两部分,一部分是环境变量配置在hbase-env.sh,另一部分在hbase-site.xml中。Hbase-evn.sh中的环境变量被Master和RegionServer的启动脚本读取,比如Java堆大小、垃圾回收设置等参数。以HBASE_REGIONSERVER_OPTS为例:
-Xmx8g -Xms8g -Xmn128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70
与HBase相关的Hadoop的配置参数要注意dfs.datanode.max.xcievers,代表DataNode上HDFS客户端读写数据的最大线程数,默认的256太低了,可以设置成4096;操作系统方面,需要修改ulimit最大打开文件数量,保持文件打开让HBase不用每次读写操作都打开关闭文件,另外一个是swap交换行为,在RegionServer上发生交换严重影响性能
$ sysctl -w vm.swappiness=0
hbase-daemon.sh脚本通过ssh管理各个节点上的守护进程:
$HBASE_HOME/bin/hbase-daemon.sh --config$HBASE_HOME/conf/ start master $HBASE_HOME/bin/hbase-daemon.sh --config$HBASE_HOME/conf/ start regionserver $HBASE_HOME/bin/hbase-daemon.sh --config$HBASE_HOME/conf/ start master- backup $HBASE_HOME/bin/hbase-daemon.sh --config$HBASE_HOME/conf/ stop master $HBASE_HOME/bin/hbase-daemon.sh --config$HBASE_HOME/conf/ stop regionserver $HBASE_HOME/bin/hbase-daemon.sh --config$HBASE_HOME/conf/ stop master-backup
读书笔记-HBase in Action-第四部分-(1)部署
原文地址:http://blog.csdn.net/idontwantobe/article/details/39479617