hbase HA模式安装

1.解压软件

tar zxvf hbase-1.1.5-bin.tar.gz 

---chown -R hadoop:hadoop hbase-1.1.5

2.配置Hbase

① 修改hbase-env.sh 

vi conf/hbase-env.sh,出掉JAVA_HOME的注释,并修改为本地的

export JAVA_HOME=/usr/java/jdk1.7.0_79

export HBASE_LOG_DIR=/opt/hadoop/hbase-1.1.5/logs

export HBASE_MANAGES_ZK=false

export HBASE_PID_DIR=/opt/hadoop/hadoop-2.7.2/pids

export HBASE_CLASSPATH=/opt/hadoop/hbase-1.1.5/conf

修改HBASE_MANAGES_ZK为false,默认为true,表示HBase托管zookeeper实例,如果是HBase独占的zookeeper,可以设定为true。

 

这里需要注意的是,在搭建HBase集群的时候需要保证Hadoop平台运行正常,各个节点的时间差不能相差太大,最后时间能够同步。否则会导致 HBase的启动失败。另外,如果在启动HBase集群时,提示不能解析HDFS路径,这里将Hadoop的core-site.xml和hdfs- site.xml文件复制到HBase的conf文件目录下即可。

②  cp /opt/hadoop/hadoop-2.7.2/etc/hadoop/hdfs-site.xml .

  cp /opt/hadoop/hadoop-2.7.2/etc/hadoop/core-site.xml .

③ 创建临时目录

[hadoop@masternode1 conf]$ mkdir /opt/hadoop/hbase-1.1.5/tmp

[hadoop@masternode1 conf]$ mkdir /opt/hadoop/hbase-1.1.5/logs

[hadoop@masternode1 conf]$ chmod 756  /opt/hadoop/hbase-1.1.5/logs

[hadoop@masternode1 conf]$ chmod 756  /opt/hadoop/hbase-1.1.5/tmp/

 

④ 配置hbase-site.xml文件

vi hbase-site.xml

  

          

      

        hbase.rootdir  

        hdfs://cluster-ha/hbase  

      

          

      

        hbase.cluster.distributed  

        true  

      

          

      

        hbase.zookeeper.quorum  

      slavenode1,slavenode2,slavenode3,slavenode4,slavenode5,slavenode6,slavenode7  

    

   

    

    hbase.zookeeper.property.clientPort  

    2181  

      

          

      

        hbase.tmp.dir  

        /opt/hadoop/hbase-1.1.5/tmp  

      

      

        hbase.master  

        hdfs://cluster-ha:16000  

      

  

    hbase.master.info.port  

    16010  

   

          

      

        hbase.zookeeper.property.dataDir  

        /opt/hadoop/zookeeper/data  

      

      

        hbase.client.write.buffer  

        5242880  

      

      

        hbase.regionserver.handler.count  

        300  

        Count of RPC Listener instances spun up on  

            RegionServers.Same property is used by the Master for count of master  

            handlers.  

      

  

        hbase.table.sanity.checks  

        false  

      

  

        zookeeper.session.timeout  

        30000  

      

  

        hbase.hregion.max.filesize  

        32212254720  

     

hbase.rootdir:Region Servers共享的HBase持久化数据的存储地址。需要使用包含文件系统scheme的完全限定地址。

hbase.cluster.distributed:指定Hbase集群是否以分布式方式运行。

hbase.master.port:Master绑定的端口,包括backup-master.

hbase.zookeeper.property.dataDir:这个是ZooKeeper配置文件zoo.cfg中的dataDir。zookeeper存储数据库快照的位置。

hbase.zookeeper.quorum:ZooKeeper的所有成员服务器列表,服务器名之间用逗号分隔。

hbase.zookeeper.property.clientPort:这个是ZooKeeper配置文件zoo.cfg中的clientPort。ZooKeeper提供给客户端连接的端口,默认是2181。

⑤ 配置[hadoop@masternode1 conf]# vi log4j.properties 

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR  

⑥ 修改regionservers,将RegionServers写入。

vim conf/regionservers

slavenode1

slavenode2

slavenode3

slavenode4

⑦ 添加环境变量方便调用HBase

  vim /etc/profile

export HBASE_HOME=/opt/hadoop/hbase-1.1.5

export PATH=$PATH:$HBASE_HOME/bin

⑧ 创建两个目录.zookeeper单独配置就不用这步骤

