ImageVerifierCode 换一换
格式:PPTX , 页数:28 ,大小:342.78KB ,
文档编号:5184375      下载积分:22 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-5184375.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(大数据培训Module06HBase二次开发课件.pptx(纯ppt,可能不含音视频素材))为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

大数据培训Module06HBase二次开发课件.pptx(纯ppt,可能不含音视频素材)

1、wwwww w.h huawuawe ei i.c comom版权所有 20152015 华为技术有限公司HBase二次开发前言版权所有 20152015 华为技术有限公司第1 1页HBasHBase e是一个高可靠性、高性能、面向列、可伸缩的分布式数据库,设计目标是用来解决关系型数据库在处理海量数据 时的局限性。本章主要介绍HBasHBase e的接口以及二次开发的使用指导。目录版权所有 20152015 华为技术有限公司第2 2页1.HBase常用接常用接口口介介绍绍2.常用常用Shell接口接口3.常用常用Java接口接口HBase常用接口版权所有 20152015 华为技术有限公司第3

2、 3页客户客户端使端使用用主要主要方方式:式:HBase ShellHBase的命令行工具,最简单的接口,适合 HBase管理使用。Java API HBase客户端程序通过底层RPC接口与HBase集群进行通信,客户程序直接集成HBase的Java包,通过调用相关API即可完成操作。其余其余接口:接口:REST 接口接口REST(Representational State Transfer)表述性状态转 移接口。Thrift接口接口Thrift 是一个基于静态代码生成的跨语言的RPC协议栈实 现,它可以生成包括C+,Java,Python,Ruby,PHP 等主 流语言的代码,这些代码实现

3、了 RPC 的协议层和传输层 功能,从而让用户可以集中精力于服务的调用和实现。Avro接口接口Avro是一个数据序列化系统,设计用于支持大批量数据 交换的应用。目录版权所有 20152015 华为技术有限公司第4 4页1.HBase常用接常用接口口介介绍绍2.常用常用Shell接口接口3.常用常用Java接口接口常用Shell接口 连接通过/h hb basease s sh helell l来连接正在运行的H HB Ba asese S Sh helell l客户端用法用法:/安全登录,在进入安全登录,在进入hbase shell客户端之前,需要进行安装客户客户端之前,需要进行安装客户端端和

4、用和用户户登录登录的的准备准备工工作,作,具具体需体需要要参参考考CPI文文档档中安中安 装与使用客户端章节装与使用客户端章节/进入进入HBase shell客户端客户端#.bin/hbase shellHBase Shell;enter help for list of supported commands.Type exit to leave the HBase ShellVersion 0.94.0,r,Sun Aug 26 22:12:56 CST 2012hbase(main):001:0版权所有 20152015 华为技术有限公司第5 5页常用Shell接口 创建表创建表时,可以选

5、择多个参数,但表名和列族名是必须的参数,其它参数还包括版本数、T TTLTL 以及预分R Re eg gi io on n建表的kekey y数组等用法:用法:hbase create t1,NAME=f1,VERSIONS=5hbase create t1,NAME=f1,NAME=f2,NAME=f3hbase#The above in shorthand would be the following:hbase create t1,f1,f2,f3hbase create t1,NAME=f1,VERSIONS=1,TTL=2592000,BLOCKCACHE=true hbase cr

6、eate t1,f1,SPLITS=10,20,30,40hbase create t1,f1,SPLITS_FILE=splits.txt hbase#Optionally pre-split the table into NUMREGIONS,usinghbase#SPLITALGO(HexStringSplit,UniformSplit or classname)hbase create t1,f1,NUMREGIONS=15,SPLITALGO=HexStringSplit版权所有 20152015 华为技术有限公司第6 6页常用Shell接口 插入一行数据PutP Pu ut t数据

7、时,必选参数是表名、R Ro ow wK Ke ey y、列名(包括列族和列名)和值,可选参数包括时间戳用法:用法:hbase put t1,r1,c1,value,ts1例如,向表testest t中p pu ut t三条数据,并通过c co ou un nt t命令计算t te es st t表中的数据的条数 示例:示例:/向表t te es st t中p pu ut t数据,RowRowK Ke ey y为r rowowk ke ey y1 1,列族名为c cf f,列名为q quaual li if fi ie er r1 1,值为v valalu ue e1 1版权所有 201520

