主要介绍云HBase/Phoenix引入Search Index的背景,基本实现原理,使用方式以及应用案例。

注脚

展开查看详情

1. ;hSeRNx SeFrHh IRIex 功能n应用实践介绍 天斯 s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

2. 目录 / 1SRXeRXs &' 背景 &( 架构 &) 功能 &* 应用实践 &+ 后续 Q/ s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

3. 01 背景 构建在云50Fsek的应用p务越来越复杂g提出更多综合查询的需求g同 时又希望更简单易用的编程方式 s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

4. ' 背景 / 在云50Fsevk的各种p务 • 消费ᦈ‫ܔ‬ғ ෛ᳼ ᗑᶭ • 姓名、地址模糊查询 ... ࣈቘ֖ᗝ ၾᩇᦈ‫ܔ‬ ᘱॠ‫௳מ‬ • ձ఺ᦈ‫ܔ‬๵կand/orᕟ‫ ᧃັݳ‬ • 物流‫௳מ‬ғ ࢶᇆ HBase • 模糊ັᧃ ӱ‫ۓ‬ ੒᨝ ັᧃӱ‫ۓ‬ ಸᤒ • 任意条件FRI/Sr组合查询 փఽ • 空间查询 ‫௳מ‬ • 新闻ᗑᶭғ • 分词ັᧃ ࿈᨝ ኪ‫מ‬ᨴ‫ܔ‬ አಁ ᗑ໒ • … … ᇙ஄ s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

5. ' 背景 / 在云50Fsevk提出的查询需求n解决方案 ;hSeRNx 检索h{级索引、计算l推server HT 使用hSQL 50Fse 50Fse KSr SSPr 存储h大数据存储、分布式 检索h模糊查询、分词查询、任意条件组合、 检索h前缀匹配查询g点查g范围查找 分组查询、空间查询等 使用hhbFse FTN 使用hhbFse FTN sSPr FTN s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

6. ' 背景 / 在云50Fsevk提出的查询需求n解决方案 SeFrHh IRIex ;hSeRNx 检索h全文索引g模糊/分词/分组/空间查询g 检索h{级索引、计算l推server HT 任意条件组合查询等 使用hSQL 索引管理hrebYNPI、bFHOTressYre 使用hSQL 50Fse 50Fse KSr SSPr 存储h大数据存储、分布式 检索h模糊查询、分词查询、任意条件组合、 检索h前缀匹配查询g点查g范围查找 分组查询、空间查询等 使用hhbFse FTN 使用hhbFse FTN sSPr FTN s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

7. 02 架构 ;hSeRNx SeFrHh IRIex构建在ThSeRNx/sSPr/hbFsevkg集成n;hSeRNx sg保持z;hSeRNx SQL的易用性同时g给50Fse提供z更强大的全文引 擎的检索能力. s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