[hadoop@masternode1 hbase-1.1.5]# mkdir logs

[hadoop@masternode1 hbase-1.1.5]# mkdir data

[hadoop@masternode1 data]# echo ‘1’> myid 

[hadoop@masternode1 data]# echo ‘2’> myid 

[hadoop@slavenode2 data]# echo ‘3’> myid 

[hadoop@slavenode3 data]# echo ‘4’> myid

⑨ 将修改好的安装目录分发到所有节点,一并修改环境变量。

[hadoop@masternode1 hadoop]$ for i in {31,32,33,34,35,36,37,38,39};do scp -r hbase-1.1.5 [email protected]$i:/opt/hadoop/ ; done

[hadoop@masternode1 hadoop]$ for i in {31,32,33,34,35,36,37,38,39};do scp ~/.bash_profile hadoop@192.168.237.2$i:~/.bash_profile ; done

把/etc/profile ~/.bash_profile 分发各级节点

防止内存溢出(主从节点都要配置)

[hadoop@masternode1 ~]# vi /etc/security/limits.d/90-nproc.conf 

# Default limit for number of user's processes to prevent

# accidental fork bombs.

# See rhbz #432903 for reasoning.

 

*          soft    nproc     1024

root       soft    nproc     unlimited

hadoop     soft    nproc     10240 (更改后的值)

⑩ 启动HBase

这步要现看下hbase下的包是否全才执行,若全就不用执行此部find /opt/hadoop/hadoop-2.7.2/share/hadoop -name "hadoop*.jar" | xargs -i cp {} /opt/hadoop/hbase-1.1.5/lib/

[hadoop@masternode1 bin]$# pwd

/opt/hadoop/hbase-1.1.5/bin   

[hadoop@masternode1 bin]$ sh start-hbase.sh 

在masternode2上调用hbase-daemon.sh start master

即可。

11 通过jps查看进程。

Masternode1上有HMaster,Masternode2上有HMaster和HRegionServer,slavenode1和slavenode3上是HRegionServer。

http://192.168.237.230:16010/master-status

http://192.168.237.231:16010/master-status

12 验证完毕

[hadoop@masternode1 bin]# ./hbase shell

SLF4J: Class path contains multiple SLF4J bindings.

SLF4J: Found binding in [jar:file:/opt/hadoop/hbase-1.1.5/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Found binding in [jar:file:/opt/hadoop/hadoop-2.7.2/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

2016-09-08 03:45:45,878 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 上面第三步配置是为了解决该报错的

HBase Shell; enter 'help' for list of supported commands.

Type "exit" to leave the HBase Shell

Version 1.1.5, r239b80456118175b340b2e562a5568b5c744252e, Sun May  8 20:29:26 PDT 2016

hbase(main):001:0> create 'test', 'cf'

 ERROR: Can't get master address from ZooKeeper; znode data == null
现在是hbase和zookeeper链接不上,请核查原有

 原因是四台机器的zookeeper必须要全部启动完毕之后才可以启动hbase。

 

[hadoop@slavenode1 bin]# hbase shell

HBase Shell; enter 'help' for list of supported commands.

Type "exit" to leave the HBase Shell

Version 1.1.5, r239b80456118175b340b2e562a5568b5c744252e, Sun May  8 20:29:26 PDT 2016

 

hbase(main):001:0> create 't1',{NAME => 'f1', VERSIONS => 2},{NAME => 'f2', VERSIONS => 2}

0 row(s) in 2.5320 seconds

=> Hbase::Table - t1

解决slf4问题

[hadoop@masternode1 bin]#  hbase classpath | tr ":" "\n" | grep -i slf4

/opt/hadoop/hbase-1.1.5/lib/slf4j-api-1.7.7.jar

/opt/hadoop/hbase-1.1.5/lib/slf4j-log4j12-1.7.5.jar

[hadoop@masternode1 bin]# rm /opt/hadoop/hbase-1.1.5/lib/slf4j-api-1.7.7.jar

 rm /opt/hadoop/hbase-1.1.5/lib/slf4j-log4j12-1.7.5.jar

到相应的目录删掉找出来的文件

总结:

    1. hbase.master.port需要指定,不然启动backup-master时会报Already in use的错误。

    2. HMaster(包括backup-master)需要能够passwordless ssh到其它服务器

    3. ZooKeeper应该用奇数个节点。

你可能感兴趣的:(hbase,经验)