hbase基础知识.ppt

上传人:牧羊曲112 文档编号:5433005 上传时间:2023-07-06 格式:PPT 页数:35 大小:612KB
返回 下载 相关 举报
hbase基础知识.ppt_第1页
第1页 / 共35页
hbase基础知识.ppt_第2页
第2页 / 共35页
hbase基础知识.ppt_第3页
第3页 / 共35页
hbase基础知识.ppt_第4页
第4页 / 共35页
hbase基础知识.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《hbase基础知识.ppt》由会员分享,可在线阅读,更多相关《hbase基础知识.ppt(35页珍藏版)》请在三一办公上搜索。

1、课程安排,HBASE基础知识*HBASE的全分布的搭建*HBASE Shell*HBASE的批量导入*HBASE的Java客户端*-加深拓展-HBASE的集群的搭建*HBASE的表设计*HBASE的底层存储模型*,HBASE基础知识,HBase简介 HBase Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。,HBASE Cl

2、uster member,HBASE基础知识,HBASE中的每一张表,就是所谓的BigTable。稀疏表。RowKey 和 ColumnKey 是二进制值byte,按字典顺序排序;Timestamp 是一个 64 位整数;value 是一个未解释的字节数组byte。表中的不同行可以拥有不同数量的成员。即支持“动态模式“模型,逻辑数据模型,物理数据模型,将逻辑模型中的一个Row分割为根据Column family存储的物理模型,数据模型行,行键,列,列,字符串、整数、二进制串甚至串行化的结构都可以作为行键表按照行键的“逐字节排序”顺序对行进行有序化处理表内数据非常稀疏,不同的行的列的数完全目可以

3、大不相同可以只对一行上“锁”对行的写操作是始终是“原子”的,数据模型列,列必须用族(family)来定义任意一列有如下形式“族:标签”其中,族和标签都可为任意形式的串物理上将同“族”数据存储在一起数据可通过时间戳区分版本,族,标签,HBASE基础知识,表是存放数据的。表由行和列组成数据模型Row Key:行键,Table的主键,Table中的记录按照Row Key排序Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的version numberColumn Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中

4、可以有任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。,HBASE基础知识,物理存储 Table 在行的方向上分割为多个HRegion,一个region由startkey,endkey)表示,每个HRegion分散在不同的RegionServer中,参数,HBASE基础知识,架构体系Client 包含访问hbase 的接口,client 维护着一些cache 来加快对hbase 的访问,比如regione 的位置信息Zookeeper 保证任何时候,集群中只有一个runni

5、ng master 存贮所有Region 的寻址入口 实时监控Region Server 的状态,将Region server 的上线和下线信息,实时通知给Master 存储Hbase 的schema,包括有哪些table,每个table 有哪些column familyMaster 可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行为Region server 分配region负责region server 的负载均衡,调整Region分布管理用户对table的CRUD操作在regionserver停机后负责失效的regions

6、erver上的region迁移,HBASE基础知识,HBASE基础知识,架构体系Region Server维护Master 分配给它的region,处理对这些region 的IO 请求负责切分在运行过程中变得过大的region 可以看出,client 访问hbase 上数据的过程并不需要master 参与,寻址访问zookeeper 和region server,数据读写访问regioneserver。HRegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。,HBASE基础知识,HBase中有两张特殊的Table,-ROOT-和.META

7、.META.:记录了用户表的Region信息,.META.可以有多个regoin-ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region Zookeeper中记录了-ROOT-表的locationClient访问用户数据之前需要首先访问zookeeper,然后访问-ROOT-表,接着访问.META.表,最后才能找到用户数据的位置去访问,系统架构,HBASE与相关软件,hadoop.2.2hbase-0.98-hadoop2.tar.gzJDK7,前提条件:本机或集群环境下hadoop.2.2已经安装成功,HBASE Shell,hbase提供了一个shell的终端