8、15 华为技术有限公司第7 7页hbase(main):002:0 0 row(s)in 0.5940 hbase(main):003:0 0 row(s)in 0.0080/指定时间戳为3 hbase(main):011:0 0 row(s)in 0.0510 hbase(main):013:0 3 row(s)in 0.0160put test,rowkey1,cf:qualifier1,value1 secondsput test,rowkey2,cf:qualifier2,value2 secondsput test,rowkey3,cf:qualifier3,value3,3 sec

9、ondscount test seconds常用Shell接口 读取一行数据Get查询一行数据时,必选参数是表名和R Ro ow wK Ke ey y,可选参数包括列名(包括列族和列名)、时间戳、版本数等用法:用法:版权所有 20152015 华为技术有限公司第8 8页hbase hbase hbase hbase hbase hbaseget t1,get t1,get t1,get t1,get t1,get t1,r1 r1,r1,r1,r1,r1,TIMERANGE=ts1,ts2=c1=c1,c2,c3=COLUMNCOLUMNCOLUMNCOLUMNc1,c1,TIMESTAMP

10、TIMERANGE=ts1=ts1,ts2,VERSIONS=4hbase get VERSIONS=4t1,r1,COLUMN=c1,c1c1,c2c1,c2TIMESTAMP=ts1,hbase hbase hbaseget t1,get t1,get t1,r1,r1,r1,常用Shell接口 读取多行数据Scan查询多行数据,必选参数是表名,可选参数包括列名(包括列族和列名)、起止K Ke ey y、F Fililt te er r用法:用法:/查询元表版权所有 20152015 华为技术有限公司第9 9页hbase hbase hbase hbase hbasescan scan s

