改变内核设置
接下来我们学习如何改变内核设置。具体过程如下:
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的用户名。
root# echo "session required pam_limits.so" >> /etc/pam.d/common-session
5、注销后再登录,然后使用1,2步骤里面的两个命令,查看一下设置是否生效。
$ $HADOOP_HOME/bin/hadoop fs -ls /
检查zookeeper是否正常运行使用如下命令:
$ echo ruok | nc master1 2181
如果返回imok,则表示服务处于正确状态。
$ vi $HADOOP_HOME/conf/hdfs-site.xml
dfs.support.append
true
通过打开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
dfs.datanode.max.xcievers
4096
xcievers默认的大小是256,对于在HDFS上运行的HBase来说,这太小了。
vi $ZK_HOME/conf/java.env
export JAVA_OPTS="-Xms1000m -Xmx1000m"
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以下。
$ vi $HBASE_HOME/conf/hbase-site.xml
zookeeper.session.timeout
60000
更小的会话超时时间意味着hbase能更快的发现崩溃的regionserver,并且用更短的时间恢复崩溃的机器。但是,如果这个时间过短,当集群负载过重的时候,HRegionServer进程将杀死它自己,因为它不能设定的超时时间内发送心跳给zookeeper。
$ vi $HBASE_HOME/conf/hbase-env.sh
export HBASE_LOG_DIR=/usr/local/hbase/logs
转载请注明出处: http://blog.csdn.net/iAm333