HBase 安装步骤
1.配置 hbase 的环境变量
在/root/hbase/conf 目录下的 hbase-env.sh 中添加 Hbase 需要的环境变量。如下: 下面第四行注意这个值为 false 时,表示启动的是独立的 zookeeper。而配置成 true 则是 hbase
自带的 zookeeper。
export JAVA_HOME=/usr/java/jdk1.6.0_14export HBASE_HOME=/root/hbase
export PATH=$PATH:/root/hbase/bin export HBASE_MANAGES_ZK=falseexport HADOOP_HOME=/root/hadoop
2.集群时钟同步
集群的时钟要保证基本的一致。稍有不一致是可以容忍的。 时钟同步见附录 。
3.修改 ulimit 和 nproc
HBase 是数据库,会在同一时间使用很多的文件句柄。大多数 linux 系统使用的默认值 1024 是不能满足的,会导致 FAQ: Why do I see "java.io.IOException...(Toomany openfiles)" in my logs?异常。还可能会发生这样的异常
2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Exception increateBlockOutputStream java.io.EOFException
2010-04-06 03:04:37,542 INFO org.apache.hadoop.hdfs.DFSClient: Abandoning block blk_-6935524980745310745_1391901
所以你需要修改你的最大文件句柄限制。可以设置到 10k。
你还需要修改 hbase 用户的 nproc,在压力下,如果过低会造成 OutOfMemoryError 异常。需要说明的是,这两个设置是针对操作系统的,不是 HBase 本身的。
在 RHEL6 修改 ulimit 和 nproc:
# vim /etc/security/limits.conf //针对某个用户测试(这里使用 root)
# grep '^root' /etc/security/limits.conf
root | soft | nofile | 10240 |
root | hard | nofile | 10240 |
root | soft | nproc | 10240 |
root | hard | nproc | 10240 |
#
退出当前用户,重新登录即可让之前修改的 limits 生效,执行如下命令发现修改成功
# ulimit -u
10240
# ulimit -n
10240
4.配置 hbase-site.xml
先 在 hbase-site.xml, 加 一 个 属 性 hbase.cluster.distributed 设 置 为 true 然 后 把hbase.rootdir 设 置 为 HDFS 的 NameNode 的 位 置 。 例 如 , 你 的 namenode 运 行 在namenode.example.org,端口是 9000 你期望的目录是 /hbase,使用如下的配置
<configuration>
...
<property>
<name>hbase.rootdir</name>
<value>hdfs://namenode.example.org:9000/hbase</value>
<description>The directory sharedby RegionServers.
</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster willbe in. Possible values are
false: standalone andpseudo-distributedsetups with managed Zookeepertrue: fully-distributed withunmanaged ZookeeperQuorum (see hbase-env.sh)
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop2,hadoop3,hadoop4</value>
</property>
<property>
<name>hbase.zookeeper.sission.timeout</name>
<value>60000</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2222</value>
</property>
<property>
<name>hbase.master</name>
<value>hadoop1</value>
</property>
<property>
<name>hbase.regionserver.lease.period</name>
<value>60000</value>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>60000</value>
</property>
...
</configuration>
5.配置 regionservers
完全分布式模式的还需要修改 conf/regionservers.列出了你希望运行的全部HRegionServer,一行写一个 host (就像 Hadoop 里面的 slaves 一样). 列在这 里的server 会随着集群的启动而启动,集群的停止而停止.
6.启动和停止
bin/start-hbase.sh
HBase 也有一个界面,上面会列出重要的属性。默认是在 Master 的 60010 端口 上(HBase RegionServers 会默认绑定 60020 端口,在端口 60030 上有一个展示 信息的界面 ).如果 Master 运行在 master.example.org,端口是默认的话,你 可以用浏览器在http://master.example.org:60010看到主界面. .
停止 HBase
bin/stop-hbase.sh
stopping hbase...............
停止操作需要一些时间,你的集群越大,停的时间可能会越长。如果你正在运行一个分布式的操作,要确认在HBase 彻底停止之前,Hadoop 不能停.
################################
NTP 服务器的安装和配置
1 检查需要的包
[root@rhel.philip.com~]rpm-qa |grep ntp ntp-4.2.4p8-2.el6.i686
ntpdate-4.2.4p8-2.el6.i686
2 配置文件/etc/ntp.conf
3 启动服务
/etc/init.d/ntpd start #//等大约 5 分钟完成本机时间同步以后,方可作为时 间服务器使用
3 在客户机进行时间同步
shell> ntpdate 192.168.4.1
shell> hwclock --systohc //以当前系统时间设置硬件时间
shell> crontab -e
30 7 * * * /usr/sbin/ntpdate 192.168.4.1 && hwclock --systohc shell> /etc/init.d/crond start
################################
rhel 中修改 ulimit 和 nproc
修改 limits.conf 配置文件生效
# ulimit -a//查看当前配置文件 ulimit 全局系数
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0
file size (blocks,-f) unlimited pending signals (-i) 1829
max lockedmemory (kbytes,-l)64
max memory size (kbytes, -m) unlimitedopen files (-n) 1024
pipe size (512 bytes,-p)8
POSIX message queues (bytes, -q)819200 real-time priority (-r) 0
stack size (kbytes, -s)10240
cpu time (seconds,-t) unlimitedmax user processes(-u)1024
virtual memory (kbytes,-v)unlimited file locks (-x) unlimited
# vim /etc/security/limits.conf
# grep'^*' /etc/security/limits.conf
* soft nproc 10240
* hardnproc 10240
* soft nofile 10240
* hardnofile 10240
#
退出当前用户,重新登录即可让之前修改的 limits 生效
# ulimit -n
10240
# ulimit -u//发现 nproc 并没有像 nofile 一样而改变
1024
#
获知,RHEL6 下引入了配置文件/etc/security/limits.d/90-nproc.conf
# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user'sprocesses toprevent
* soft nproc 1024
#
我们修改这个文件尝试是否因为该文件影响,修改如下
# vim /etc/security/limits.d/90-nproc.conf
# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user'sprocesses toprevent
# accidentalfork bombs.
# See rhbz #432903for reasoning.
#* soft nproc 1024
* soft nproc 65535
#
退出当前用户,重新登录即可让之前修改的 limits 生效,执行如下命令发现修改成功
# ulimit -u
10240
# ulimit -n
10240
#
由 此 可 知 , 如 果 要 修 改 配 置 文 件 limits.conf 中 的 nproc 限 制 上 限 是 受 文 件
/etc/security/limits.d/90-nproc.conf 中 nproc 值大小制约的,但是 shell 终端下是不受制约的
另外猜想,如果使用*号让全局用户生效是受文件/etc/security/limits.d/90-nproc.conf 中 nproc
值大小制约的,而如果仅仅是针对某个用户,那么就不受该文件 nproc 值大小的影响
# Default limit for number of user'sprocesses toprevent
# accidentalfork bombs.
# See rhbz #432903for reasoning.
* soft nproc 1024
#* soft nproc 65535
# vim /etc/security/limits.conf //只针对某个用户测试(这里使用 root)
# grep'^root' /etc/security/limits.conf
root soft nproc 10240 root hard nproc 10240
#
退出当前用户,重新登录即可让之前修改的 limits 生效,执行如下命令发现修改成功
# ulimit -u
10240
# ulimit -n
10240
#
之前猜想正确,即只有当使用*号让全局用户生效的时候,生效的 nproc 的值大小是受文件
/etc/security/limits.d/90-nproc.conf 中 nproc 值大小制约的,而如果仅仅是针对某个用户,那么就不受该文件 nproc 值大小的影响。