• 15-Linux部署HBase集群


    Linux部署HBase集群

    简介

    HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库

    和Redis一样,HBase是一款KeyValue型存储的数据库。

    不过和Redis设计方向不同

    • Redis设计为少量数据,超快检索
    • HBase设计为海量数据,快速检索

    HBase在大数据领域应用十分广泛,现在我们来在node1、node2、node3上部署HBase集群。

    HBase官网:https://hbase.apache.org/

    安装

    1. HBase依赖Zookeeper、JDK、Hadoop(HDFS),请确保已经完成前面

      • 集群化软件前置准备(JDK)
      • Zookeeper
      • Hadoop
      • 可参考如下文章
      • 11-Linux部署集群准备:http://t.csdnimg.cn/zWbnd
      • 12-Linux部署Zookeeper集群:http://t.csdnimg.cn/dOvt5
      • 14-Linux部署Hadoop集群:http://t.csdnimg.cn/ptHa3
    2. 【node1执行】下载HBase安装

      • 下载
      wget --no-check-certificate http://archive.apache.org/dist/hbase/2.1.0/hbase-2.1.0-bin.tar.gz
      
      • 1
      • 解压
      tar -zxvf hbase-2.1.0-bin.tar.gz -C /export/server
      
      • 1
      • 软链接
      ln -s /export/server/hbase-2.1.0 /export/server/hbase
      
      • 1
    3. 【node1执行】,修改配置文件,修改conf/hbase-env.sh文件

      # 在28行配置JAVA_HOME
      export JAVA_HOME=/export/server/jdk
      # 在126行配置:
      # 意思表示,不使用HBase自带的Zookeeper,而是用独立Zookeeper
      export HBASE_MANAGES_ZK=false
      # 在任意行,比如26行,添加如下内容:
      export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    4. 【node1执行】,修改配置文件,修改conf/hbase-site.xml文件

      # 将文件的全部内容替换成如下内容:
      <configuration>
              <!-- HBase数据在HDFS中的存放的路径 -->
              <property>
                  <name>hbase.rootdir</name>
                  <value>hdfs://node1:8020/hbase</value>
              </property>
              <!-- Hbase的运行模式。false是单机模式,true是分布式模式。若为false,Hbase和Zookeeper会运行在同一个JVM里面 -->
              <property>
                  <name>hbase.cluster.distributed</name>
                  <value>true</value>
              </property>
              <!-- ZooKeeper的地址 -->
              <property>
                  <name>hbase.zookeeper.quorum</name>
                  <value>node1,node2,node3</value>
              </property>
              <!-- ZooKeeper快照的存储位置 -->
              <property>
                  <name>hbase.zookeeper.property.dataDir</name>
                  <value>/export/server/apache-zookeeper-3.6.0-bin/data</value>
              </property>
              <!--  V2.1版本,在分布式情况下, 设置为false -->
              <property>
                  <name>hbase.unsafe.stream.capability.enforce</name>
                  <value>false</value>
              </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
      • 25
      • 26
      • 27
      • 28
    5. 【node1执行】,修改配置文件,修改conf/regionservers文件

      # 填入如下内容
      node1
      node2
      node3
      
      • 1
      • 2
      • 3
      • 4
    6. 【node1执行】,分发hbase到其它机器

      scp -r /export/server/hbase-2.1.0 node2:/export/server/
      scp -r /export/server/hbase-2.1.0 node3:/export/server/
      
      • 1
      • 2
    7. 【node2、node3执行】,配置软链接

      ln -s /export/server/hbase-2.1.0 /export/server/hbase
      
      • 1
    8. 【node1、node2、node3执行】,配置环境变量

      • 编辑profile配置文件
      vim /etc/profile
      
      • 1
      • 配置在/etc/profile内,追加如下两行
      export HBASE_HOME=/export/server/hbase
      export PATH=$HBASE_HOME/bin:$PATH
      
      • 1
      • 2
      • 刷新环境变量
      source /etc/profile
      
      • 1
    9. 【node1执行】启动HBase

      • 【node1、node2、node3】启动zookeeper
      /export/server/zookeeper/bin/zkServer.sh start
      
      • 1
      • 【node1】启动Hadoop
      start-all.sh
      
      • 1

      请确保:Hadoop HDFS、Zookeeper是已经启动了的

      start-hbase.sh
      
      # 如需停止可使用
      stop-hbase.sh
      
      • 1
      • 2
      • 3
      • 4

      由于我们配置了环境变量export PATH= P A T H : PATH: PATH:HBASE_HOME/bin

      start-hbase.sh即在$HBASE_HOME/bin内,所以可以无论当前目录在哪,均可直接执行

    10. 验证HBase

      浏览器打开:http://192.168.149.131:16010,即可看到HBase的WEB UI页面

      image-20240229093921180

    11. 简单测试使用HBase

      【node1执行】

      hbase shell
      
      # 创建表
      create 'test', 'cf'
      
      # 插入数据
      put 'test', 'rk001', 'cf:info', 'bowen'
      
      # 查询数据
      get 'test', 'rk001'
      
      # 扫描表数据
      scan 'test'
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13

      image-20240229091804805

    问题:

    hbase启动十几秒后,HMaster进程会被终止

    image-20240228214241597

    解决方案:

    参考:http://t.csdnimg.cn/4adOh

    查了一堆资料,有一篇说是要删除/etc/hosts中的127.0.0.1的地址,没用,最后根据上述参考重启了Zookeeper,启用zkCli.sh

    /export/server/zookeeper/bin/zkCli.sh
    
    • 1

    查看所有节点ls /

    [zk: localhost:2181(CONNECTED) 1] ls /
    [admin, brokers, cluster, config, consumers, controller_epoch, feature, hbase, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
    
    • 1
    • 2

    删除hbase节点

    [zk: localhost:2181(CONNECTED) 4] delete /hbase 
    Node not empty: /hbase
    
    • 1
    • 2

    重启zookeeper

    /export/server/zookeeper/bin/zkServer.sh stop
    /export/server/zookeeper/bin/zkServer.sh start
    
    • 1
    • 2

    启动hbase

    [root@node1 conf]# start-hbase.sh 
    running master, logging to /export/server/hbase/logs/hbase-root-master-node1.out
    node3: running regionserver, logging to /export/server/hbase/bin/../logs/hbase-root-regionserver-node3.out
    node2: running regionserver, logging to /export/server/hbase/bin/../logs/hbase-root-regionserver-node2.out
    node1: running regionserver, logging to /export/server/hbase/bin/../logs/hbase-root-regionserver-node1.out
    
    • 1
    • 2
    • 3
    • 4
    • 5

    查看进程jps

    [root@node1 conf]# jps
    2629 NodeManager
    3014 WebAppProxyServer
    5383 Jps
    1752 NameNode
    5081 HRegionServer
    1898 DataNode
    4140 QuorumPeerMain
    2477 ResourceManager
    4989 HMaster
    2222 SecondaryNameNode
    [root@node1 conf]# ssh node2
    Last login: Thu Feb 29 08:46:40 2024 from 192.168.149.1
    [root@node2 ~]# jps
    2369 HRegionServer
    1508 QuorumPeerMain
    1621 DataNode
    1735 NodeManager
    2540 Jps
    [root@node2 ~]# ssh node3
    Last login: Thu Feb 29 08:46:41 2024 from 192.168.149.1
    [root@node3 ~]# jps
    2417 HRegionServer
    2594 Jps
    1609 DataNode
    1723 NodeManager
    1503 QuorumPeerMain
    [root@node3 ~]# exit
    登出
    Connection to node3 closed.
    [root@node2 ~]# exit
    登出
    Connection to node2 closed.
    [root@node1 conf]# 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    hbase启动成功!!!!!

  • 相关阅读:
    Cortex-M架构MCU位带操作最详细解析(主要以STM32为例,包括判断哪些MCU可用)
    DHTMLX JavaScript 待办事项+To Do List
    C++的作用域和命名空间
    二进制明文字符串加密:还原与反还原
    有关HTML标签
    c#中switch常用模式
    【保姆级讲解下QT6.3】
    leetCode 1539. 第 k 个缺失的正整数
    个人玩航拍,如何申请无人机空域?
    Springboot+vue的机动车号牌管理系统(有报告)。Javaee项目,springboot vue前后端分离项目
  • 原文地址:https://blog.csdn.net/qq_59621600/article/details/136432499