Skip to content
muyannian edited this page Apr 28, 2013 · 2 revisions

整体结构

每天增量的形式在hadoop进群中将索引创建好,然后蓝鲸集群从hadoop中将索引下载到本地,提供OLAP服务
http://imgout.ph.126.net/12530004/4.jpg

创建索引

  • 索引是进行分区的,比如说按照 每个月的上中下旬进行分区,如下所示

......
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2012101
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2012102
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2012103
......
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013011
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013012
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013013
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013021

  • 单独的某一个分区索引是按照事先设定的shards进行打散的,将来查询的时候会分发到不同的solr shards中区

/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013013/part-00000
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013013/part-00001
......
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013013/part-00017
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013013/part-00018
/group/taobao/external/p4p/p4padhoc/tablelist/cust/index/2013013/part-00019

  • 单独一个分区的创建流程如下图所示

一个分为两次mapreduce,
第一次mapreduce是先在内存中创建小索引,当内存中的索引大小超过设定的值的时候,将内存中的索引dump到hdfs中区,当所有索引创建完成后,在将这些内存中的小索引合并成1个
第二次是讲这些在hdfs中的小索引,进一步合并生成最终的索引
http://imgout.ph.126.net/12530005/3.jpg

查询流程

海狗的查询逻辑是建立在蓝鲸系统之上的,任务的关联,心跳恢复都是通过蓝鲸完成,具体的任务类型主要有如下两种

  • solr shard
    用来提供基本的查询和统计服务,通常一个表会有40个左右的solr shard提供服务
    每个shard下是进行分区的,每个分区对应不同的索引,故在查询的时候需要设定分区
    http://imgout.ph.126.net/12530001/QQBDD8CDBC20130209135018.jpg
  • Merge server(MS)
    最终是合并来自多个shards的查询结果,merge server是多级的,但最终只有一个顶层的MS用于返回给client最终结果,但是考虑到效率问题,我们原则上不超过2级
    http://imgout.ph.126.net/12530006/2.jpg
Clone this wiki locally