HBase学习笔记(二)

在我们安装好hbase之后,需要对linux内核进行一些设置。像其他数据库一样,hbase也会在同一时间打开大量文件,而linux限制了每个进程打开的文件描述符的数目(默认是1024)。为了让hbase平滑运行,我们需要为运行hbase的用户增加同一时间打开的最大文件描述符的数目。
同时,我们也应该增加hadoop用户的nproc设置。nproc设置制定了一个用户能够同时运行的最大进程数目。如果nproc设置的过小,那么可能会出现OutOfMemoryError错误。

改变内核设置

接下来我们学习如何改变内核设置。具体过程如下:

1、查看一下当前打开文件限制,执行如下命令:
$ ulimit -n
1024
2、查看最大进程设置,执行如下命令:
$ ulimit -u
62732
3、作为root用户登录,运行如下命令:
root# vi /etc/security/limits.conf
然后添加如下内容到limits.conf文件中:
hadoop soft nofile 65535
hadoop hard nofile 65535
hadoop soft nproc 32000
hadoop hard nproc 32000
注:hadoop为指定运行hbase的用户名。
4、为了让设置生效,运行如下命令,添加内容到/etc/pam.d/common-session文件中:
root# echo "session required pam_limits.so" >> /etc/pam.d/common-session
5、注销后再登录,然后使用1,2步骤里面的两个命令,查看一下设置是否生效。
hbase有一个或多个主节点(HMaster),多个从节点(RegionServer)运行在HDFS上。它使用ZooKeeper来确定集群所有组件的一致性,包括主节点,从节点和客户端。通常在运行DataNode的机器上运行RegionServer,因为这样能利用数据本地性的优势。
在启动hbase前需要先启动namenode和datanode,除此之外,还需要启动zookeeper。检查HDFS是否正常运行使用如下命令:
$ $HADOOP_HOME/bin/hadoop fs -ls /
检查zookeeper是否正常运行使用如下命令:
$ echo ruok | nc master1 2181
如果返回imok,则表示服务处于正确状态。

配置hbase
1、配置dfs.support.append。该选项确定HDFS是否支持append(sync)特性。它默认为false,必须将它设置为true,否则你将在regionserver崩溃后丢失数据。
$ vi $HADOOP_HOME/conf/hdfs-site.xml
<property>
<name>dfs.support.append</name>
<value>true</value>
</property>
通过打开dfs.support.append,HDFS写操作能通过一个flush调用确保数据将被持久化。当regionserver挂掉时,数据能使用WAL(预写式日志,Write-Ahead Log)得以恢复。在启动hbase之后,可以通过查看hmaster日志来看append是否成功打开。如果没有打开,你将会在日志文件中看到以下信息:
$ grep -i "HDFS-200" hbase-hadoop-master-master1.log
...syncFs -- HDFS-200 -- not available, dfs.support.append=false
2、增加dfs.datanode.max.xcievers的值。它用来指定DataNode打开的线程的数目,以便处理更多的并发请求。
$ vi $HADOOP_HOME/conf/hdfs-site.xml
<property>
<name>dfs.datanode.max.xcievers</name>
<value>4096</value>
</property>
xcievers默认的大小是256,对于在HDFS上运行的HBase来说,这太小了。
3、增加zookeeper的堆内存大小。
vi $ZK_HOME/conf/java.env
export JAVA_OPTS="-Xms1000m -Xmx1000m"
zookeeper对于内存交换很敏感,这将导致明显的性能下降。
4、为了处理更多的并发请求,增加ZooKeeper的最大客户端连接数目:
$ echo "maxClientCnxns=60" >> $ZK_HOME/conf/zoo.cfg
5、增加HBase的堆内存大小使得HBase运行的更平滑:
$ vi $HBASE_HOME/conf/hbase-env.sh
export HBASE_HEAPSIZE=8000
hbase默认的堆内存大小为1G,对于现代的计算机来说,这明显太小了。一般将该值设置为8G以上,16G以下。
6、减小zookeeper.session.timeout以便hbase能更快速的找到崩溃的regionserver,并且在更短的时间恢复它。
$ vi $HBASE_HOME/conf/hbase-site.xml
<property>
<name>zookeeper.session.timeout</name>
<value>60000</value>
</property>
更小的会话超时时间意味着hbase能更快的发现崩溃的regionserver,并且用更短的时间恢复崩溃的机器。但是,如果这个时间过短,当集群负载过重的时候,HRegionServer进程将杀死它自己,因为它不能设定的超时时间内发送心跳给zookeeper。
7、改变Hadoop/ZooKeeper/HBase的日志设置,编辑hadoop-env.sh/hbase-env.sh文件和og4j.properties文件(在Hadoop/ZooKeeper/HBase安装目录下的conf文件夹中)。最好不要将日志目录设置在安装目录中,取而代之,应该设置在指定的目录。例如:/usr/local/hbase/logs。

$ vi $HBASE_HOME/conf/hbase-env.sh
export HBASE_LOG_DIR=/usr/local/hbase/logs
转载请注明出处: http://blog.csdn.net/iAm333


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值