• 搭建hbase集群环境


    一、搭建ZooKeeper

    下载最新的zookeeper包,上传到服务器上
    配置apache-zookeeper-3.6.3-bin/conf/zoo.cfg

    tickTime=2000
    dataDir=/home/zxhy/hadoop-3.3.3/data/zookeeper
    clientPort=2181
    initLimit=10
    syncLimit=4
    server.1=hadoop01:2888:3888
    server.2=hadoop02:2888:3888
    server.3=hadoop03:2888:3888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    分别在三台节点的设置的dataDir目录下新建myid文件。

    mkdir zookeeper
    cd zookeeper
    touch myid
    echo 1 >> myid
    cat myid
    
    • 1
    • 2
    • 3
    • 4
    • 5

    相同的方式设置第二个节点和第三个节点为2和3

    mkdir zookeeper
    cd zookeeper
    touch myid
    echo 2 >> myid
    cat myid
    
    mkdir zookeeper
    cd zookeeper
    touch myid
    echo 2 >> myid
    cat myid
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    二、配置环境变量

    切换到hbase的conf目录下并查看。发现conf目录下有配置文件hbase-env.sh、hbase-site.xml、regionservers
    配置hbase-env.sh

    export HBASE_MANAGES_ZK=false
    export JAVA_HOME=/opt/jdk1.8.0_202
    
    • 1
    • 2

    配置hbase-site.xml

    
    
    <configuration>
      <property>
        <name>hbase.rootdirname>
        <value>hdfs://hadoop01:19000/hbasevalue>
      property>
      <property>
        <name>hbase.cluster.distributedname>
        <value>truevalue>
      property>
      <property>
        <name>hbase.tmp.dirname>
        <value>/home/zxhy/hadoop-3.3.3/data/hbase/tmpvalue>
      property>
      <property>
        <name>hbase.zookeeper.quorumname>
        <value>hadoop01:2181,hadoop02:2181,hadoop03:2181value>
      property>
      <property>
        <name>hbase.unsafe.stream.capability.enforcename>
        <value>falsevalue>
      property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    配置regionservers,每行一个信任的hostname

    hadoop01
    hadoop02
    hadoop03
    
    • 1
    • 2
    • 3

    三、配置环境变量

    加入环境变量

    #编辑文件,该文件是我们在hadoop中搭建是创建的,可以直接在里面添加
    vim /etc/profile.d/hadoop.sh
    
    export HBASE_HOME=/home/zxhy/hadoop-3.3.3/app/hbase-2.4.13
    export PATH=$PATH:$HBASE_HOME/bin
    
    export ZK_HOME=/home/zxhy/hadoop-3.3.3/app/apache-zookeeper-3.6.3-bin
    export PATH=$PATH:$ZK_HOME/bin
    #刷新参数
    source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    四、启动ZooKeeper

    分别进入三个节点到zookeeper bin文件下,通过命令【./zkServer.sh start】来启动服务。
    在三台节点上利用【zkServer.sh status】查看Zookeeper节点状态。

    #启动服务
    ./zkServer.sh start
    #查看状态
    ./zkServer.sh status
    
    • 1
    • 2
    • 3
    • 4

    五、启动Hbase

    在主节点master进入目录/hbase/bin/,执行命令【./start-hbase.sh】

    ./start-hbase.sh
    
    • 1

    六、问题记录

    问题一,HBase的jar包和Hadoop的jar包有冲突

    1、HBase启动时异常如下

    java.lang.IllegalArgumentException: object is not an instance of declaring class
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at org.apache.hadoop.hbase.io.asyncfs.ProtobufDecoder.<init>(ProtobufDecoder.java:69)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2、尝试了各种解决方法,最后找到了根源:

    问题原因:HBase的jar包和Hadoop的jar包有冲突,导致服务没有起来
    修改方法:

    cd /home/hadoop/app/hbase/conf
    vi hbase-env.sh
    export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true" #把这行的注释打开
    
    • 1
    • 2
    • 3

    问题二,各个节点的和主节点相差太大

    regionserver启动时异常如下

    org.apache.hadoop.hbase.ClockOutOfSyncException: Server hadoop03,16020,1658940643229 has been rejected; Reported time is too far out of sync with master.  Time difference of 28724032ms > max allowed of 30000ms
    
    • 1

    修改方法将节点主机的时间和主节点保持同步即可。

  • 相关阅读:
    .NET 7 RC 2 发布,倒计时一个月发布正式版
    Cobra眼睛蛇-强大的Golang CLI框架,快速上手的脚手架搭建项目工具,详细安装和使用
    《C++程序设计原理与实践》笔记 第7章 完成一个程序
    kubernetes,service详解下
    基于spring gateway 的静态资源缓存实现
    2023年MathorCup高校数学建模挑战赛大数据挑战赛赛题浅析
    Go 如何实现多态
    Python数据的输出
    基于MetaTown构建数字资产平台
    前端原生socket封装
  • 原文地址:https://blog.csdn.net/holybird0213/article/details/125979422