HBase安装和使用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1实验报告2一、Hbase数据模型hbase模式里的逻辑实体包括:(1)表(table):HBase用表来组织数据。表名是字符串(String),由可以在文件系统路径里使用的字符组成。(2)行(row):在表里,数据按行存储。行由行键(rowkey)唯一标识。行键没有数据类型,总是视为字节数组byte[]。(3)列族(columnfamily):行里的数据按照列族分组,列族也影响到HBase数据的物理存放,因此,它们必须事前定义并且不轻易修改。表中每行拥有相同列族,尽管行不需要在每个列族里存储数据。列族名字是字符串(String),由可以在文件系统路径里使用的字符组成。(4)列限定符(columnqualifier):列族里的数据通过列限定符或列来定位。列限定符不必事前定义,列限定符不必在不同行之间保持一致。就像行键一样,列限定符没有数据类型,总是视为字节数组byte[]。(5)单元(cell):行键、列族和列限定符一起确定一个单元。存储在单元里的数据称为单元值(value)。值也没有数据类型,总是视为字节数组byte[]。(6)时间版本(version):单元值有时间版本。时间版本用时间戳标识,是一个long。没有指定时间版本时,当前时间戳作为操作的基础。HBase保留单元值时间版本的数量基于列族进行配置,默认数量是3个。HBase的每个数据值使用坐标来访问。一个值的完整坐标包括行键、列族、列限定符和时间版本。由于把所有坐标视为一个整体,因此HBase可以看作是一个键值(key-value)数据库。二、Hbase分布式部署1、下载发布包到HBase官方下载最新的版本hbase-1.2.6-hadoop2-bin.tar.gz3$tarxfzhbase-1.2.6-hadoop2-bin.tar.gz$cdhbase-1.2.6-hadoop22、配置系统环境sudovim/etc/profilesource/etc/profileexportHBASE_HOME=/usr/local/share/hbaseexportPATH=$HBASE_HOME/bin:$PATH3、修改配置文件:HBASE_HOME/conf/hbase-site.xmlpropertynamehbase.rootdir/name!--对应于hdfs中配置micmiu.com--valuehdfs://localhost:9000/hbase/value/propertypropertynamehbase.cluster.distributed/namevaluetrue/value/property4、演示4.1、启动HBase:4.2、shell演示建表、插入数据、查询数据、删除表4三、使用Java客户端对对自定的表进行CURD操作Java代码:publicclassmyHbase{privatestaticConfigurationconf=null;static{conf=HBaseConfiguration.create();}/***columnfamilysaddcolumn---hbasecolumnName5*@paramtableName*@paramfamilys*@throwsException*/publicvoidcreateTable(StringtableName,String[]familys)throwsException{HBaseAdminadmin=newHBaseAdmin(conf);if(!admin.tableExists(tableName)){HTableDescriptordesc=newHTableDescriptor(tableName);for(inti=0;ifamilys.length;i++){desc.addFamily(newHColumnDescriptor(familys[i]));}admin.createTable(desc);}else{System.out.println(thetable:+tableName+exsists);};}/***@paramtableName*@paramrowKey*@paramfamily*@paramqualifier*@paramvalue*@throwsException*/publicvoidputData(StringtableName,StringrowKey,Stringfamily,Stringqualifier,Stringvalue)throwsException{HTableht=newHTable(conf,tableName);Putput=newPut(Bytes.toBytes(rowKey));put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));ht.put(put);}publicstaticvoidmain(String[]agrs)throwsException{myHbaseh=newmyHbase();String[]familys={family1,family2};h.createTable(mytable,familys);h.putData(mytable,row,family1,qualifier:name1,value1);}}运行Java应用程序:登录Hbaseshell发现可以get和scan到数据了:hbase(main):016:0scan'mytable'ROWCOLUMN+CELL6rowcolumn=family1:qualifier:name1,timestamp=1354559928275,value=value11row(s)in0.0410secondshbase(main):017:0get'mytable','row','family1:qualifier:name1'COLUMNCELLfamily1:qualifier:natimestamp=1354559928275,value=value1me11row(s)in0.0120seconds

1 / 6
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功