• 1.4-1.5 HBase部署及基本使用


    一、部署

    1、准备

    ##先用Apache hadoop
    ##之前的cdh 服务器先全部停掉
    
    ##解压HBASE
    [root@hadoop-senior hbase]# tar zxf hbase-0.98.6-hadoop2-bin.tar.gz -C /opt/modules/
    
    
    ##启动Apache hadoop (hdfs)
    [root@hadoop-senior hadoop-2.5.0]# pwd
    /opt/modules/hadoop-2.5.0
    
    [root@hadoop-senior hadoop-2.5.0]# sbin/hadoop-daemon.sh start namenode
    [root@hadoop-senior hadoop-2.5.0]# sbin/hadoop-daemon.sh start datanode
    
    [root@hadoop-senior hadoop-2.5.0]# jps
    23159 Jps
    23081 DataNode
    22996 NameNode


    2、配置、启动

    hbase-env.sh

    export JAVA_HOME=/opt/modules/jdk1.7.0_80


    regionservers

    改为主机名


    hbase-site.xml

    <property>
            <name>hbase.rootdir</name>
            <value>hdfs://hadoop-senior.ibeifeng.com:8020/hbase</value>
        </property>
        
        <property>
            <name>hbase.cluster.distributed</name>
            <value>true</value>
        </property>
      
        <property>
            <name>hbase.zookeeper.quorum</name>
            <value>hadoop-senior.ibeifeng.com</value>
        </property>


    启动

    ##替换jar包,事先准备好的,(cdh应该就不需要替换了)
    [root@hadoop-senior hbase-0.98.6-hadoop2]# mv lib/hadoop-* /tmp/
    [root@hadoop-senior hadoop-2.5.0-jars]# cp -r ./* /opt/modules/hbase-0.98.6-hadoop2/lib/

    [root@hadoop-senior hbase-0.98.6-hadoop2]# mv lib/zookeeper-3.4.6.jar /tmp/

    ##启动
    [root@hadoop-senior hbase-0.98.6-hadoop2]# bin/start-hbase.sh 
    
    [root@hadoop-senior hbase-0.98.6-hadoop2]# jps
    24548 Jps
    24155 HMaster
    23081 DataNode
    24084 HQuorumPeer
    24266 HRegionServer
    22996 NameNode
    
    
    端口:60010       //可以web访问:ip:port


    3、hdfs上HBASE各个目录

    [root@hadoop-senior hadoop-2.5.0]# bin/hdfs dfs -ls /
    Found 3 items
    drwxr-xr-x   - root supergroup          0 2019-05-20 14:45 /hbase
    drwx-w----   - root supergroup          0 2019-04-18 17:33 /tmp
    drwxr-xr-x   - root supergroup          0 2019-04-18 17:21 /user
    
    [root@hadoop-senior hadoop-2.5.0]# bin/hdfs dfs -ls /hbase
    Found 6 items
    drwxr-xr-x   - root supergroup          0 2019-05-20 14:45 /hbase/.tmp
    drwxr-xr-x   - root supergroup          0 2019-05-20 14:45 /hbase/WALs
    drwxr-xr-x   - root supergroup          0 2019-05-20 14:31 /hbase/data
    -rw-r--r--   3 root supergroup         42 2019-05-20 14:31 /hbase/hbase.id
    -rw-r--r--   3 root supergroup          7 2019-05-20 14:31 /hbase/hbase.version
    drwxr-xr-x   - root supergroup          0 2019-05-20 14:46 /hbase/oldWALs
    
    
    
    ##
    /hbase/.tmp
         当对表做创建或者删除操作的时候,会将表move 到该 tmp 目录下,然后再去做处理操作。
    
    /hbase/WALs
        HBase 是支持 WAL(Write Ahead Log) 的,HBase 会在第一次启动之初会给每一台 RegionServer 在WALs下创建一个目录,若客户端如果开启WAL 模式,
    会先将数据写入一份到WALs下,当 RegionServer crash 或者目录达到一定大小,会开启 replay 模式,类似 MySQL 的 binlog。
    
    /hbase/data
        存储hbase数据,下面含有两个命名空间default和hbase,
    
    /hbase/data/default
         这个默认的namespace即没有指定namespace 的表都将会flush 到该目录下面。
    
    /hbase/data/hbase
         这个namespace 下面存储了 HBase 的 namespace、meta 和acl 三个表,这里的 meta 表跟0.94版本的.META.是一样的,自0.96之后就已经将 ROOT 表去掉了,直接从Zookeeper 中找到meta 表的位置,然后通过 meta 表定位到 region。 namespace 中存储了 HBase 中的所有 namespace 信息,包括预置的hbase 和 default。acl 则是表的用户权限控制。
    如果自定义一些 namespace 的话,就会再/hbase/data 目录下新建一个 namespace 文件夹,该 namespace 下的表都将 flush 到该目录下。
    
    /hbase/hbase.id
         它是一个文件,存储集群唯一的 cluster id 号,是一个 uuid。
    
    /hbase/hbase.version
        同样也是一个文件,存储集群的版本号,貌似是加密的,看不到,只能通过web-ui 才能正确显示出来。
    
    /hbase/oldWALs
        当WALs文件夹中的 HLog 没用之后会 move 到.oldWALs 中,HMaster 会定期去清理。


    二、HBase Shell基本使用

    1、登入命令行

    [root@hadoop-senior hbase-0.98.6-hadoop2]# bin/hbase
    Usage: hbase [<options>] <command> [<args>]
    Options:
      --config DIR    Configuration direction to use. Default: ./conf
      --hosts HOSTS   Override the list in 'regionservers' file
    
    Commands:
    Some commands take arguments. Pass no args or -h for usage.
      shell           Run the HBase shell
      hbck            Run the hbase 'fsck' tool
      hlog            Write-ahead-log analyzer
      hfile           Store file analyzer
      zkcli           Run the ZooKeeper shell
      upgrade         Upgrade hbase
      master          Run an HBase HMaster node
      regionserver    Run an HBase HRegionServer node
      zookeeper       Run a Zookeeper server
      rest            Run an HBase REST server
      thrift          Run the HBase Thrift server
      thrift2         Run the HBase Thrift2 server
      clean           Run the HBase clean up script
      classpath       Dump hbase CLASSPATH
      mapredcp        Dump CLASSPATH entries required by mapreduce
      pe              Run PerformanceEvaluation
      ltt             Run LoadTestTool
      version         Print the version
      CLASSNAME       Run the class named CLASSNAME
    
    
    
    [root@hadoop-senior hbase-0.98.6-hadoop2]# bin/hbase shell    //进入HBASE命令行
    hbase(main):001:0> help                    //查看帮助


    2、操作命令

    hbase(main):007:0> help 'create'        //查看建表帮助
    hbase(main):004:0> create 'user', 'info'        //创建一个表,user:表名;  info:列簇
    hbase(main):005:0> list            //列出表
    hbase(main):006:0> describe 'user'        //查看表结构
    
    ##插入数据
    hbase(main):008:0> put 'user', '10001', 'info:name', 'zhangsan'    //user:表名;  10001:rowkey;   info:name:列簇的其中一列;   zhangsan:值
    0 row(s) in 0.0770 seconds 
    
    hbase(main):010:0> put 'user', '10001', 'info:age', '25'
    0 row(s) in 0.0060 seconds
    
    hbase(main):011:0> put 'user', '10001', 'info:sex', 'male'
    0 row(s) in 0.0040 seconds
    
    hbase(main):012:0>  put 'user', '10001', 'info:address', 'shanghai'
    
    
    ##查询
    HBase的数据查询有三种方式:
    *依据rowkey查询,最快的
        get
    
    *范围查询
        scan range
    
    *全表扫描
        scan
    
    
    ##查询10001这个rowkey下的所有列数据
    hbase(main):014:0> get 'user', '10001'
    COLUMN                                       CELL                                                                                                                           
     info:address                                timestamp=1558342595476, value=shanghai                                                                                        
     info:age                                    timestamp=1558342530687, value=25                                                                                              
     info:name                                   timestamp=1558342470065, value=zhangsan                                                                                        
     info:sex                                    timestamp=1558342551186, value=male                                                                                            
    4 row(s) in 0.0160 seconds
    
    ##单独列查询
    
    hbase(main):015:0> get 'user', '10001', 'info:name'
    COLUMN                                       CELL                                                                                                                           
     info:name                                   timestamp=1558342470065, value=zhangsan                                                                                        
    1 row(s) in 0.0080 seconds


    3、操作命令

    ##插入数据,rowkey:10002
    hbase(main):016:0> put 'user', '10002', 'info:name', 'wangwu'
    0 row(s) in 0.0040 seconds
    
    hbase(main):017:0> put 'user', '10002', 'info:age', '30'
    0 row(s) in 0.0040 seconds
    
    hbase(main):018:0> put 'user', '10002', 'info:tel', '231294737'
    0 row(s) in 0.0030 seconds
    
    hbase(main):019:0> put 'user', '10002', 'info:qq', '231294737'
    0 row(s) in 0.0030 seconds
    
    
    ##全表扫描查询
    hbase(main):020:0> scan 'user'
    ROW                                          COLUMN+CELL                                                                                                                    
     10001                                       column=info:address, timestamp=1558342595476, value=shanghai                                                                   
     10001                                       column=info:age, timestamp=1558342530687, value=25                                                                             
     10001                                       column=info:name, timestamp=1558342470065, value=zhangsan                                                                      
     10001                                       column=info:sex, timestamp=1558342551186, value=male                                                                           
     10002                                       column=info:age, timestamp=1558343570256, value=30                                                                             
     10002                                       column=info:name, timestamp=1558343559457, value=wangwu                                                                        
     10002                                       column=info:qq, timestamp=1558343612746, value=231294737                                                                       
     10002                                       column=info:tel, timestamp=1558343607851, value=231294737                                                                      
    2 row(s) in 0.0220 seconds
    
    
    ##插入数据,rowkey:10003
    hbase(main):021:0> put 'user', '10003', 'info:name', 'zhaoliu'
    0 row(s) in 0.0050 seconds
    
    
    
    ##范围查询,只查询name和age两个列
    hbase(main):022:0> scan 'user', {COLUMNS => ['info:name', 'info:age']}
    ROW                                          COLUMN+CELL                                                                                                                    
     10001                                       column=info:age, timestamp=1558342530687, value=25                                                                             
     10001                                       column=info:name, timestamp=1558342470065, value=zhangsan                                                                      
     10002                                       column=info:age, timestamp=1558343570256, value=30                                                                             
     10002                                       column=info:name, timestamp=1558343559457, value=wangwu                                                                        
     10003                                       column=info:name, timestamp=1558345826709, value=zhaoliu 
    
    
    ##只从某个rowkey开始往后查
    hbase(main):023:0> scan 'user', {STARTROW => '10002'}
    ROW                                          COLUMN+CELL                                                                                                                    
     10002                                       column=info:age, timestamp=1558343570256, value=30                                                                             
     10002                                       column=info:name, timestamp=1558343559457, value=wangwu                                                                        
     10002                                       column=info:qq, timestamp=1558343612746, value=231294737                                                                       
     10002                                       column=info:tel, timestamp=1558343607851, value=231294737                                                                      
     10003                                       column=info:name, timestamp=1558345826709, value=zhaoliu                                                                       
    2 row(s) in 0.0120 seconds
    
    
    #从某个rowkey到某个rowkey(包前不包后)

    hbase(main):002:0> scan 'user', {STARTROW => '10001',ENDROW => '10003'}
    ROW                                   COLUMN+CELL                                                                                                                   
      10001                                column=info:address, timestamp=1558342595476, value=shanghai                                                                  
      10001                                column=info:age, timestamp=1558342530687, value=25                                                                            
      10001                                column=info:name, timestamp=1558342470065, value=zhangsan                                                                     
      10001                                column=info:sex, timestamp=1558342551186, value=male                                                                          
      10002                                column=info:age, timestamp=1558343570256, value=30                                                                            
      10002                                column=info:name, timestamp=1558343559457, value=wangwu                                                                       
      10002                                column=info:qq, timestamp=1558343612746, value=231294737                                                                      
      10002                                column=info:tel, timestamp=1558343607851, value=231294737

    
    
    ##删除数据
    hbase(main):004:0> delete 'user', '10001', 'info:name'  //删除user表下,rowkey为10001,列为name的值;
    hbase(main):008:0> deleteall 'user', '10001'                  //删除整个rowkey下的值
  • 相关阅读:
    HTML(三)
    HTML(二)
    HTML(一)
    Python-数据库索引浅谈
    Django-ORM之聚合和分组查询、F和Q查询、事务
    [LeetCode][Python]String to Integer (atoi)
    [LeetCode][Python]Reverse Integer
    [LeetCode][Python]ZigZag Conversion
    [LeetCode][Python]Longest Palindromic Substring
    [LeetCode][Python]Median of Two Sorted Arrays
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/10898494.html
Copyright © 2020-2023  润新知