11、can scan scan.META.META.,COLUMNS=info:regioninfot1,t1,t1,COLUMNS=c1,c2,LIMIT=10,STARTROW=xyzCOLUMNS=c1,TIMERANGE=1303668804,1303668904FILTER=(PrefixFilter(row2)AND(QualifierFilter s(=,binary:xyz)AND(TimestampsFilter hbase scan t1,(123,456)FILTER=org.apache.hadoop.hbase.filter.ColumnPaginationFilter.

12、new(1,0)hbase scan t1,COLUMNS=c1,c2,CACHE_BLOCKS=false hbase scan t1,RAW=true,VERSIONS=10常用Shell接口 其他常用命令H HB Ba as se e还提供了一些其它的S Sh hellell A AP PI I,包括g ge en ne er ra al l、ddddl l、d dm ml l、t tooool ls s、r re ep pl li ic ca at ti ionon和sesec cururi it ty y六组,每 组又包括多个S Sh helell l命令。每组命令和每个命令的用法均

13、可以通过h he el lp p查询其用法COMMAND GROUPS:Group name:generalCommands:status,version,whoamiGroup name:ddlCommands:alter,alter_async,alter_status,create,describe,disable,disable_all,drop,drop_all,enable,enable_all,exists,is_disabled,is_enabled,list,show_filtersGroup name:dmlCommands:count,delete,deleteall,g

14、et,get_counter,incr,put,scan,truncateGroup name:toolsCommands:assign,balance_switch,balancer,close_region,compact,flush,hlog_roll,major_compact,move,split,unassign,zk_dumpGroup name:replicationCommands:add_peer,disable_peer,enable_peer,list_peers,remove_peer,start_replication,stop_replicationGroup n

15、ame:securityCommands:grant,revoke,user_permission版权所有 20152015 华为技术有限公司第1010页目录版权所有 20152015 华为技术有限公司第1111页1.HBase常用接常用接口口介介绍绍2.常用常用Shell接口接口3.常用常用Java接口接口在开始使用HBase Java API之前,需要做几项准备工作:要求JDK版本1.7及以上版本。HBase开发相关的jar包(包括ZooKeeper、HDFS、MapReduce等)需要和 HBase集群节点上的版本保持一致。在hosts文件中添加HBase服务器节点的IP和HostNam

16、e的映射关系。HBase采用的接口与Apache HBase保持一致,请参见:http:/hbase.apache.org/apidocs/index.html版权所有 20152015 华为技术有限公司第1212页工程搭建 准备工作1.获取客户端安装包中的配置文件core-site.xml、hbase-site.xml、hdfs-site.xml并放置在到Java工程中的conf目录下。并将conf目录添加到classpath下。2.获取客户端安装包中的HBase开发依赖的jar文件,并添加到工程的classpath路 径下。3.具体操作请参考CPI文档中开发环境准备的章节。在Eclipse

17、工具中,单击“New Java Project”,输入工程名,单击“Finish”即可创建Java工程。下载客户端安装包配置开发环境创建Java工程开发应用编译运行/初始化配置信息Configuration conf=HBaseConfiguration.create();/创建表HBaseAdmin admin=new HBaseAdmin(conf);admin.createTable(htd);/插入一行数据HTable table=new HTable(conf,tableName);Put put=new Put(Bytes.toBytes(012005000201);put.add

18、(FAMILIES,Bytes.toBytes(name),Bytes.toBytes(张三);put.add(FAMILIES,Bytes.toBytes(gender),Bytes.toBytes(男);put.add(FAMILIES,Bytes.toBytes(address),Bytes.toBytes(广东省深圳市);table.put(put);工程搭建 准备工作版权所有 20152015 华为技术有限公司第1313页/安全版本安全版本Configuration conf=HBaseConfiguration.create();conf.addResource(user-hbas

19、e.xml);版权所有 20152015 华为技术有限公司第1414页if(User.isHBaseSecurityEnabled(conf)conf.set(HBASE_KEYTAB_FILE,System.getProperty(user.dir)+File.separator+conf+File.separator+conf.get(HBASE_KEYTAB_FILE);String krbfilepath=System.getProperty(user.dir)+File.separator+conf+File.separator+krb5.conf;System.setPropert

20、y(java.security.krb5.conf,krbfilepath);try ZKUtil.loginClient(conf,HBASE_KEYTAB_FILE,HBASE_KERBEROS_PRINCIPAL,InetAddress.getLocalHost().getCanonicalHostName();User.login(conf,HBASE_KEYTAB_FILE,HBASE_KERBEROS_PRINCIPAL,InetAddress.getLocalHost().getCanonicalHostName();catch(IOException e)e.printStac

21、kTrace();通过调用HBaseConfiguration的 create()方法来实例化。否则,将 无法正确加载HBase中的相关配置 项常用Java接口 创建安全版本的Configuration实例通过HBaseAdmin的createTable方法来创建一张表,指定表名、列族名称。创建表分为快速建表和预分Region建表,前 者表示创建表后整张表只有一个Region,随 着数据量的增加会自动分裂成多个Region;后者表示,创建表时预先分配多个Region,此种方法建表可以提高写入大量数据初期的 数据写入速度示例:示例:/表名和列族名称表名和列族名称String tableName=

22、myTable;String families=f1;/通过已有的通过已有的Configuration对象实例化对象实例化一一个个HBaseAdmin对象对象HBaseAdmin admin=new HBaseAdmin(config);/表的描述信息,指定表名、列族表的描述信息,指定表名、列族名名称称HTableDescriptor tableDesc=newHTableDescriptor(tableName);tableDesc.addFamily(new HColumnDescriptor(familiesi);/不预分不预分Region建表建表admin.createTable(ta

23、bleDesc);/预分预分Region建表的两种方式:建表的两种方式:/指定起止指定起止RowKey和和Region个个数数;此;此时时的起的起始始RowKey为为第第一个一个Region的的 endKey,结,结束束key为最为最后后一个一个Region的的startKey。admin.createTable(tableDesc,Bytes.toBytes(10),Bytes.toBytes(800000),30);/指定指定RowKey数组,不包括第一个数组,不包括第一个Region的的startKey和和最最后一后一个个Region的的 endKey,因,因此此Region个数个数等等

24、于数于数组组长长度度+1/例如以下语句创建的表包括例如以下语句创建的表包括4个个Region,各,各Region的的起起止止key分分别为别为,a),a,k),k,z),z,),可以看成左闭右开区间,可以看成左闭右开区间,a属于属于a,k)这这个个Region,k属于属于k,z)这个这个 Region,z属于属于z,)这个这个Region。byte keys=Bytes.toBytes(a),Bytes.toBytes(k),Bytes.toBytes(z);admin.createTable(tableDesc,keys);版权所有 20152015 华为技术有限公司第1515页常用Java

25、接口 创建表开启压缩功能有利于减少HBase中数据存储 的冗余数据,HBase中有两类压缩机制,HFile文件级别的压缩Compress和 DataBlockEncode前缀压缩。HBase中数据 存储格式是HFile,文件级别的压缩既是针对 HFile的压缩,前缀压缩式针对HFile中数据 主要部分DataBlock进行压缩。使用HBase压缩功能的方法是在创建表时,针对列族在HColumnDescriptor类中通过接 口设置示例:示例:columnDesc=new HColumnDescriptor(familiesi);/设置前缀压缩,设置前缀压缩,HBase提供了提供了PREFIX、

26、DIF、FAST_DIFF三三种种前缀压前缀压 缩方法缩方法 columnDesc.setDataBlockEncoding(DataBlockEncoding.FAST_DIFF);/设置文件压缩,文件压缩通常需设置文件压缩,文件压缩通常需要要安装安装压压缩算缩算法法共享共享库库,这,这里里建议建议先先先先 通过通过/org.apache.hadoop.hbase.util.CompressionTest检检查一查一下下压缩算压缩算 法可用性法可用性columnDesc.setCompressionType(Algorithm.SNAPPY);tableDesc.addFamily(colu

27、mnDesc);版权所有 20152015 华为技术有限公司第1616页常用Java接口 开启压缩方式HBase是一个面向列的数据库,一行数据,可能对应多个列族,而一个列族又可以对应 多个列。通常,写入数据的时候,我们需要 指定要写入的列(含列族名称和列名称)。如果要往HBase表中写入一行数据,需要首 先构建一个Put实例。Put中包含了数据的 RowKey值和指定列(含列族名称和列名称)的Value值,一个RowKey的Value值可以有 多个(即包含多个列)示例:示例:/表的名称为表的名称为personprivate static final byte TABLENAME=Bytes.t

28、oBytes(person);/列族名称的名称为列族名称的名称为privateInfoprivate static final byte FAMILIES=Bytes.toBytes(privateInfo);版权所有 20152015 华为技术有限公司第1717页/列族列族privateInfo中有两个列中有两个列name和和addressprivate static final byte qualifiers=Bytes.toBytes(name),Bytes.toBytes(addres);/实例化一个实例化一个put对象对象Put put=new Put(Bytes.toBytes(r

29、owkey);put.add(FAMILIES,qualifiers0,Bytes.toBytes(values00+i);put.add(FAMILIES,qualifiers0,Bytes.toBytes(values01+i);/多个多个put存放到一个存放到一个List中中puts.add(put);/提交一次提交一次put数据请求数据请求hTable.put(puts);常用Java接口 插入数据Put从表中读取一条数据,首先需要实例化 该表对应的HTable对象,然后创建一个 Get对象。也可以为get对象设定参数值,如列族的名称和列的名称。查询结果的 该行数据存储Result对象

30、中,Result中 存储了多个KeyValue对示例:示例:HTable table=null;try table=new HTable(conf,tableName);Get get=new Get(rowKey.getBytes();/设定列族名和列名设定列族名和列名get.addColumn(family,qualifier);/设定列族名设定列族名get.addFamily(family);Result result=table.get(get);for(KeyValue kv:result.raw()System.out.println(kv.getRow()+(kv.getFami

31、ly()+(kv.getQualifier()+kv.getTimestamp()+kv.getValue()+);catch(IOException e)/TODO finally if(null!=table)try table.close();catch(IOException e)/TODO版权所有 20152015 华为技术有限公司第1818页常用Java接口 读取一行数据Get要从表中读取数据,首先需要实例化该表 对应的HTable对象,然后创建一个Scan对 象,并针对查询条件设置scan的参数值,为了提高查询效率,最好指定StartKey和 EndKey。查询结果的多行数据保存

32、在 ResultScanner对象,每行数据以Result对 象形式存储,Result中存储了多个 KeyValue对示例:示例:HTable table=null;ResultScanner rScanner=null;try table=new HTable(conf,tableName);Scan scan=new Scan();scan.setStartRow(startRow);scan.setStopRow(stopRow);/重要参数:每次重要参数:每次RPC从服务端取从服务端取回回的记的记录录数数scan.setCaching(1000);版权所有 20152015 华为技术有

33、限公司第1919页rScanner=table.getScanner(scan);for(Result r=rScanner.next();r!=null;r=rScanner.next()for(KeyValue kv:r.raw()/TODO catch(IOException e)/TODO finally if(null!=rScanner)rScanner.close();if(null!=table)try table.close();catch(IOException e)/TODO常用Java接口 读取多行数据Scan HBase Filter主要通过设置一些过滤条件,在 查询

34、(Scan)过程中进行Row级别的数据过滤。可以设置RowKey过滤条件,也可以设置列名或 者列值的过滤条件。HBase中提供了多种过滤器,这些过滤器都在 org.apache.hadoop.hbase.filter包中。单个过 滤器的使用,首先需要创建一个Scan对象,然后 设置该对象的Filter参数为过滤器对象。也可以多 个过滤器条件配合使用,采用FilterList。具体 HBase中提供了哪些filter,可以查询API示例:示例:Scan s=new Scan();/前缀过滤器,查找前缀过滤器,查找RowKey以以“132”开开头头的行的行s.setFilter(new Prefi

35、xFilter(Bytes.toBytes(132);/查找符合条件的查找符合条件的6行数据行数据s.setFilter(new PageFilter(6);/多个过滤器结合使用多个过滤器结合使用FilterList list=new FilterList(Operator.MUST_PASS_ALL);list.addFilter(new SingleColumnValueFilter(family,qualifier,CompareOp.EQUAL,value);list.addFilter(new PageFilter(6);s.setFilter(list);版权所有 20152015

36、 华为技术有限公司第2020页常用Java接口 过滤器Filter示例:示例:/new IndexAdmin对对象进象进行行索引索引管管理操作理操作HBaseAdmin admin=new IndexAdmin(conf);版权所有 20152015 华为技术有限公司第2121页/创建表的创建表的Desc对对象象和列和列族族对象对象String userTableName=testAddIndex;HTableDescriptor htd=new HTableDescriptor(TableName.valueOf(userTableName);HColumnDescriptor hcd=ne

37、w HColumnDescriptor(cf);htd.addFamily(hcd);/创建一个二级索引对象创建一个二级索引对象TableIndices tableIndices=new TableIndices();tableIndices.addIndex(iSpec);IndexSpecification spec=new IndexSpecification(index1);spec.addIndexColumn(hcd,q1,ValueType.String,10);/创建表和二级索引创建表和二级索引admin.createTable(htd);常用Java接口 创建索引HBase通

38、过 IndexAdmin可以进行二级索引管 理相关操作:创建索引、增加索引、删除索引等。可以通过将索引信息和列族信息添加到 HTableDescriptor里面,实现创建表的同时创建 索引用IndexSpecification来描述索引的定义信息,包括索引名、索引列、索引列类型、索引列长度。示例:示例:/new IndexAdmin对象对象HBaseAdmin admin=new IndexAdmin(conf);String userTableName=testAddIndex;版权所有 20152015 华为技术有限公司第2222页/new 索引对象索引对象IndexSpecificati

39、on spec=new IndexSpecification(index1);spec.addIndexColumn(hcd,q1,ValueType.String,10);/new 增加索引增加索引admin.addIndex(TableName.valueOf(userTableName),spec);常用Java接口 增加索引HBase通过 IndexAdmin可以进行二级索 引管理相关操作:创建索引、增加索引、删 除索引等。如果表已经创建了,需要增加索引,则需 要采用IndexAdmin的addIndex接口来实现用IndexSpecification来描述索引的定义 信息,包括索引名

40、、索引列、索引列类型、索引列长度。示例:示例:/new IndexAdmin对象对象HBaseAdmin admin=new IndexAdmin(conf);版权所有 20152015 华为技术有限公司第2323页/表名和索引名表名和索引名String userTableName=testAddIndex;String indexName=“index1”;/删除索引删除索引admin.dropIndex(TableName.valueOf(userTableName),indexName);常用Java接口 删除索引HBase通过 IndexAdmin可以进行二级索引管 理相关操作:创建索

41、引、增加索引、删除索引等。如果表和索引已经创建了,需要删除已有索引,则需要采用IndexAdmin的dropIndex接口来实现删除索引只需要指定需要删除的索引名和索引 所在的表。思考题版权所有 20152015 华为技术有限公司第2424页1.1.读取数据时ScaScan n接口的caccach hining g参数的作用是什么?为什么要设置该参数?本章总结版权所有 20152015 华为技术有限公司第2525页介绍HBasHBase e的几种常用接口介绍HBasHBase e的常用ShelShell l接口介绍HBasHBase e二次开发工程搭建的准备工作和方法介绍HBasHBase e

42、常用JavaJava接口的使用方法学习推荐版权所有 20152015 华为技术有限公司第2626页华为LeaLear rninning g网站htthttp p:/su:/sup ppopor rt.huat.huaw wei.ei.c com/lom/le earniarning/Inng/Ind de ex!toTraix!toTrain nIndexIndex华为SuppSuppo or rt t案例库htthttp p:/su:/sup ppopor rt.huat.huaw wei.ei.c com/om/e ententer rp pr risise e/ser/serv vicice ec ce en nter?langter?lang=zh=谢谢

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|