• VMware创建Linux虚拟机之(四)ZooKeeper&HBase完全分布式安装


    Hello,world!

      

    🐒本篇博客使用到的工具有:VMware16 ,Xftp7

    若不熟悉操作命令,推荐使用带GUI页面的CentOS7虚拟机

    我将使用带GUI页面的虚拟机演示

    虚拟机(Virtual Machine)

    指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。

    【确保服务器集群安装和配置已经完成!】可参考我的上篇博客:

    VMware创建Linux虚拟机之(一)实现免密登录_Vim_飞鱼的博客-CSDN博客

    VMware创建Linux虚拟机之(二)下载安装JDK与配置Java环境变量_Vim_飞鱼的博客-CSDN博客

    VMware创建Linux虚拟机之(三)Hadoop安装与配置及搭建集群_Vim_飞鱼的博客-CSDN博客_利用vmware虚拟机安装hadoop

    前言


    请根据读者的自身情况,进行相应随机应变。

    我的三台CentOS7服务器:
    主机:master(192.168.149.101)
    从机:slave1(192.168.149.102)
    从机:slave2(192.168.149.103)

    每一个节点的安装与配置是相同的,在实际工作中,通常在master节点上完成安装和配置后,然后将安装目录通过 scp 命令复制到其他节点即可。

    注意:所有操作都是root用户权限,需要我们登陆时选择root用户登录。


    zookeeper完全分布式安装


    下载Zookeeper安装包


    Zookeeper 下载地址:

    Apache ZooKeeperhttps://zookeeper.apache.org/

    解压Zookeeper安装包


            首先,需要确保 network 网络已经配置好,使用 Xftp 等类似工具进行上传,把 apache-zookeeper-3.6.2-bin.tar.gz 上传到 opt/ 目录内。(也可使用U盘等工具拖拽)
    上传完成后,在 master 主机上执行以下代码: 解压zookeeper

    1. cd /opt/
    2. tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz

    执行成功后,系统在 opt 目录自动创建 zookeeper-3.6.2 子目录。

      注意:可使用 ls 等命令查看文件解压是否无误。


     

    配置bashrc文件(等同于profile)

    1. #zookeeper config
    2. export ZOOKEEPER_HOME=/opt/zookeeper-3.6.2
    3. export PATH=$PATH:$ZOOKEEPER_HOME/bin

    三台虚拟机均进行此操作 


     

    创建zookeeper数据存放目录

    首先,我们可以使用 ls -l  命令查看文件权限,并修改文件权限

    其中  -R  表示目录   前篇文章已经提到 

    1. ls -l
    2. sudo chmod -R 777 /opt/zookeeper-3.6.2

    分别在三台虚拟机上执行 echo id > /opt/zookeeper-3.6.2/myid  命令创建 zookeeper 编号的 myid  的文件

    1. echo 0 > /opt/zookeeper-3.6.2/myid
    2. echo 1 > /opt/zookeeper-3.6.2/myid
    3. echo 2 > /opt/zookeeper-3.6.2/myid

    编辑zoo.cfg配置文件

    将  zookeeper  下载后解压到当前用户目录  opt  ,然后进入 zookeeper-3.6.2/conf,将zoo_sample.cfg  文件复制为 zoo.cfg 并编辑

    1. cd zookeper-3.6.2/conf​​​​​​​
    2. cp zoo_sample.cfg zoo.cfg​​​​​​​
    3. vim zoo.cfg

    其中 dataDir  是zookeeper数据存放位置,server.y=XXXX:2888:3888  是zookeeper每台配置的信息,y代表zookeeper编号及myid文件对应的内容,XXXX是服务器对应的IP地址或者主机名

    将以上 zookeeper 文件复制到三台服务器上

    1. scp -r /opt/zookeeper-3.6.2 root@slave1:/opt
    2. scp -r /opt/zookeeper-3.6.2 root@slave2:/opt

     

    启动zookeeper

    分别在服务器上执行zookeeper服务启动命令

    服务器1    master​​​​​​​

    1. [root@master bin]# cd /opt/zookeeper-3.6.2/bin/
    2. [root@master bin]# ls
    3. README.txt zkCli.sh zkServer.cmd zkSnapShotToolkit.cmd zkTxnLogToolkit.sh
    4. zkCleanup.sh zkEnv.cmd zkServer-initialize.sh zkSnapShotToolkit.sh
    5. zkCli.cmd zkEnv.sh zkServer.sh zkTxnLogToolkit.cmd
    6. [root@master bin]# zkServer.sh start
    7. ZooKeeper JMX enabled by default
    8. Using config: /opt/zookeeper-3.6.2/bin/../conf/zoo.cfg
    9. Starting zookeeper ... STARTED

    服务器2   slave1​​​​​​​

    1. [root@slave1 ~]# cd /opt/zookeeper-3.6.2/bin/
    2. [root@slave1 bin]# zkServer.sh start
    3. ZooKeeper JMX enabled by default
    4. Using config: /opt/zookeeper-3.6.2/bin/../conf/zoo.cfg
    5. Starting zookeeper ... STARTED

    服务器3    slave2

    1. [root@slave2 ~]# cd /opt/zookeeper-3.6.2/bin/
    2. [root@slave2 bin]# zkServer.sh start
    3. ZooKeeper JMX enabled by default
    4. Using config: /opt/zookeeper-3.6.2/bin/../conf/zoo.cfg
    5. Starting zookeeper ... STARTED

    我们可以使用  status   检查集群状态

    master

    1. [root@master bin]# zkServer.sh status
    2. ZooKeeper JMX enabled by default
    3. Using config: /opt/zookeeper-3.6.2/bin/../conf/zoo.cfg
    4. Client port found: 2181. Client address: localhost. Client SSL: false.
    5. Mode: follower
    6. [root@master bin]#

     slave1

    1. [root@slave1 bin]# zkServer.sh status
    2. ZooKeeper JMX enabled by default
    3. Using config: /opt/zookeeper-3.6.2/bin/../conf/zoo.cfg
    4. Client port found: 2181. Client address: localhost. Client SSL: false.
    5. Mode: leader
    6. [root@slave1 bin]#

     slave2

    1. [root@slave2 bin]# zkServer.sh status
    2. ZooKeeper JMX enabled by default
    3. Using config: /opt/zookeeper-3.6.2/bin/../conf/zoo.cfg
    4. Client port found: 2181. Client address: localhost. Client SSL: false.
    5. Mode: follower
    6. [root@slave2 bin]#

    上图中的  leader  及  follower   是集群自动分配

    至此 ,zookeeper集群安装完成。

    学会了吗?

     

     


     

    HBase完全分布式安装 


    下载HBase安装包


    Apache HBase – Apache HBase Downloadsicon-default.png?t=M85Bhttps://hbase.apache.org/downloads.html


     

    上传至master虚拟机并解压HBase


    1. cd /opt/
    2. tar -zxvf hbase-2.3.3.tar.gz
    3. #修改权限
    4. sudo chmod -R 777 /opt/hbase-2.3.3

    配置环境变量


    1. [root@master ~]# vim /etc/bashrc
    2. #HBase
    3. export HBASE_HOME=/opt/hbase-2.3.3
    4. export PATH=$PATH:$HBASE_HOME/bin
    5. #配置生效
    6. [root@master ~]# source /etc/bashrc

    三台虚拟机均进行此操作 

    在这里我们可以使用 hbase -version  查看环境变量是否正确

    1. [root@master ~]# hbase -version
    2. java version "1.8.0_261"
    3. Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
    4. Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
    5. [root@master ~]#

     

    配置hbase相关文件


    修改及配置 hbase-2.3.3/conf  目录下的  hbase-env.sh  文件

    1. [root@master ~]# cd /opt/hbase-3.6.2/conf
    2. [root@master ~]# vim hbase-env.sh
    3. #!/usr/bin/env bash
    4. # Where log files are stored. $HBASE_HOME/logs by default.
    5. # export HBASE_LOG_DIR=${HBASE_HOME}/logs
    6. # Enable remote JDWP debugging of major HBase processes. Meant for Core Developers
    7. # export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8070"
    8. # export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8071"
    9. # export HBASE_THRIFT_OPTS="$HBASE_THRIFT_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8072"
    10. # export HBASE_ZOOKEEPER_OPTS="$HBASE_ZOOKEEPER_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8073"
    11. # export HBASE_REST_OPTS="$HBASE_REST_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8074"
    12. # A string representing this instance of hbase. $USER by default.
    13. # export HBASE_IDENT_STRING=$USER
    14. # The scheduling priority for daemon processes. See 'man nice'.
    15. # export HBASE_NICENESS=10
    16. # The directory where pid files are stored. /tmp by default.
    17. export HBASE_PID_DIR=/opt/hadoop/hadoop/pids
    18. # Seconds to sleep between slave commands. Unset by default. This
    19. # can be useful in large clusters, where, e.g., slave rsyncs can
    20. # otherwise arrive faster than the master can service them.
    21. # export HBASE_SLAVE_SLEEP=0.1
    22. # Tell HBase whether it should manage it's own instance of ZooKeeper or not.
    23. # export HBASE_MANAGES_ZK=true
    24. # The default log rolling policy is RFA, where the log file is rolled as per the size defined for the
    25. # RFA appender. Please refer to the log4j.properties file to see more details on this appender.
    26. # In case one needs to do log rolling on a date change, one should set the environment property
    27. # HBASE_ROOT_LOGGER to ",DRFA".
    28. # For example:
    29. # HBASE_ROOT_LOGGER=INFO,DRFA
    30. # The reason for changing default to RFA is to avoid the boundary case of filling out disk space as
    31. # DRFA doesn't put any cap on the log size. Please refer to HBase-5655 for more context.
    32. # Tell HBase whether it should include Hadoop's lib when start up,
    33. # the default value is false,means that includes Hadoop's lib.
    34. export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP="true"
    35. # Override text processing tools for use by these launch scripts.
    36. # export GREP="${GREP-grep}"
    37. # export SED="${SED-sed}"
    38. export JAVA_HOME=/opt/jdk1.8.0_261
    39. export HBASE_HOME=/opt/hbase-2.3.3
    40. export HBASE_MANAGES_ZK=false

    其中 HBASE_MANAGES_ZK=false 表示我们使用自己安装  zookeeper  集群而不是 hbase 自带的 zookeeper 集群

    修改及配置 hbase-2.3.3/conf 目录下的 hbase-site.xml 文件

    1. [root@master ~]# vim hbase-site.xml
    2. "1.0"?>
    3. "text/xsl" href="configuration.xsl"?>
    4. <configuration>
    5. <property>
    6. <name>hbase.root.dirname>
    7. <value>hdfs://master:9000/hbasevalue>
    8. property>
    9. <property>
    10. <name>hbase.cluster.distributedname>
    11. <value>truevalue>
    12. property>
    13. <property>
    14. <name>hbase.tmp.dirname>
    15. <value>./tmpvalue>
    16. property>
    17. <property>
    18. <name>hbase.zookeeper.quorumname>
    19. <value>master,slave1,slave2value>
    20. property>
    21. <property>
    22. <name>hbase.zookeeper.property.clientPortname>
    23. <value>2181value>
    24. property>
    25. <property>
    26. <name>hbase.unsafe.stream.capability.enforcename>
    27. <value>falsevalue>
    28. property>
    29. <property>
    30. <name>hbase.zookeeper.property.dataDirname>
    31. <value>/opt/zookeeper-3.6.2value>
    32. property>
    33. <property>
    34. <name>zookeeper.session.timeoutname>
    35. <value>300000value>  
    36. property>
    37. <property>
    38. <name>hbase.master.maxclockskewname>
    39. <value>30000value>
    40. property>
    41. configuration>

    添加 hbase 集群服务器的 ip 或者 hostname ,vi regionservers

    1. [root@master ~]# vim regionservers
    2. master
    3. slave1
    4. slave2

    将以上  Hbase 文件复制到三台服务器上

    1. scp -r /opt/hbase-2.3.3 root@slave1:/opt
    2. scp -r /opt/hbase-2.3.3 root@slave2:/opt

    完成即可 


     

    启动hbase


    配置完成hbase后将上面的所有文件复制到其他两台服务器上,然后使用  start-hbase.sh  命令启动hbase集群

    1. [root@master ~]# cd /opt/hbase-2.3.3/bin/
    2. [root@master bin]# ls
    3. considerAsDead.sh hbase-config.cmd master-backup.sh start-hbase.sh
    4. draining_servers.rb hbase-config.sh region_mover.rb stop-hbase.cmd
    5. get-active-master.rb hbase-daemon.sh regionservers.sh stop-hbase.sh
    6. graceful_stop.sh hbase-daemons.sh region_status.rb test
    7. hbase hbase-jruby replication tmp
    8. hbase-cleanup.sh hirb.rb rolling-restart.sh zookeepers.sh
    9. hbase.cmd local-master-backup.sh shutdown_regionserver.rb
    10. hbase-common.sh local-regionservers.sh start-hbase.cmd
    11. [root@master bin]# start-hbase.sh
    12. running master, logging to /opt/hbase-2.3.3/logs/hbase-root-master-master.out
    13. slave1: running regionserver, logging to /opt/hbase-2.3.3/logs/hbase-root-regionserver-slave1.out
    14. slave2: running regionserver, logging to /opt/hbase-2.3.3/logs/hbase-root-regionserver-slave2.out
    15. master: running regionserver, logging to /opt/hbase-2.3.3/logs/hbase-root-regionserver-master.out
    16. [root@master bin]#


    在哪台服务器使用上述命令启动则那台服务器即为 master 节点,使用 jps命令查看启动情况

    1. [root@master bin]# jps
    2. 7281 ResourceManager
    3. 8450 HMaster
    4. 6965 SecondaryNameNode
    5. 6535 NameNode
    6. 8619 HRegionServer
    7. 7693 QuorumPeerMain
    8. 8943 Jps

     slave1

    1. [root@slave1 bin]# jps
    2. 2180 QuorumPeerMain
    3. 2509 Jps
    4. 1919 DataNode
    5. 2351 HRegionServer
    6. [root@slave1 bin]#

    slave2

    1. [root@slave2 ~]# jps
    2. 3441 QuorumPeerMain
    3. 3875 HRegionServer
    4. 4040 Jps
    5. 3165 DataNode
    6. [root@slave2 ~]#

    可以看到服务器1启动和  HMasterHRegionServer  进程,服务器2和服务器3启动和HRegionServer  进程。

    至此大功告成!!!困扰了我一个月的难题,终于解决了!!!

    🙇‍

    当然,我们也可以通过Web页面查看 Hbase 集群情况 : http://IP:16010

     

     

    加油(ง •_•)ง 

  • 相关阅读:
    微信公众号消息推送,自动回复
    用Python实现一个简单的——人脸相似度对比
    【Pytorch Lighting】第 8 章:自监督学习
    Centos 7.4配置时间同步NTP服务
    数字孪生与GIS:智慧城市的未来之路
    CASE2023
    redis 介绍
    多继承的实例介绍
    双目深度算法——双目深度算法总结
    传统语音增强——基本的维纳滤波语音降噪算法
  • 原文地址:https://blog.csdn.net/m0_63244368/article/details/128201711