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']}

  • 相关阅读:
    浏览器的渲染与小优化
    css3 贝塞尔曲线理解
    mac下配置汇编环境
    报错 net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK)
    vue中使用iframe,加载完成的onload事件偶尔不触发
    nrm的使用
    js原生实现元素跟随鼠标拖动
    webpack多页面打包笔记
    关于React的组件优化笔记
    React生成器
  • 原文地址:https://www.cnblogs.com/DarrenChan/p/6576565.html
Copyright © 2011-2022 走看看