8、给用户交互,#$HBASE_HOME/bin/hbase shell,HBASE Shell的DDL操作,创建表create users,user_id,address,info表users,有三个列族user_id,address,info列出全部表list 得到表的描述describe users创建表create users_tmp,user_id,address,info删除表disable users_tmpdrop users_tmp,#$HBASE_HOME/bin/hbase shell quit,exists usersis_enabled usersis_disabled

9、users,HBASE Shell的DML操作,添加记录获取一条记录1.取得一个id的所有数据get users,xiaoming2.获取一个id,一个列族的所有数据get users,xiaoming,info3.获取一个id,一个列族中一个列的所有数据get users,xiaoming,info:age,put users,xiaoming,info:age,24;put users,xiaoming,info:birthday,1987-06-17;put users,xiaoming,info:company,alibaba;put users,xiaoming,address:co

10、ntry,china;put users,xiaoming,address:province,zhejiang;put users,xiaoming,address:city,hangzhou;put users,zhangyifei,info:birthday,1987-4-17;put users,zhangyifei,info:favorite,movie;put users,zhangyifei,info:company,alibaba;put users,zhangyifei,address:contry,china;put users,zhangyifei,address:prov

11、ince,guangdong;put users,zhangyifei,address:city,jieyang;put users,zhangyifei,address:town,xianqiao;,HBASE Shell的DML操作,更新记录put users,xiaoming,info:age,29get users,xiaoming,info:ageput users,xiaoming,info:age,30get users,xiaoming,info:age获取单元格数据的版本数据get users,xiaoming,COLUMN=info:age,VERSIONS=1get us

12、ers,xiaoming,COLUMN=info:age,VERSIONS=2get users,xiaoming,COLUMN=info:age,VERSIONS=3获取单元格数据的某个版本数据全表扫描scan users,HBASE Shell的DML操作,删除xiaoming值的info:age字段delete users,xiaoming,info:ageget users,xiaoming删除整行deleteall users,xiaoming统计表的行数count users清空表truncate users,HBASE的Java_API(一),/hbase操作必备 private