8. ( 架构 / SeFrHh IRIex架构 create search index on foo(col1); select * from foo where col0 = ‘hello’ and contains(col1, ‘world’) ฃአ௔ Phoenix Search Index CRUD Indexer CRUD collection හഝᛆᙡ MultiGet(col0 = ‘hello’ ) rebuild index contains(col1, ‘world’) HBase Search Service SearchManager Solr Cloud Region හഝ‫ྍݶ‬ Region Region Search Meta Inverted Index batchs Batch docs DocValues ‫ྍݶ‬୊᬴ hlog hlog Index Rebuilder hlog hlog ReplicationConsumer Full-text ᑞਧ௔ replica RPC Fake-HBase docs ReplicationSource parser solr client FST/BKD-Tree Ӟᛘ௔ backpressure backpressure ZooKeeper HDFS s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

9. ( 架构 / SeFrHh IRIex功能概览 JDBC ฃአ௔ ‫ྍݶ‬ᔱ୚ ୊෸‫ݢ‬ഴ SQLᤒᬡғDDL ਂᰁහഝӞ๵޸ե ‫ܴݍ‬๢‫ّګ‬ᶶ Phoenix Search Index ᓕቘᔱ୚҅DML ‫޾ݺރ‬ᔱ୚‫ݢ‬ ᐶᕚ‫ࣁ̶ྍݶ‬ᕚහഝ ൊ‫ف‬හഝ҅Select ᥠ୊̶᬴ ‫ݣݸ‬ਫ෸ीᰁ‫̶ྍݶ‬ ັᧃᔱ୚ Ӟᛘ௔‫ᦤכ‬ ᴳ౮๜ ꧋ᦜ‫ݱ‬ᐿඳᵑ̵ෙ Solr‫ؙਂݝ‬ᔱ୚‫ڜ‬ HBase search Solr ᅩ҅හഝ๋ᕣ‫ྍݶ‬ ӧਂ‫ؙܻ‬ᤒ҅౮๜ Cluster manager Cloud Ӟᛘ௔ ๋ս۸ backpressure s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

10. ( 架构 / SeFrHh IRIex易用性 DDL • CREATE SEARCH INDEX [IF NOT EXISTS] ON [namespace.]table_name (column { option : value } [, …]) options; • DROP SEARCH INDEX IF EXISTS indexName ON tableRef • ALTER SEARCH INDEX ON [namespace.]table_name ADD [IF NOT EXISTS] (column { option : value } [, ...]) • ALTER SEARCH INDEX ON [namespace.]table_name DROP COLUMN colume_list • ALTER SEARCH INDEX ON [namespace.]table_name SET options • ALTER SEARCH INDEX ON [namespace.]table_name RELOAD • ALTER SEARCH INDEX ON [namespace.]table_name REBUILD • DESCRIBE SEARCH INDEX ON [namespace.]table_name Query • SEARCH_QUERY • SELECT selectors FROM table WHERE SEARCH_QUERY = ‘search_expression’ [LIMIT n] [ORDER BY column_name] • Native Query • SELECT selectors FROM table WHERE native_condition_expression [LIMIT n] [ORDER BY column_name] • native_condition_expressionғCONTAINS҅LIKE҅AND҅ORᒵ s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

11. ( 架构 / SeFrHh IRIex索引同步 Phoenix Search Index replica RPC HBase Search Service backpressure 增量 重建 异常 延时 数据更新增量 支持全量重建一条SQL hbFse/sSPr等服务异 增量同步通过 实时同步 运行g支持断点重试g 常mq数据g数据同 bFHOTressYreg延时 轻量分布式任务 步最终一致性 可控g满足m同需求 s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

12. 03 功能 ;hSeRNx SeFrHh IRIex集成z50Fse/SSPr/;hSeRNx各自的优点g满足z p务的各种综合复杂查询需求. s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

13. ) 功能 / SeFrHh IRIex功能 ;hSeRNx SeFrHh IRIex 50Fse ;hSeRNx 50Fse KSr SSPr ;hSeRNx SeFrHh IRIex构建在SSPr/50Fsevkg利用SSPrt50Fse存储索引g并封装一整套完整流程自动化完成索引识别n检索回 查g给50Fse提供z复杂查询的检索能力。另外g;hSeRNx SeFrHh IRIexx正如其名g集成在;hSeRNxvsg同样拥有;hSeRNx SQL 的用户接口g简单易用g学y成本低。 s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

14. ) 功能 / SeFrHh IRIex分词查询 分词查询h 输入关键字g匹配文本s带此关键字的字段 e 例如h某视频娱w网站g关键字搜索标题带有 eIYHFXNSR的视频 sePeHX * KrSQ vNIeS [here seFrHhEUYer].'XNXPe,eIYHFXNSR' SrIer b] HreFXeEXNQe IesH PNQNX '& sePeHX * KrSQ vNIeS [here HSRXFNRs(XNXPe,'eIYHFXNSR') SrIer b] HreFXeEXNQe IesH PNQNX '&. s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

15. ) 功能 / SeFrHh IRIex复杂条件任意组合 多条件任意组合查询h 各种条件v间进行任意的组合查询 提升用户查询筛选的灵活性 e 例如h购物网站可以按照 裤子、大小、型号、尺码颜色、长 短风格等g任意组合查询g并按照各自类型的相关度排序 sePeHX * KrSQ TrSIYHX [here seFrHhEUYer].'sNze,*( /N2 HSPSr,"reI" := sX]Pe,dHPFssNH"' SrIer b] HreFXeEXNQe IesH PNQNX '&. s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

16. ) 功能 / SeFrHh IRIex索引重建 给表创建seFrHh NRIex索引 1=3/T3 S3/=15 IN23A CI4 N:T 3AISTSD :N CRFQesTFHe.DXFbPeERFQe (HSPYQR _ STXNSR , vFPYe } C, fD) STXNSRs; Batch Rebuild 增加/删除索引列 ALTER SEARCH INDEX ON [namespace.]table_name ADD [IF NOT hbase kvs index data EXISTS] (column { option : value } [, ...]) ALTER SEARCH INDEX ON [namespace.]table_name DROP COLUMN colume_list 修改索引列属性 ALTER SEARCH INDEX ON [namespace.]table_name SET options ALTER SEARCH INDEX ON [namespace.]table_name REBUILD s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

17. 04 应用实践 u例说明;hSeRNx SeFrHh IRIex如何简单应用到实际案例当s。 s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

18. * 应用实践 / SeFrHh IRIexu例IeQS u例h某物流运单管理系统g运单表有h运单编号、运单状态、件数、货物重量、创建时间、收件}、收件}地址等等几十 r字段g这里简单u例几r字段IeQS如lh 创建表h 插入数据h 1=3/T3 [F]bNPP( UPSERT INTO waybill values(‘1001’,0,1,0.4, 1558627680, ‘1558627680’ , ‘ୟӣ’); NI vFrHhFr RSX RYPP TrNQFr] Oe] , UPSERT INTO waybill values(‘1002’,0,1,0.4, 1558627740 , ‘1558627740’ , ‘๫ࢥ’); ff sXFXe NRXeLer, FQSYRX NRXeLer, [eNLhX ISYbPeg HreFXeXNQe PSRL, FIIr vFrHhFr, RFQe vFrHhFr ); s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

