hadoop 大数据开发3---HBase 安装步骤

来源:互联网 发布:php购物车提交订单 编辑:程序博客网 时间:2024/05/01 06:38

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 值大小的影响。