首页 > 编程知识 正文

Oracle面试题,feign面试题

时间:2023-05-05 09:51:29 阅读:10337 作者:3213

1、如何保证每天有百亿数据存储在HBase中,数据存储准确,在规定时间内全部记录完成,不留数据1 (百亿数据:证明数据量非常大

2 )存入HBase )证明与HBase的写入数据有关

3 )保证数据的准确性)设计正确的数据结构保证准确性

4 )规定时间内完成)收款速度有要求

那么,就以上四个问题,逐一分析一下吧

1 )数据量百亿瓶,是什么概念呢? 假设一天中60x60x24=86400秒写入数据,则每秒写入的数量将达到100万次,HBase当然无法每秒支持100万次数据,因此这100亿次数据将实时写入批量导入使用批量加载方式(

2 )存入HBase :正常写入通过JavaAPI put实现,批量导入推荐批量加载

3 )保证数据的准确性)这里需要考虑RowKey的设计、预构建的分区、列族的设计等

4 )在规定时间内完成,也就是收款速度不能太慢。 而且当然越快越好。 使用批量加载

2、Hbase的六个特点(1)表大)一个表可以有几亿行、几百万列。

(2)无模式)每行有可排序的主键和任意数量的列,列可以根据需要动态增加,同一表中不同行的可以有完全不同的列。

(3)面向列) HBase是面向列的存储和权限控制,列族独立索引。

)稀疏)空(null )列不占空间,表可以设计得非常稀疏。

)5)数据类型单一) HBase的数据都是字符串,没有类型。

)6)数据的多版本)每个单元格中的数据可以有多个版本,默认情况下会自动分配版本号,并成为插入单元格时的时间戳。

3、Hbase的原始密钥设计原则: (1)原始密钥长度原则:原始密钥是二进制流,长度开发人员建议10-100字节,但越短越好。 建议不超过16字节。 这是因为数据持久化文件HFile以key/value存储,而rowkey太长会影响HFile的存储效率。 Memstore将数据缓存在内存中。 rowkey字段太长会降低内存利用率,使系统无法缓存更多数据,从而降低搜索效率。

)2) rowkey散列原则) rowkey以时间戳方式递增时,请不要在二进制代码之前放置时间。 建议将rowkey的高位作为散列字段。 如果没有散列字段,则会出现堆栈在regionServer上的热点现象。

)3) rowkey的唯一原则) rowkey不能是空的。

4、Hbase查询方式1、全表查询: scan tableName

2、基于行密钥的单行查询: get tableName、‘1’

3、基于rowkey的范围扫描:扫描表名称,{ startrow=‘1’,stop row=‘2’}

4、get和scan方法:

)1)、按指定的rowkey获取唯一的数据。 get方法)分为closestRowBefore和未设定的rowlock两种,只要保证了行的事务性,即每个get用一个row标记,一个row上有多个family和column

)2)、按指定条件获取一批记录,按条件查询。 1、扫码可以采用设置缓存和设置缓存的方法加快速度; 2、扫码可以通过setStartRow和setEndRow限定范围,3、扫码也可以通过setFileter方法添加过滤器。

ps:setCache和setBatch方法:

setCache方法:此方法设置在一个RPC请求中返回的行数。 在高速缓存操作中,如果返回的行数过多可能会导致内存溢出,则需要setBatch方法。

设置批处理—设置此选项后,客户端可以选择要读取的列数。 如果一行中的列数超过了设置的值,则可以对该列进行切片。 例如,对于1行17列,如果将batch设置为5,则分别返回5、5、5和2四个组。 在、

:Cache设置服务器一次返回的行数,Batch设置服务器一次返回的列数。

ps:Batch参数确定一行数据被拆分成多少个result,Cache一次只确定RPC返回的result数。

RPC请求数=(行数*每行数)/Min (每行数、批量大小) /扫描仪缓存

5、Hbase读写流程: 1、Hbase读写流程:

) 1、HRegisonServer保存了. meta .表和数据表。 首先,客户端首先访问zk,然后访问-ROOT-表。 然后获取zk上有. meta .表的位置信息,并查找此meta表保存在哪个HRegionServer上。

) 2、然后客户端访问HRegionServer表读取. meta .获取. meta .表中存储的元数据。

) 3、客户端通过. meta .的元数据信息访问相应的HRegionServer,扫描HRegionServer的Memstore和StoreFile查询数据。

) 4、最后从HRegionServer将数据反馈给客户端。

2、HBase的写入流程:

)1)客户端访问zk的-ROOT-表,然后访问. meta .表,获取. meta .的元数据。

)2)确定当前写入的HRegion和HRegionServer。

)3)客户端向HRegionServer发出相应的写入请求,HRegionServer接收请求并作出响应。

)4)客户端首先将数据写入HLog,避免数据丢失。

)5)然后向MemStore写入数据。

)6)如果HLog和MemStore都成功写入,则该数据表示写入成功。

)7) MemStore写入的数据达到阈值时,刷新为StoreFile。

) StoreFile增加时,将触发压缩合并操作,过多的StoteFile将合并为一个大StoreFile。

)9) StoreFile越多,Region也越大,在达到阈值时触发spilit操作,将该Region分为两部分。

因为ps:HBase的所有更新和删除操作都是在后续的compact中执行的,所以用户的写入操作只需要进入内存。 实现了HBase的I/O高性能。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。