13、 static Configuration getConfiguration()Configuration conf=HBaseConfiguration.create();conf.set(hbase.rootdir,hdfs:/hadoop0:9000/hbase);/使用eclipse时必须添加这个,否则无法定位conf.set(hbase.zookeeper.quorum,hadoop0);return conf;,HBASE的Java_API(二),/创建一张表public static void create(String tableName,String columnFamily

14、)throws IOExceptionHBaseAdmin admin=new HBaseAdmin(getConfiguration();if(admin.tableExists(tableName)System.out.println(table exists!);elseHTableDescriptor tableDesc=new HTableDescriptor(tableName);tableDesc.addFamily(new HColumnDescriptor(columnFamily);admin.createTable(tableDesc);System.out.printl

15、n(create table success!);,HBASE的Java_API(三),/添加一条记录public static void put(String tableName,String row,String columnFamily,String column,String data)throws IOExceptionHTable table=new HTable(getConfiguration(),tableName);Put p1=new Put(Bytes.toBytes(row);p1.add(Bytes.toBytes(columnFamily),Bytes.toByt

16、es(column),Bytes.toBytes(data);table.put(p1);System.out.println(put+row+,+columnFamily+:+column+,+data+);,HBASE的Java_API(四),/读取一条记录public static void get(String tableName,String row)throws IOExceptionHTable table=new HTable(getConfiguration(),tableName);Get get=new Get(Bytes.toBytes(row);Result resu

17、lt=table.get(get);System.out.println(Get:+result);,HBASE的Java_API(五),/显示所有数据public static void scan(String tableName)throws IOExceptionHTable table=new HTable(getConfiguration(),tableName);Scan scan=new Scan();ResultScanner scanner=table.getScanner(scan);for(Result result:scanner)System.out.println(

18、Scan:+result);,HBASE的Java_API(六),/删除表public static void delete(String tableName)throws IOExceptionHBaseAdmin admin=new HBaseAdmin(getConfiguration();if(admin.tableExists(tableName)try admin.disableTable(tableName);admin.deleteTable(tableName);catch(IOException e)e.printStackTrace();System.out.printl

19、n(Delete+tableName+失败);System.out.println(Delete+tableName+成功);,HBASE的Java_API(七),public static void main(String args)throws IOException String tableName=hbase_tb;String columnFamily=cf;HBaseTestCase.create(tableName,columnFamily);HBaseTestCase.put(tableName,row1,columnFamily,cl1,data);HBaseTestCase

20、.get(tableName,row1);HBaseTestCase.scan(tableName);HBaseTestCase.delete(tableName);,练习详单入库,HBASE表定义为:create wlan_log,cf,RowKey设计:msisdn:日期时间串(yyyyMMddHHmmss),源文件数据增加一个字段rowkey,HBASE结合MapReduce批量导入,static class BatchImportMapper extends MapperSimpleDateFormat dateformat1=new SimpleDateFormat(yyyyMMdd

21、HHmmss);Text v2=new Text();protected void map(LongWritable key,Text value,Context context)throws java.io.IOException,InterruptedException final String splited=value.toString().split(t);try final Date date=new Date(Long.parseLong(splited0.trim();final String dateFormat=dateformat1.format(date);String

22、 rowKey=splited1+:+dateFormat;v2.set(rowKey+t+value.toString();context.write(key,v2);catch(NumberFormatException e)final Counter counter=context.getCounter(BatchImport,ErrorFormat);counter.increment(1L);System.out.println(出错了+splited0+e.getMessage();,HBASE结合MapReduce批量导入,static class BatchImportRedu

23、cer extends TableReducerprotected void reduce(LongWritable key,java.lang.Iterable values,Context context)throws java.io.IOException,InterruptedException for(Text text:values)final String splited=text.toString().split(t);final Put put=new Put(Bytes.toBytes(splited0);put.add(Bytes.toBytes(cf),Bytes.to

24、Bytes(date),Bytes.toBytes(splited1);/省略其他字段,调用put.add(.)即可context.write(NullWritable.get(),put);,HBASE结合MapReduce批量导入,public static void main(String args)throws Exception final Configuration configuration=new Configuration();/设置zookeeperconfiguration.set(hbase.zookeeper.quorum,hadoop0);/设置hbase表名称co

25、nfiguration.set(TableOutputFormat.OUTPUT_TABLE,wlan_log);/将该值改大,防止hbase超时退出configuration.set(dfs.socket.timeout,180000);final Job job=new Job(configuration,HBaseBatchImport);job.setMapperClass(BatchImportMapper.class);job.setReducerClass(BatchImportReducer.class);/设置map的输出,不设置reduce的输出类型job.setMapOu

26、tputKeyClass(LongWritable.class);job.setMapOutputValueClass(Text.class);job.setInputFormatClass(TextInputFormat.class);/不再设置输出路径,而是设置输出格式类型job.setOutputFormatClass(TableOutputFormat.class);FileInputFormat.setInputPaths(job,hdfs:/hadoop0:9000/input);job.waitForCompletion(true);,HBASE的Java_API 练习,查询按R

27、owKey查询按手机号码查询按手机号码的区域查询,HBASE的Java_API练习,public static void scan(String tableName)throws IOExceptionHTable table=new HTable(getConfiguration(),tableName);Scan scan=new Scan();ResultScanner scanner=table.getScanner(scan);int i=0;for(Result result:scanner)System.out.println(Scan:+i+result);,HBASE的Jav

28、a_API练习,查询134号段的所有上网记录public static void scanPeriod(String tableName)throws IOExceptionHTable table=new HTable(getConfiguration(),tableName);Scan scan=new Scan();scan.setStartRow(Bytes.toBytes(134/);scan.setStopRow(Bytes.toBytes(134:);scan.setMaxVersions(1);ResultScanner scanner=table.getScanner(scan);int i=0;for(Result result:scanner)System.out.println(Scan:+i+result);,思考题,HBASE是什么数据库,与普通RDBMS有什么区别HBASE的结构HBASE的常用命令,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号