hbase 安装准备工作一定注意要不然会死的很难看

2.1.2.1.ssh

必须安装ssh,sshd也必须运行,这样Hadoop的脚本才可以远程操控其他的Hadoop和HBase进程。ssh之间必须都打通,不用密码都可以登录,详细方法可以Google一下("sshpasswordlesslogin").

2.1.2.2.DNS

HBase使用本地hostname才获得IP地址.正反向的DNS都是可以的.

如果你的机器有多个接口,HBase会使用hostname指向的主接口.

如果还不够,你可以设置hbase.regionserver.dns.interface来指定主接口。当然你的整个集群的配置文件都必须一致,每个主机都使用相同的网络接口

还有一种方法是设置hbase.regionserver.dns.nameserver来指定nameserver,不使用系统带的.

2.1.2.3.LoopbackIP

HBaseexpectstheloopbackIPaddresstobe127.0.0.1.Ubuntuandsomeotherdistributions,forexample,willdefaultto127.0.1.1andthiswillcauseproblemsforyou.

/etc/hostsshouldlooksomethinglikethis:

127.0.0.1localhost

127.0.0.1ubuntu.ubuntu-domainubuntu

2.1.2.4.NTP

集群的时钟要保证基本的一致。稍有不一致是可以容忍的,但是很大的不一致会造成奇怪的行为。运行NTP或者其他什么东西来同步你的时间.

如果你查询的时候或者是遇到奇怪的故障,可以检查一下系统时间是否正确!

2.1.2.5.ulimit和nproc

HBase是数据库,会在同一时间使用很多的文件句柄。大多数linux系统使用的默认值1024是不能满足的,会导致FAQ:WhydoIsee"java.io.IOException...(Toomanyopenfiles)"inmylogs?异常。还可能会发生这样的异常

2010-04-0603:04:37,542INFOorg.apache.hadoop.hdfs.DFSClient:ExceptionincreateBlockOutputStreamjava.io.EOFException

2010-04-0603:04:37,542INFOorg.apache.hadoop.hdfs.DFSClient:Abandoningblockblk_-6935524980745310745_1391901

所以你需要修改你的最大文件句柄限制。可以设置到10k。大致的数学运算如下:每列族至少有1个存储文件(StoreFile)可能达到5-6个如果区域有压力。将每列族的存储文件平均数目和每区域服务器的平均区域数目相乘。例如:假设一个模式有3个列族,每个列族有3个存储文件,每个区域服务器有100个区域,JVM将打开3*3*100=900个文件描述符(不包含打开的jar文件,配置文件等)

你还需要修改hbase用户的nproc,在压力下,如果过低会造成OutOfMemoryError异常[3][4]。

需要澄清的,这两个设置是针对操作系统的,不是HBase本身的。有一个常见的错误是HBase运行的用户,和设置最大值的用户不是一个用户。在HBase启动的时候,第一行日志会现在ulimit信息,确保其正确。[5]

2.1.2.5.1.在Ubuntu上设置ulimit

如果你使用的是Ubuntu,你可以这样设置:

在文件/etc/security/limits.conf添加一行,如:

hadoop-nofile32768

可以把hadoop替换成你运行HBase和Hadoop的用户。如果你用两个用户,你就需要配两个。还有配nprochard和softlimits.如:

hadoopsoft/hardnproc32000

.

在/etc/pam.d/common-session加上这一行:

sessionrequiredpam_limits.so

否则在/etc/security/limits.conf上的配置不会生效.

还有注销再登录,这些配置才能生效!

2.1.2.6.Windows

HBase没有怎么在Windows下测试过。所以不推荐在Windows下运行.

如果你实在是想运行,需要安装Cygwin并虚拟一个unix环境.详情请看Windows安装指导.或者搜索邮件列表找找最近的关于windows的注意点

2.1.3.hadoop

选择Hadoop版本对HBase部署很关键。下表显示不同HBase支持的Hadoop版本信息。基于HBase版本,应该选择合适的Hadoop版本。我们没有绑定Hadoop发行版选择。可以从Apache使用Hadoop发行版,或了解一下Hadoop发行商产品:http://wiki.apache.org/hadoop/Distributions%20and%20Commercial%20Support

Table2.1.Hadoopversionsupportmatrix

HBase-0.92.xHBase-0.94.xHBase-0.96

Hadoop-0.20.205SXX

Hadoop-0.22.xSXX

Hadoop-1.0.xSSS

Hadoop-1.1.xNTSS

Hadoop-0.23.xXSNT

Hadoop-2.xXSS

S=supportedandtested,支持

X=notsupported,不支持

NT=nottestedenough.可以运行但测试不充分

由于HBase依赖Hadoop,它配套发布了一个Hadoopjar文件在它的lib下。该套装jar仅用于独立模式。在分布式模式下,Hadoop版本必须和HBase下的版本一致。用你运行的分布式Hadoop版本jar文件替换HBaselib目录下的Hadoopjar文件,以避免版本不匹配问题。确认替换了集群中所有HBase下的jar文件。Hadoop版本不匹配问题有不同表现,但看起来都像挂掉了。

修改hostname直接使用命令hostnamehadoop1直接生效。。

修改/etc/hosts并不及时生效。需要重启??

hbase和hadoop集群时间一定要同步。

发生诡异问题,可以查看zk上的配置属性如:

[zk:localhost:2181(CONNECTED)1]ls/hbase

[splitlog,online-snapshot,unassigned,root-region-server,rs,table92,backup-masters,hadoop1,table,draining,shutdown,hbaseid]

[zk:localhost:2181(CONNECTED)2]ls/hbase/rs

[hadoop2,60020,1372646349424,hadoop1,60020,1372646349495]

可以帮助你快速定位问题。

相关推荐