zoukankan      html  css  js  c++  java
  • hbase环境安装、shell操作

    镜像:

    http://mirror.bit.edu.cn/apache/zookeeper/

    https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

    https://archive.apache.org/dist/zookeeper/ 【建议从这下载,版本比较全】

    特别注意:zookeeper之后,需要下载-bin的版本才行。见参考文献说明。

    Zookeeper安装

    为什么需要zookeeper

    https://zhuanlan.zhihu.com/p/69114539?utm_source=wechat_session

    hbase自己带了zookeeper,但是我们尽量部署独立的zookeeper,不要强耦合在一起。

    1.解压、重命名

    把apache-zookeeper-3.5.6-bin.tar.gz上传到linux的/opt/目录下,并解压。

    [root@master opt]# tar -zxvf apache-zookeeper-3.5.6-bin.tar.gz    #解压文件到当前/opt目录

    [root@master opt]# mv apache-zookeeper-3.5.6 zookeeper   #将文件夹名改为zookeeper

    2.配置myid文件

    本教程三个节点:myid是配置zookeeper集群管理节点的文件。

    maste节点配置1

    slave1节点配置2

    slave2节点配置3

    如下是在master节点上配置myid

    [root@master opt]# mkdir -p ./zookeeper/data   #创建数据存储目录,zoo.cfg中需要配置

    [root@master opt]# echo '1'>./zookeeper/data/myid

    3.配置zoo.cfg文件

    [root@master opt]# cp zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo.cfg   #创建文件

    [root@master opt]# vi zookeeper/conf/zoo.cfg   #编辑文件内容,如下

    tickTime=2000    #心跳间隔

    initLimit=10    #F和L之间初始连接时能容忍的最多心跳数

    syncLimit=5  # F服务器与L服务器之间请求和应答之间能容忍的最多心跳数.

    dataDir=/opt/zookeeper/data  #默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里

    clientPort=2181 #客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求

    dataLogDir=/data/soft/zookeeper-3.4.12/logs  #配置日志文件

    # 服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
    # 这个配置项的书写格式比较特殊,规则如下:
    # server.N=YYY:A:B  
    # 其中N表示服务器编号,YYY表示服务器的IP地址,A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所采用的为伪集群时,IP地址都一样,只能是A端口和B端口不一样。

    server.1=master:2888:3888

    server.2=slave1:2888:3888

    server.3=slave2:2888:3888    #其它可以默认,该三条是必须加的,重点内容

    4.复制zookeeper到其它节点

    [root@master opt]# scp -r zookeeper slave1:/opt/

    [root@master opt]# scp -r zookeeper slave2:/opt/

    修改对应节点的myid文件的内容:

    [root@slave1 opt]#  echo '2'>./zookeeper/data/myid

    [root@slave2 opt]#  echo '3'>./zookeeper/data/myid

    添加环境变量

    vi ~/.bash_profile

    export ZOOKEEPER_HOME=/opt/zookeeper

    export PATH=$PATH:$ZOOKEEPER_HOME/bin

    source ~/.bash_profile   #立即生效

    5.启动zookeeper

    zookeeper1 对应的是 1,zookeeper2 对应的是 2,zookeeper3 对应的是 3

    常用指令:

    需要分别启动三个zookeeper节点

    启动命令:zookeeper/bin/zkServer.sh start    

    停止命令:zookeeper/bin/zkServer.sh stop  

    重启命令:zookeeper/bin/zkServer.sh restart

    状态查看命令:zookeeper /bin/zkServer.sh status 

    zk自带命令行工具,linux下可通过执行 zkCli.sh 连接:

    zkCli.sh [-server ip:port]    #远程地址可选,不填情况下连接本地服务器

    zookeeper/bin/zkCli.sh -server 192.168.56.110:2181   #进去后,可创建节点、删除节点等操作

    测试

    zkServer.sh start   #分别启动三个节点

    zkServer.sh status  #查看状态

    [root@master opt]# zkServer.sh status

    ZooKeeper JMX enabled by default

    Using config: /opt/zookeeper/bin/../conf/zoo.cfg

    Client port found: 2181. Client address: localhost.

    Mode: follower

    [root@slave1 opt]# zkServer.sh status

    ZooKeeper JMX enabled by default

    Using config: /opt/zookeeper/bin/../conf/zoo.cfg

    Client port found: 2181. Client address: localhost.

    Mode: leader

     

    到此,zookeeper安装成功。

    接下来,我们将安装hbase。

    hbase安装

    软件获取:

    http://mirror.bit.edu.cn/apache/hbase/

    https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/

    1:兼容问题

    首先我们要解决版本兼容问题:

    hbase与hadoop

    http://hbase.apache.org/book.html#hadoop 因为我们是2.7.5 ,hbase的版本1.4.x或2.1.8都兼容

    hbase与hive

    https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration

     

    hbase与zookeeper的兼容

    http://hbase.apache.org/book.html#zookeeper

    因为我们是2.7.5 ,zookeeper是3.5.6,所以选择hbase的版本2.1.8。

    2.解压、重命名

    把hbase-2.1.8-bin.tar.gz上传到linux的/opt/目录下,并解压。

    [root@master opt]# tar -zvxf hbase-2.1.8-bin.tar.gz    #解压文件到当前/opt目录

    [root@master opt]# mv hbase-2.1.8-bin.tar.gz hbase   #将文件夹名改为zookeeper

    3.启动hadoop、建立hdfs缓存目录

    [root@master opt]# hadoop fs -mkdir /hbase

    [root@master opt]# hadoop fs -ls /

    Found 3 items

    drwxr-xr-x   - root supergroup          0 2019-12-04 21:38 /hbase

    drwx-w----   - root supergroup          0 2019-11-25 14:34 /tmp

    drwxr-xr-x   - root supergroup          0 2019-11-25 17:44 /user

    4.配置hbase-env.sh

    export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC"

    export JAVA_HOME=/usr/local/java    #根据自己的java安装目录配置

    export HBASE_CLASSPATH=/opt/hadoop

    export HBASE_MANAGES_ZK=false  #是否用自带的zookeeper

    5.配置hbase-site.xml

    ##配置存储目录-默认情况下HBase是写到/tmp的。不改这个配置,数据会在重启的时候丢失
    <property>
      <name>hbase.rootdir</name>
      <value>hdfs://master:9000/hbase</value>
    </property>
    
    <property>
      <name>hbase.cluster.distributed</name>
      <value>true</value>
    </property>
    
    <property>
      <name>hbase.master</name>
      <value>master</value>
    </property>
     
    <property>
      <name>hbase.zookeeper.property.clientPort</name>
      <value>2181</value>
    </property>
     
    <property>
      <name>hbase.zookeeper.quorum</name>
      <value>master,slave1,slave2</value>
    </property>
     
    <property>
      <name>zookeeper.session.timeout</name>
      <value>60000000</value>
    </property>
     
    <property>
      <name>dfs.support.append</name>
      <value>true</value>
    </property>
     
    <property>
      <name>hbase.zookeeper.property.dataDir</name>
      <value>/opt/zookeeper/data</value>
    </property>

    6.更改 regionservers

    删掉文件里的localhost,改为

    master

    slave1

    slave2

    7.分发并同步安装包

    [root@master opt]#  scp -r hbase slave1:/opt/

    [root@master opt]#  scp -r hbase slave2:/opt/

    8.启动和关闭集群

    按照如下顺序启动集群:

    1.启动zookeeper

    zookeeper/bin/zkServer.sh start  #三个节点都要执行

    2.启动hadoop

    start-all.sh   #主节点启动

    3.启动hbase

    注意hbase没有添加环境变量

    hbase/bin/start-hbase.sh  #主节点启动

    关闭集群顺序

    关闭hbase

    ./stop-hbase.sh  #主节点

    关闭hadoop

    ./stop-all.sh    #主节点

    关闭zookeeper

    zookeeper/bin/zkServer.sh stop  #三个节点都执行

    9.启动后,jps查看进程

    master 上进程和 slave 进程列表

    [root@master bin]# jps

    1795 QuorumPeerMain   #zookeeper进程

    2085 NameNode       #hdfs进程

    2277 SecondaryNameNode   #hdfs进程

    3480 HregionServer    #hbase进程

    2426 ResourceManager   #yarn进程

    3356 Hmaster  #hbase进程

    3789 Jps

    [root@slave1 conf]# jps

    2147 Jps

    1590 DataNode

    1655 NodeManager

    1401 QuorumPeerMain

    1980 HRegionServer

    [root@slave2 conf]# jps

    1473 QuorumPeerMain

    1654 DataNode

    1720 NodeManager

    2185 Jps

    2030 HRegionServer

    10.hbase的简单使用

    进入hbase命令行

    [root@master bin]# ./hbase shell    #启动hbase命令行窗口

    SLF4J: Class path contains multiple SLF4J bindings.

    ……

    HBase Shell

    Use "help" to get list of supported commands.

    Use "exit" to quit this interactive shell.

    For Reference, please visit: http://hbase.apache.org/2.0/book.html#shell

    Version 2.1.8, rd8333e556c8ed739cf39dab58ddc6b43a50c0965, Tue Nov 19 15:29:04 UTC 2019

    Took 0.0135 seconds                                                                                               

    hbase(main):001:0>

    hbase(main):002:0> status   #查看状态

    1 active master, 0 backup masters, 3 servers, 0 dead, 0.6667 average load

    Took 2.4203 seconds

    hbase shell常用操作

          实战案例:

          创建user表,三个列族,实现数据的添加、查询、删除等shell操作。

    1.DDL操作

    创建用户表user,三个列族: userId,address,info

    create ‘user’,’userId’,’address’,’info’   //创建表-列族,列族是表的一部分,列不是。

    常用命令:

    describe user   #查看表的信息

    list    #查看所有表

    alter ‘user’,’delete’=>’userId’     #删除列族名

    is_enabled  ‘user’                      #判断是否为enable

    is_disabled  ‘user’                      #判断是否为disabled

    删除表temp:

    create ‘temp’,’info’                     #创建一个临时表

    disable ‘temp’                            #删除之前,先不可用

    drop  ‘temp’                                #删除表temp

    2.DML操作

    1、添加数据:

    格式:put 表名 row_key cf:column value

    column完全动态扩展,每行可以有不同的columns。

    put 'user','tom','info:age','26'

    put 'user','tom','info:birthday','1998-04-05'

    put 'user','tom','info:company','baidu'

    put 'user','tom','address:country','china'

    put 'user','tom','address:province','beijing'

    put 'user','tom','address:city','beijing'

    put 'user','merry','info:age','25'

    put 'user','merry','info:birthday','1999-06-06'

    put 'user','merry','info:company','tengxun'

    put 'user','merry','address:country','china'

    put 'user','merry','address:province','guangdong'

    put 'user','merry','address:city','shenzhen'

    put 'user','merry','info:favorite','song'

    2、获取一个rowkey的所有数据

    格式:get 表名 row_key

    hbase(main):015:0> get 'user','tom'

    COLUMN                            CELL                                                                                                                                 

     address:city                       timestamp=1591608964166, value=beijing                                                                                              

     address:country                    timestamp=1591608961900, value=china                                                                                                

     address:province                   timestamp=1591608961972, value=beijing                                                                                               

     info:age                          timestamp=1591608950416, value=26                                                                                                   

     info:birthday                      timestamp=1591608954543, value=1998-04-05                                                                                           

     info:company                      timestamp=1591608961864, value=baidu                                                                                                 

    6 row(s) in 0.0600 seconds

    3、获取一个id,一个列族的所有数据
    格式: get 表名 row_key column

    get 'user','tom','info'   

    输出:

    hbase(main):002:0* get 'user','tom','info'

    COLUMN                   CELL                                                                                                                                

     info:age                   timestamp=1591608950416, value=26                                                                                                    

     info:birthday               timestamp=1591608954543, value=1998-04-05                                                                                           

     info:company              timestamp=1591608961864, value=baidu

    获取一个id,一个列族中一个列的所有数据
    格式:get 表名 row_key cf:column

    hbase(main):003:0> get 'user','tom','info:age'

    COLUMN                 CELL                                                                                                                                

     info:age                 timestamp=1591608950416, value=26

    4、更新一条记录
    格式: put 表名 row_key cf:column value
    将tom的年龄改成18

    hbase(main):004:0> put 'user','tom','info:age','18'     #更新年龄

    0 row(s) in 0.4000 seconds

    hbase(main):005:0> get 'user','tom','info:age'     #默认返回最新的值

    COLUMN             CELL                                                                                                                                

     info:age             timestamp=1591611816477, value=18 

    5、通过timestamp来获取指定版本的数据
    格式: get 表名 row_key {COLUMN=>'cf:column',TIMESTAMP=>xxxxxx}

    get 'user','tom',{COLUMN=>'info:age',TIMESTAMP=>1591608950416}

    get 'user','tom',{COLUMN=>'info:age',TIMESTAMP=>1591611816477}

    说明:

    每个column可以有任意数量的values,按timestamp倒序自动排序;tableName+rowkey+column+timestamp==>value

    6、全表扫描
    格式:scan 表名

    scan 'user'   #输出表的所有数据

    7、删除idspring的值的'info:age'字段
    格式:delete 表名 row_key cf:column

    get 'user','merry','info:age'    #删除前

    delete 'user','merry','info:age'    #删除

    get 'user','merry','info:age'    #删除后

    8、其它

    count  ‘user’    #查询user表有几行数据

    deleteall ‘user’,’merry’   #删除整行数据

    truncate  ‘user’    #清空整张表

    ============

    作者:geiliHe  2019年12月4日星期三晚11点

    修订:新增常用shell操作    2020年6月9日

    ============

    附件:

    1:用内嵌的zookeeper吗

    所以作为运维,我强烈建议zk 和hbase分开部署,就直接部署官方的zk 好了,因为zk本身就是一个独立的服务,没有必要和hbase 耦合在一起。

    https://zhidao.baidu.com/question/1541011075491995867.html

    2:关闭防火墙

    centos查看防火墙状态

    systemctl status firewalld.service

    systemctl stop firewalld.service #关闭firewall

    sytsemctl disable firewalld.service #禁止firewall开机自启

    3:删除文件

    -r 就是向下递归,不管有多少级目录,一并删除
    -f 就是直接强行删除,不作任何提示的意思

    删除文件夹实例:

    rm -rf /var/log/httpd/access

    将会删除/var/log/httpd/access目录以及其下所有文件、文件夹

    删除文件使用实例:

    rm -f /var/log/httpd/access.log

    将会强制删除/var/log/httpd/access.log这个文件

    rm -rf zookeeper

    4:参考资料

    3.5之后,版本需要下载-bin的

    https://www.cnblogs.com/zhoading/p/11593972.html

    habse安装

    https://yq.aliyun.com/articles/690901

    备注:

    1、根据该教程安装,成功搭建如下版本的环境: 【2021.7.14】

    hadoop-3.2.2.tar.gz   

    apache-zookeeper-3.7.0-bin.tar.gz

    hbase-2.3.5-bin.tar.gz

  • 相关阅读:
    激光雷达的数学模型
    TX2刷机踩坑
    rplidar S1测试
    cartographer 调参(2)-ROS API 文档
    ROS 包制作
    Python 文件操作
    V-REP远程控制--Python版
    V-REP 喷涂仿真
    Jeston TX2 备份
    Anaconda jupyter-notebook 添加kernel
  • 原文地址:https://www.cnblogs.com/hemomo/p/13064429.html
Copyright © 2011-2022 走看看