19. * 应用实践 / SeFrHh IRIexu例IeQS u例h某物流运单管理系统g运单表有h运单编号、运单状态、件数、货物重量、创建时间、收件}、收件}地址等等 创建seFrHh NRIex索引h CREATE SEARCH INDEX ON waybill (state,name ); 查询未发货的运单g或姓名t张三的所有运单 sePeHX * KrSQ [F]bNPP [here seFrHhEUYer].aRFQe,c张三d := sXFXe,& b 删除索引h DROP SEARCH INDEX ON waybill; 创建带分词的索引h CREATE SEARCH INDEX ON waybill (state,name, addr {ANALIZER=standard} ); ັᧃᯈᭆ‫ک‬Ӯᕉय़᭲ᴫᬪ҅Ӭᬩ‫ܔ‬ᇫாԅ๚‫ݎ‬ᨵጱ sePeHX * KrSQ [F]bNPP [here seFrHhEUYer].aFIIr,co纪大道d/N2 sXFXe,& b s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

20. * 应用实践 / SeFrHh IRIex 测试延时控制情况 hbase solr ሾहғԯHBase 4c8g ຽ‫ٵ‬ᇇ 2 workerᜓᅩ̶ ၥᦶғ‫ܔ‬ᕚᑕൊ‫ܔ҅ف‬region҅ൊ‫ܔف‬shardӷreplica҅‫ڦړ‬ൊ‫ف‬300w/600wၥᦶܻ҅ᤒ20‫ڜ‬, ᔱ୚15‫ ڜ‬ 735s 736s ‫ܴݍ‬ᯈᗝғ꧋ᦜ15ᑁ‫ྍݶ‬୊෸҅᩻ᬦ‫ڞ‬ᴴၞ҅solr commit෸ᳵԅ1s 800 ᕮຎғ‫ܔ‬ᕚᑕൊ‫ف‬300wᤈ҅hbaseᘙ෸368s ଘ࣐8147ᤈ/ᑁ ҅solr‫ྍݶ‬ᘙ෸372s ଘ࣐ 8065ᤈ/ᑁ҅ 600 ୊෸य़༷=372-368=4sҔ 368s 372s ᒫԫེၥᦶൊ‫ف‬600wᤈ҅೮ᖅๅԋӞԶ҅hbaseᘙ෸735s ଘ࣐8160ᤈ/ᑁ҅solr‫ف‬ପᘙ෸736s ଘ࣐8152ᤈ/ᑁ҅ 400 ୊෸य़༷=736-735=1s̶ 200 ᕮᦞғ୏‫ܴݍސ‬ጱఘ‫٭‬ӥ҅ᦡᗝ‫ݳ‬ቘ‫ܴݍ‬ᯈᗝ‫҅ݸ‬hbaseٟ‫ف‬Өsolrහഝ‫ྍݶ‬୊෸च๜ ഴ‫ګ‬ԅࣁreplication୊෸+autocommit୊෸ = 15+1 ᑁ̶ٖhbaseጱٟ‫ف‬᭛ଶᤩ‫ܴݍ‬ᴥಯӥ๶҅ 0 hbaseൊ‫کݑف‬solrൊ‫ف‬᭛ଶጱ‫ܴݍ‬ᴴ‫ࢩ̶ګ‬ԅ‫ܴݍ‬ᴴၞ꧊᪃ड़solrၾᩇ҅ಅզ‫پ‬Ԓဌํॡग़ञᑌ҅ ‫ܔ‬ᕚᑕ‫ف‬ପ300w ‫ܔ‬ᕚᑕ‫ف‬ପ600w ളᬪ‫ྍݶ‬පຎ̶ s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

21. 05 后续 Q/ ;hSeRNx SeFrHh IRIex兼容RFXNve sUP的方式更简单更易用g支持更多全 文特性的操作SQL KYRHXNSRg例如分词查找HSRXFNRs、[NPIHFrI模糊等i 并可sUP指定延时同步数据配置g延时更有保障. s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

22. T5/NK B:U 50Fse 技术社区公众号 社区管理员 50Fse " STFrO 钉钉社区大群 s国 50Fse 技术社区网站hhXXT,//hbFse.LrSYT

user picture
为了让众多HBase相关从业人员及爱好者有一个自由交流HBase相关技术的社区,阿里巴巴、小米、华为、网易、京东、滴滴、知乎等公司的HBase技术研究人员共同发起了组建中国HBase技术社区。

相关文档