搭建 HBase环境

搭建 HBase环境

1. 单机环境搭建

1.1 环境说明

  • centos:7

  • java 8

  • HBase 2.1.3

  • zookeep 2.1.13

1.2 安装路径说明

/soft/hadoop /soft/hbase

1.3 安装前置条件

  • HBase 需要事先安装Hadoop , zookeeper

  • hadoop :192.168.101.110:8200

  • zookeeper :192.168.101.110:2181

  1. 安装

2.1 下载安装

1. 下载地址:https://mirrors.cnnic.cn/apache/hbase/2.1.3/
wget https://mirrors.cnnic.cn/apache/hbase/2.1.3/hbase-2.1.3-bin.tar.gz
```
cd ~/download
rz ***
```
2. 解压到/soft/hbase 目录下
```
tar -xvf hbase-2.1.3-bin.tar.gz -C /soft/hbase/
```

2.2 配置HBase

2.2.1 配置HBase环境变量并添加一下信息

  sudo vim /etc/profile
​
  ## set hbase
  export HBASE_HOME=/soft/hbase/hbase-2.1.3
  export PATH=$PATH:$HBASE_HOME/bin
​
  ## 配置用户级别
  cd ~
  vim .bash_profile
​
  ## set hbase
  export HBASE_HOME=/soft/hbase/hbase-2.1.3
  export PATH=$PATH:$HBASE_HOME/bin
  
  # source
  source /etc/profile
  source .bash_profile
​

2.2.2 配置config (/hbase-2.1.3/conf/目录下) 1). 修改hbase-env.sh ``` export JAVA_HOME=/usr/java/jdk1.8.0_181

## 不使用自带的 zookeeper
export HBASE_MANAGES_ZK=false
​
```
​
2). 配置hbase-site.xml
    ```
      
            
                hbase.rootdir
                hdfs://192.168.101.110/hbase
            
            
            
                hbase.cluster.distributed
                true
            
            
            
                hbase.zookeeper.quorum
                192.168.101.110:2181
            
    
            
              hbase.unsafe.stream.capability.enforce
                false
           
    
    ```
3). 将core-site.xml hdfs-site.xml 复制过来
4). 修改 regionservers文件 (配置主机名(hostname))
    vim regionservers
    192.168.101.110

2.3 启动HBase

集群环境搭建

1.hbase启动方式之一

      ./start-hbase.sh
​
启动完了之后可以通过查看相应的logs 日志查看启动是否正常,
查看hbase进程(jps):
    4768 SecondaryNameNode
    5504 QuorumPeerMain   -- zk相关
    13104 Jps
    4417 NameNode
    5137 NodeManager
    9461 HRegionServer    -- hbase相关
    4571 DataNode
    9292 HMaster          -- hbase相关
    5005 ResourceManager

### hbase启动方式之二:启动我们自己安装的zookeeper,并分别启动master和regionserver:

```
./bin/zkServer.sh start
​
./bin/hbase-daemon.sh start master
 
./bin/hbase-daemon.sh start regionserver
​
```
查看hbase进程: 同上

 

2.打开浏览器查看hbase

http://192.168.8.201:16010

