zoukankan      html  css  js  c++  java
  • HBase学习笔记——配置及Shell操作

    1.HBase的配置

    还是以前配置的集群,见:http://www.cnblogs.com/DarrenChan/p/6493373.html

    我们约定:weekend03和weekend04放HMaster,weekend05、weekend06和weekend07放HRegionServer

    1.上传hbase安装包

    2.解压

    3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了)
    注意:要把hadoop的hdfs-site.xml和core-site.xml 放到hbase/conf下
    在weekend03上面:
    3.1修改hbase-env.sh
    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
    //告诉hbase使用外部的zk
    export HBASE_MANAGES_ZK=false

    vim hbase-site.xml
    <configuration>
    <!-- 指定hbase在HDFS上存储的路径 -->
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://ns1/hbase</value>
    </property>
    <!-- 指定hbase是分布式的 -->
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <!-- 指定zk的地址,多个用“,”分割 -->
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>weekend05:2181,weekend06:2181,weekend07:2181</value>
    </property>
    </configuration>

    vim regionservers
    weekend05
    weekend06
    weekend07

    3.2拷贝hbase到其他节点
    scp -r hbase-0.96.2-hadoop2/ weekend04:/home/hadoop/app/
    scp -r hbase-0.96.2-hadoop2/ weekend05:/home/hadoop/app/
    scp -r hbase-0.96.2-hadoop2/ weekend06:/home/hadoop/app/
    scp -r hbase-0.96.2-hadoop2/ weekend07:/home/hadoop/app/
    4.将配置好的HBase拷贝到每一个节点并同步时间

    5.启动所有的hbase
    分别启动zk
    ./zkServer.sh start
    启动hadoop集群
    start-dfs.sh
    启动hbase,在主节点上运行:(bin/)
    ./start-hbase.sh

     

    6.通过浏览器访问hbase管理页面
    192.168.230.137:60010(新版本是16030)
    7.为保证集群的可靠性,要启动多个HMaster(bin/)
    ./hbase-daemon.sh start master(在weekend04上面)

    通过192.168.230.137:60010/master-status进行访问,如下:

     

    我们已经知道HBase是基于Zookeeper实现的,现在我们测试一下HMaster的HA机制:

    先用kill -9 2889关闭weekend03的HMaster

    然后在查看,发现HMaster切换了。

    重新启动weekend03的HMaster,./hbase-daemon.sh start master

    发现备份的地方又多了weekend03。

    2.HBase的Shell操作

    bin/下面:

    进入hbase命令行
    ./hbase shell

    名称

    命令表达式

    创建表

    create '表名', '列族名1','列族名2','列族名N'

    查看所有表

    list

    描述表

    describe  '表名'

    判断表存在

    exists  '表名'

    判断是否禁用启用表

    is_enabled '表名'

    is_disabled '表名'

    添加记录     

    put  '表名', 'rowKey', '列族 : 列',  '值'

    查看记录rowkey下的所有数据

    get  '表名' , 'rowKey'

    查看表中的记录总数

    count  '表名'

    获取某个列族

    get '表名','rowkey','列族'

    获取某个列族的某个列

    get '表名', 'rowkey',  '列族:列’

    删除记录

    delete  '表名' ,  '行名' , '列族:列'

    删除整行

    deleteall '表名','rowkey'

    删除一张表

    先要屏蔽该表,才能对该表进行删除

    第一步 disable '表名' ,第二步  drop '表名'

    清空表

    truncate '表名'

    查看所有记录

    scan '表名'  

    查看某个表某个列中所有数据

    scan '表名' , {COLUMNS=>'列族名:列名'}

    更新记录

    就是重写一遍,进行覆盖,hbase没有修改,都是追加

    显示hbase中的表
    list

    创建user表,包含info、data两个列族
    create 'user', 'info', 'data'

    创建user表,包含info列族,版本号有3个
    create 'user', {NAME => 'info', VERSIONS => '3'}

    向user表中插入信息,row key为rk0001,列族info中添加name列标示符,值为zhangsan
    put 'user', 'rk0001', 'info:name', 'zhangsan'

    向user表中插入信息,row key为rk0001,列族info中添加gender列标示符,值为female
    put 'user', 'rk0001', 'info:gender', 'female'

    向user表中插入信息,row key为rk0001,列族info中添加age列标示符,值为20
    put 'user', 'rk0001', 'info:age', 20

    向user表中插入信息,row key为rk0001,列族data中添加pic列标示符,值为picture
    put 'user', 'rk0001', 'data:pic', 'picture'

    获取user表中row key为rk0001的所有信息
    get 'user', 'rk0001'

    获取user表中row key为rk0001,info列族的所有信息
    get 'user', 'rk0001', 'info'

    获取user表中row key为rk0001,info列族的name、age列标示符的信息
    get 'user', 'rk0001', 'info:name', 'info:age'

    获取user表中row key为rk0001,info、data列族的信息
    get 'user', 'rk0001', 'info', 'data'
    get 'user', 'rk0001', {COLUMN => ['info', 'data']}

    get 'user', 'rk0001', {COLUMN => ['info:name', 'data:pic']}

    获取user表中row key为rk0001,列族为info,版本号最新5个的信息
    get 'user', 'rk0001', {COLUMN => 'info', VERSIONS => 2}
    get 'user', 'rk0001', {COLUMN => 'info:name', VERSIONS => 5}
    get 'user', 'rk0001', {COLUMN => 'info:name', VERSIONS => 5, TIMERANGE => [1392368783980, 1392380169184]}

    获取user表中row key为rk0001,cell的值为zhangsan的信息
    get 'people', 'rk0001', {FILTER => "ValueFilter(=, 'binary:图片')"}

    获取user表中row key为rk0001,列标示符中含有a的信息
    get 'people', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}

    put 'user', 'rk0002', 'info:name', 'fanbingbing'
    put 'user', 'rk0002', 'info:gender', 'female'
    put 'user', 'rk0002', 'info:nationality', '中国'
    get 'user', 'rk0002', {FILTER => "ValueFilter(=, 'binary:中国')"}


    查询user表中的所有信息
    scan 'user'

    查询user表中列族为info的信息
    scan 'user', {COLUMNS => 'info'}
    scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}
    scan 'persion', {COLUMNS => 'info', RAW => true, VERSIONS => 3}
    查询user表中列族为info和data的信息
    scan 'user', {COLUMNS => ['info', 'data']}
    scan 'user', {COLUMNS => ['info:name', 'data:pic']}


    查询user表中列族为info、列标示符为name的信息
    scan 'user', {COLUMNS => 'info:name'}

    查询user表中列族为info、列标示符为name的信息,并且版本最新的5个
    scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}

    查询user表中列族为info和data且列标示符中含有a字符的信息
    scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}

    查询user表中列族为info,rk范围是[rk0001, rk0003)的数据
    scan 'people', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}

    查询user表中row key以rk字符开头的
    scan 'user',{FILTER=>"PrefixFilter('rk')"}

    查询user表中指定范围的数据
    scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}

    删除数据
    删除user表row key为rk0001,列标示符为info:name的数据
    delete 'people', 'rk0001', 'info:name'
    删除user表row key为rk0001,列标示符为info:name,timestamp为1392383705316的数据
    delete 'user', 'rk0001', 'info:name', 1392383705316


    清空user表中的数据
    truncate 'people'


    修改表结构
    首先停用user表(新版本不用)
    disable 'user'

    添加两个列族f1和f2
    alter 'people', NAME => 'f1'
    alter 'user', NAME => 'f2'
    启用表
    enable 'user'


    删除一个列族:
    alter 'user', NAME => 'f1', METHOD => 'delete' 或 alter 'user', 'delete' => 'f1'

    添加列族f1同时删除列族f2
    alter 'user', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}

    将user表的f1列族版本号改为5
    alter 'people', NAME => 'info', VERSIONS => 5
    启用表
    enable 'user'


    删除表
    disable 'user'
    drop 'user'


    get 'person', 'rk0001', {FILTER => "ValueFilter(=, 'binary:中国')"}
    get 'person', 'rk0001', {FILTER => "(QualifierFilter(=,'substring:a'))"}
    scan 'person', {COLUMNS => 'info:name'}
    scan 'person', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}
    scan 'person', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}

    scan 'person', {COLUMNS => 'info', STARTROW => '20140201', ENDROW => '20140301'}
    scan 'person', {COLUMNS => 'info:name', TIMERANGE => [1395978233636, 1395987769587]}
    delete 'person', 'rk0001', 'info:name'

    alter 'person', NAME => 'ffff'
    alter 'person', NAME => 'info', VERSIONS => 10


    get 'user', 'rk0002', {COLUMN => ['info:name', 'data:pic']}

  • 相关阅读:
    metal的gpu query
    体积雾 global fog unity 及改进
    hdr rt format对颜色的影响
    unity deferred lighting
    unity linear space时 photoshop blend的正确设置
    unity linear work flow
    一些数据 bandwidth之类
    deferred rendering with msaa
    unity 显示mipmaplevel
    【转】在C#中使用SendMessage
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/6576565.html
Copyright © 2011-2022 走看看