2.1快速启动指南
- hbase-site.xml 里面的 hbase.rootdir 记得要修改否则默认是在 /tmp/hbase-${user.name} 下,如果服务器重启数据就有可能会丢失
2.2.1硬件
- 至少需要64位系统,至少要分配大于4G的内存给HBASE,所以机器要24G
- cpu要2个4核
- slave硬盘要使用JBOD,master用RAID0+1 或者 RAID 1+0 ,但是磁盘要使用带RAID固件的磁盘,这样一旦硬件出错,RAID固件马上失效,这样datanode可以快速知道
- 磁盘用6~12 个1~2T的磁盘
以下是 拥有800TB 存储空间的集群中每个java进程的典型内存配置
进程 | 堆 | 描述 |
---|---|---|
NameNode | 8G | 每100TB的数据或者是每100万个文件大约会占用NameNode 1G的内存 |
SecondaryNameNode | 8G | 在内存中重做主NameNode的EditLog,因此配置需要与NameNode一样 |
JobTracker | 2G | 适度 |
HBase Master | 4G | 轻量级负载,适度 |
DataNode | 1G | 适度 |
TaskTracker | 1G | 适度 |
HBase RegionServer | 12G | 大部分可用内存,同时为操作系统(缓冲区缓存)和任务进程留下足够的空间 |
Task Attempts | 1G | 剩余内存除以允许的任务最大的单机进程数 |
ZooKeeper | 1G | 适度 |
推荐配置:master机器要运行NameNode, SecondaryNameNode, JobTracker 和 HBaseMaster 推荐24G 内存, slave 要运行 DataNode, TaskTracker, 和 HBase RegionServer 推荐24G以上
节点类型 | 推荐 |
---|---|
master | 24G |
slave | 24G以上 |
磁盘
节点类型 | 推荐 |
---|---|
master | 4X1T SATA, RAID 0+1 (也可以用2T) |
slave | 6X1T SATA, JBOD |
网络
节点类型 | 推荐 |
---|---|
master | 万兆以太网, 双PSU, 1U 或者2U |
slave | 万兆以太网, 单PSU, 1U 或者2U |
文件系统
使用ext3要注意以下几点优化
- 挂载文件系统的时候设置noatime属性来禁止记录文件访问时间戳以减少内核的管理开销
使用ext4时需要注意
- 关闭延迟分配(delayed allocation)采用延迟分配数据会保留在内存中,该特性增加了服务器崩溃的时候丢失数据的概率
如果出现Too Many open files错误就要增加Linux系统的文件打开数设置为超过10000
在HBase的日志第一行就打印了ulimit 信息
还需要调整 /etc/sysctl.conf 调整 fs.file-max的值
DataNode 处理线程数
DataNode 会设置服务时可处理的文件数上限,叫 xcievers
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
否则容易出现以下问题
SWAP
swap在服务器上已经逐渐的被禁止了,因为一旦使用了swap会导致机器性能低下,甚至连ssh都连不上。如果使用了swap就容易出现 租约换效 。
服务器如果在交换过程中被唤醒,master认为region已经死了,region却不知道,并再次向master汇报信息,这时region会收到master的YouAreDeadException异常,并认为自己需要进入死亡状态,并自杀(称为 朱丽叶暂停)
可以通过 vm.swappiness=5 可以设置成0,以减少交换区的使用频率
Amazon S3
Amazon S3 支持Hadoop 的 两种模式 raw/native 和 block
分布式模式
- conf/hbase-env.sh 中设置 HBASE_MANAGES_ZK 为 true,可以将zookeeper作为HBase的一部分启动(默认就是true)
- HBase读取哪份Hadoop集群配置是由 hbase-env.sh 中 HADOOP_CONF_DIR 决定的,并且记得把 HADOOP_CONF_DIR 加到 HBASE_CLASSPATH 中
- HBase 配置文件的参数可以覆盖 HDFS 配置文件中的参数
客户端配置
客户端通过读取 hbase-site.xml 中的hbase.zookeeper.quorum参数来连接region server