3.我们也可以将master启动起来,作为备用的master,其中一个挂掉,另一个也可以启动起来(机器挂掉,我们可以在机器上查看http://192.168.8.202:60010/master-status )

./hbase-daemon.sh start master
​
### 4. 停止hbase进程:
```
 ./bin/stop-hbase.sh
 
```

3. 启动报错以及处理方案

### 3.1 启动hbase报java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder
```
java.lang.NoClassDefFoundError: org/apache/htrace/SamplerBuilder
at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:635)
​
Caused by: java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
```
处理方式:原因是启动缺少相应的jar所以报错了,需要将指定的包复制到lib 目录
```
 cp $HBASE_HOME/lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar $HBASE_HOME/lib/
 
'''
​
### 3.2 本地单机部署hbase,想要使用独立zookeeper,不使用自带的
vim conf/hbase-env.sh
export HBASE_MANAGES_ZK=false
设置不使用自带zookeeper,这一步设置完按理说就可以使用独立的zookeeper程序了,但是总是报错:
```
Could not start ZK at requested port of 2181.  ZK was started at port: 2182.  Aborting as clients (e.g. shell) will not be able to find this ZK quorum.
​
```
很明显,这是启动自带zookeeper与独立zookeeper冲突了
很疑惑,明明设置不启动自带zookeeper了,为什么还是去启动了,后来上网查询才知道,把hbase.cluster.distributed设置为false,也就是让hbase以standalone模式运行时,依然会去启动自带的zookeeper.所以要做如下设置,值为true
  vim conf/hbase-site.xml

    hbase.cluster.distributed
    true 

3.3 Hbase启动后,hmaster会在几秒钟后自动关闭(停掉)!!!

     检查logs 日志之后没有发现报错的信息。
     
产生错误的原因:zookeeper 链接信息过期了
解决办法:进入zookeeper 删除hbase (rmr /hbase )重启zookeeper即可
具体步骤:
        1、停止hbase(./stop-hbase.sh)
        2、运行如下代码
           hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair
        3、运行如下代码
           /usr/local/hadoop/app/zookeeper-3.4.6/bin/zkCli.sh
        4、使用 ls /来扫描zookeeper中的数据
        5、使用 rmr/hbase删除zookeeper中的hbase数据
        6、重新启动hbase即可

3.4 hbase 启动之后,进程显示正常,但是调试接口的时候发现报错。Failed open of region=hbase:meta
详细提示如下:

2019-07-08 10:44:51,317 ERROR [RS_OPEN_META-regionserver/hbase-1:16020-0] handler.OpenRegionHandler: Failed open of region=hbase:meta,,1.1588230740
java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper
	at org.apache.hadoop.hbase.io.asyncfs.AsyncFSOutputHelper.createOutput(AsyncFSOutputHelper.java:51)
	at org.apache.hadoop.hbase.regionserver.wal.AsyncProtobufLogWriter.initOutput(AsyncProtobufLogWriter.java:169)
	at org.apache.hadoop.hbase.regionserver.wal.AbstractProtobufLogWriter.init(AbstractProtobufLogWriter.java:166)
	..........
	at org.apache.hadoop.hbase.wal.WALFactory.getWAL(WALFactory.java:284)
	at org.apache.hadoop.hbase.regionserver.HRegionServer.getWAL(HRegionServer.java:2127)
	at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.openRegion(OpenRegionHandler.java:284)
	at org.apache.hadoop.hbase.regionserver.handler.OpenRegionHandler.process(OpenRegionHandler.java:108)
	at org.apache.hadoop.hbase.executor.EventHandler.run(EventHandler.java:104)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

问题原因:

       经过查看相关的资料,网上有以下说法:

      1. hbase-site.xml 文件配置的目录hbase.tmp.dir,hbase.zookeeper.property.dataDir等目录没有读写权限导致相关的表信息保存不上。ps:有可能搭建的hadoop 目录也可能会会存在该问题。注意配置路径有读写的权限。

      2.  RegionServer因无法初始化对HDFS的访问而中止

       vim  conf/hbase-site.xml


     hbase.wal.provider
     filesystem
 

经过上边的配置,发现问题解决~

    3. 【1】删除新集群上zookeeper上有关该表的节点,【2】清除新集群hdfs上和该表有关的数据,【3】重启新集群上的所有RegionServer

 

2. 集群环境搭建

2.1 集群规划

主机 Hmaster HregionService
s201  
s202
s203  
s204  

 

2.2 配置

  1. 服务器时间同步

    yum install ntp -y
    ntpdate 时间服务器

     

  2. hbase-env.sh配置(同单机环境)

    JAVA_HOME=/usr/local/java/jdk1.8.0_191
    HBASE_MANAGES_ZK=false(关闭Hbase本身的zookeeper集群)

     

  3. hbase-site.xml配置

    
              
            
                hbase.rootdir
                hdfs://s201/hbase
            
            
            
                hbase.cluster.distributed
                true
            
            
            
                hbase.zookeeper.quorum
                s201,s202,s203,s204
            
            
                hbase.unsafe.stream.capability.enforce
                false
           
    
  4. regionservers配置

    s202
    s203
    s204

     

  5. backup-masters配置(注意backup-masters需要手动创建)

    s202
  6. 将hdfs当中的hdfs-site.xml **拷贝hbase的conf目录下(因为存储数据需要在hdfs上,同单机版)

  7. 启动: 在s201(Master节点) 执行 bin/start-hbase.sh启动主节点。

  8. jps查看进程。主节点HMaster, 备 HMaster ,HRegionService 从节点:HRegionService

搭建 HBase环境_第1张图片

  1. 浏览器器访问

    http://s201:16010

搭建 HBase环境_第2张图片

你可能感兴趣的:(hbase,hbase环境搭建单机环境,集群环境,hbase)