精华内容
下载资源
问答
  • 山东大学操作系统课设lab5实验五 具有二级索引文件系统(lab5)概念实验目的 实验五 具有二级索引文件系统(lab5) 概念 实验目的 Nachos系统原有的文件系统只支持单级索引,最大能存取NumDirect * SectorSize的...

    实验五 具有二级索引的文件系统(lab5)

    实验目的

    Nachos系统原有的文件系统只支持单级索引,最大能存取NumDirect * SectorSize的大小的文件。本次试验将在理解原文件系统的组织结构基础上扩展原有的文件系统,设计并实现具有二级索引的文件系统。

    实验环境

    虚拟机下Ubuntu Linux 16.04 LTS系统,nachos-3.4内核管理模块和MIPS CPU软件模拟模块,文件系统模块,代码在lab5文件夹下面实现。

    实验思路

    有参考这个:https://wenku.baidu.com/view/049223482b160b4e767fcfd6.html
    其实通过lab4就可以看出,思路是沿着fstest.cc里的Append()去扩展文件系统,具体是Append()里的openFile.Write(),更底层就到了Write()调用的WriteAt()。说到底,就是这一小段代码最终确定了如何分配,如何扩展,如何索引整个文件系统的扇区。所以在lab5实验里只用关注AllocateSpace()方法就好。(不对)
    在这里插入图片描述
    因为filesystem里Create()方法有创建文件头对象,且构造方法里也有调用到filehdr里的Allocate()等方法,所以filehdr.cc里的每个方法,只要涉及到数组保存,都要由一个数组写成两个数组,才能完成由一级索引到二级索引的转换。

    在这里插入图片描述
    在这里插入图片描述
    之前lab4里的filehdr.cc里的Allocate(),文件是通过一个数组dataSectors来进行分配的。
    在这里插入图片描述
    Filehdr.h里最初的定义部分有:
    #define NumDirect ((SectorSize - 2 * sizeof(int)) / sizeof(int))
    在这里插入图片描述
    这是在filehdr.h里private定义dataSectors[]的大小
    之前在lab4实验报告里有说,
    在这里插入图片描述
    在这里插入图片描述
    所以一个sector里128个字节,sectorSize = 128,sizeof(int) = 4,则NumDirect = 30,即有存储文件消耗30个sector,30*128 = 3840,即文件可占字节为3840
    想要扩展文件系统,还是从存储文件字节的数组下手。
    建立一个dataSectors2数组,
    定义大小
    ==#define NumDirect2 (SectorSize/sizeof(int)) == 大小为128/4 = 32
    修改
    ==#define MaxFileSize ((NumDirect+NumDirect2)*SectorSize) ==

    之前单级索引是用数组的最后1位作为索引号,dataSectors[0]-dataSectors[28]作为存取数据的块号;如果dataSectors[29]=-1,则表明没有没有二级索引块,如果dataSectors[29]为任意正值,则与二级索引块相应块号对应,即dataSectors2[]值。文件超过dataSectors[]可存放大小,则放到dataSector2[]中,dataSectors2[]返回的Sector号对应着dataSectors[-1]的值。
    文件读取还是依照之前的方法,openFile里WriteAt()添加的AllocateSpace(),其中AllocateSpace()添加了filehdr的ExpandSpace()。只是需要修改读数组dataSectors[]的方法,在读到最后一位时,需要跳到dataSectors2里去继续读二级索引的数据内容。
    关键源代码注释以及程序说明:
    这是lab4里filehdr.cc里的Allocate():
    在这里插入图片描述
    但是现在需要判断一些先需加入的扇区内容是否有超过文件大小范围。如果没超过,还是一级索引可以承受的;如果超过了,则需要用到二级索引。
    如果没超过文件内容,则和lab4基本一致, 将dataSectors[-1]设置为-1;超过文件内容则使用二级索引,先将dataSectors[-1]设置为,并设置dataSectors2的大小,把其他放不下的数据块放到二级索引数组里。并把相应块号设为一级索引的值。
    在这里插入图片描述

    Filehdr里的deallocate原来是这样:
    在这里插入图片描述
    相应的deallocate需要修改:如果只有一级索引,则与之前无异;若有二级索引,则将dataSector[]数组内容清除,再清楚dataSectors2[]数组内容。
    在这里插入图片描述
    Lab4的ExpandSpace()是这样的。
    在这里插入图片描述
    相应的加上dataSectors2的修改内容。
    在这里插入图片描述
    在这里插入图片描述
    ByteToSector()和Print()也相应地添加上关于dataSectors2[]的内容。

    调试记录

    ./nachos -f
    ./nachos -D
    ./nachos -cp test/big big
    ./nachos -ap test/big big *5
    在这里插入图片描述
    但是当我继续 ./nachos -ap test/big big 时就报错了。

    我也许是没有真正实现二级索引,所以才会这样。
    发现之前一直没有make,而且在makefile和makefile.local里面是filesys而不是lab5,因为filesys和lab5是同级文件,而且内部都有filesys.cc,所以会调用错。需要修改成lab5。
    在这里插入图片描述
    在这里插入图片描述
    发现其实在lab4里面也是调用的filesys,修改之后make再执行,如下。
    在这里插入图片描述
    Lab5修改后make再执行如下:
    在这里插入图片描述
    修改了输出格式,想把一级索引对应的二级索引也写出来。

    在这里插入图片描述
    做到现在,感觉对二级索引终于有了一点了解,对linux系统的debug也有了一点了解。
    虽然现在最多可以扩展到68,但是还有个很诡异的事情,就是中间会报一次错,但是之后又可以继续扩展。很奇怪,待解决。
    在这里插入图片描述

    展开全文
  • 我的归纳: (1)InnoDB的主键采用...(2)InnoDB的二级索引不使用聚蔟索引,叶子节点存储的是KEY字段加主键值。因此,通过二级索引查询首先查到是主键值,然后InnoDB再根据查到的主键值通过主键索引找到相应的数据块。

    原文链接

    我的归纳:
    (1)InnoDB的主键采用聚簇索引存储,使用的是B+Tree作为索引结构,但是叶子节点存储的是索引值和数据本身(注意和MyISAM的不同)。
    (2)InnoDB的二级索引不使用聚蔟索引,叶子节点存储的是KEY字段加主键值。因此,通过二级索引查询首先查到是主键值,然后InnoDB再根据查到的主键值通过主键索引找到相应的数据块。
    (3)MyISAM的主键索引和二级索引叶子节点存放的都是列值与行号的组合,叶子节点中保存的是数据的物理地址
    (4)MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址
    (5)为什么用B+Tree 不是BTree:
    B-Tree:如果一次检索需要访问4个节点,数据库系统设计者利用磁盘预读原理,把节点的大小设计为一个页,那读取一个节点只需要一次I/O操作,完成这次检索操作,最多需要3次I/O(根节点常驻内存)。数据记录越小,每个节点存放的数据就越多,树的高度也就越小,I/O操作就少了,检索效率也就上去了。
    B+Tree:非叶子节点只存key,大大滴减少了非叶子节点的大小,那么每个节点就可以存放更多的记录,树更矮了,I/O操作更少了。所以B+Tree拥有更好的性能。


    下面是原文中对聚簇索引的介绍,介绍的很简单易懂:

    1.聚簇索引是对磁盘上实际数据重新组织以按指定的一个或多个列的值排序的算法。特点是存储数据的顺序和索引顺序一致。
    一般情况下主键会默认创建聚簇索引,且一张表只允许存在一个聚簇索引。

    在《数据库原理》一书中是这么解释聚簇索引和非聚簇索引的区别的:
    聚簇索引的叶子节点就是数据节点,而非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。

    因此,MySQL中不同的数据存储引擎对聚簇索引的支持不同就很好解释了。

    2.下面,我们可以看一下mysql中MYISAM和INNODB两种引擎的索引结构。

    如原始数据为:
    这里写图片描述

    MyISAM引擎的数据存储方式如图:
    这里写图片描述

    (1)MYISAM是按列值与行号来组织索引的。它的叶子节点中保存的实际上是指向存放数据的物理块的指针。
    从MYISAM存储的物理文件我们能看出,MYISAM引擎的索引文件(.MYI)和数据文件(.MYD)是相互独立的。

    (2)而InnoDB按聚簇索引的形式存储数据,所以它的数据布局有着很大的不同。它存储数据的结构大致如下:
    这里写图片描述

    注:聚簇索引中的每个叶子节点包含主键值、事务ID、回滚指针(rollback pointer用于事务和MVCC)和余下的列(如col2)。

    (3)INNODB的二级索引与主键索引有很大的不同。InnoDB的二级索引的叶子包含主键值,而不是行指针(row pointers),这减小了移动数据或者数据页面分裂时维护二级索引的开销,因为InnoDB不需要更新索引的行指针。其结构大致如下:
    这里写图片描述

    INNODB和MYISAM的主键索引与二级索引的对比:
    这里写图片描述

    (4)InnoDB的的二级索引的叶子节点存放的是KEY字段加主键值。因此,通过二级索引查询首先查到是主键值,然后InnoDB再根据查到的主键值通过主键索引找到相应的数据块。而MyISAM的二级索引叶子节点存放的还是列值与行号的组合,叶子节点中保存的是数据的物理地址。所以可以看出MYISAM的主键索引和二级索引没有任何区别,主键索引仅仅只是一个叫做PRIMARY的唯一、非空的索引,且MYISAM引擎中可以不设主键。

    展开全文
  • 操作系统--文件管理之索引

    千次阅读 多人点赞 2021-01-01 17:49:54
    设有一个包含1000个记录的索引文件,每个记录正好占用一个物理块。一个物理块可以存放10个索引表目。建立索引时,一个物理块应有一个索引表目,试问索引应占几个物理块? 首先求出建立了几的索引 物理块的n次方...

    一级索引

    索引存储的结构

    在这里插入图片描述
    不会出题。。。。

    多级索引

    在这里插入图片描述
    多级索引求占用物理块数
    设有一个包含1000个记录的索引文件,每个记录正好占用一个物理块。一个物理块可以存放10个索引表目。建立索引时,一个物理块应有一个索引表目,试问索引应占几个物理块?

    • 首先求出建立了几级的索引
    • 物理块的n次方恰好大于等于总记录,则N为索引级别。如此题10^3为1000,所以应建立三级索引。
    • 则有如下示意图
      在这里插入图片描述
    • 一级一个,二级10个,三级100个,每个索引占1块,所以共计111个。

    增量索引

    UNIX 3级增量索引
    A1个1级索引,A2个2级索引,A3个3级索引…,磁盘每块大小为XB,每块地址为YB求管理最大文件

    1. 每个磁盘块能装多少个索引项X/Y项
    2. 求有多少个块 ∑ 1 n A i × ( X Y ) i − 1 \sum_{1}^{n} Ai\times \left ( \frac{X}{Y}\right )^{i-1} 1nAi×(YX)i1
    3. 再乘以每块的大小 X B ∗ ∑ 1 n A i × ( X Y ) i − 1 XB*\sum_{1}^{n} Ai\times \left ( \frac{X}{Y}\right )^{i-1} XB1nAi×(YX)i1

    一个文件系统,磁盘每块大小为2KB,每块地址用4B表示。采用UNIX System V文件系统管理的最大的文件是多少?

    • 2KB/4B=512条
    • 直 接 索 引 有 10 个 , 一 级 索 引 有 1 个 所 以 1 ∗ 512 块 , 二 级 索 引 有 一 个 所 以 1 ∗ 512 ∗ 512 块 , 3 级 索 引 一 个 所 以 1 ∗ 512 ∗ 512 ∗ 512 。 直接索引有10个,一级索引有1个所以1*512块,\\二级索引有一个所以1*512*512块,\\3级索引一个所以1*512*512*512。 1011512151251231512512512
    • 所以最大文件为:
      2 K B ∗ ( 10 + 512 + 512 ∗ 512 + 512 ∗ 512 ∗ 512 ) = 20 K B + 1 M B + 0.5 G B + 0.25 T B 2KB*(10+512+512*512+512*512*512)\\=20KB+1MB+0.5GB+0.25TB 2KB(10+512+512512+512512512)=20KB+1MB+0.5GB+0.25TB

    多级索引和增量索引给出两个例题,但实际做题中,都会相互考到,请理解计算过程和原理。

    展开全文
  • hbase基于solr配置二级索引

    千次阅读 2016-10-24 14:47:41
    Hbase适用于大表的存储,通过单一的RowKey查询虽然能快速查询,但是对于复杂查询,尤其分页、查询总数等,实现方案浪费计算资源,所以可以针对hbase数据创建二级索引(Hbase Secondary Indexing),供复杂查询使用。...

    一.概述

    1. Hbase适用于大表的存储,通过单一的RowKey查询虽然能快速查询,但是对于复杂查询,尤其分页、查询总数等,实现方案浪费计算资源,所以可以针对hbase数据创建二级索引(Hbase Secondary Indexing),供复杂查询使用。

    2. Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

    3. Key-Value Store Indexer是Hbase到Solr生成索引的中间工具。在CDH5中的Key-Value Store Indexer使用的是Lily HBase NRT Indexer服务

    4. Lily HBase Indexer是一款灵活的、可扩展的、高容错的、事务性的,并且近实时的处理HBase列索引数据的分布式服务软件。它是NGDATA公司开发的Lily系统的一部分,已开放源代码。Lily HBase Indexer使用SolrCloud来存储HBase的索引数据,当HBase执行写入、更新或删除操作时,Indexer通过HBase的replication功能来把这些操作抽象成一系列的Event事件,并用来保证写入Solr中的HBase索引数据的一致性。并且Indexer支持用户自定义的抽取,转换规则来索引HBase列数据。Solr搜索结果会包含用户自定义的columnfamily:qualifier字段结果,这样应用程序就可以直接访问HBase的列数据。而且Indexer索引和搜索不会影响HBase运行的稳定性和HBase数据写入的吞吐量,因为索引和搜索过程是完全分开并且异步的。Lily HBase Indexer在CDH5中运行必须依赖HBase、SolrCloud和Zookeeper服务。

    二.近实时(NRT)查询方案

    1. 分工:hbase负责海量数据存储;solr负责构建索引和提供对外查询;Indexer负责提供hbase到solr的索引构建。
    2. 索引创建流程:Hbase->Lily HBase Indexer->Solr
    3. 数据使用流程图

      hbase-indexer-structure

    三.二级索引创建方法

    1.hbase启用复制(在CM的hbase上搜索复制,勾选启用复制)

    2.hbase表开启REPLICATION功能(1表示开启replication功能,0表示不开启,默认为0 )

    • 已存在的表
    disable 'table' 
    alter 'table',{NAME => 'cf', REPLICATION_SCOPE => 1} 
    enable 'table' 
    • 新创建的表
    create 'table',{NAME => 'cf', REPLICATION_SCOPE => 1}

    3.创建solr实体目录,其中/home/data/collectionSmsDay是在本地自定义目录。命令执行后完成工作:生成solr的配置文件。

    solrctl instancedir --generate /home/data/collectionSmsDay
    • 编辑已生成的schema.xml

    把hbase表中需要索引的列添加到scheme.xml的filed中,其中的name属性值要与Morphline.conf文件中的outputField属性值对应,以便indexer中间件完成hbase到solr的索引创建工作。其中id保存的是hbase的rowkey;uniqueKey也是id;field的类型最好使用string;rootversion、text等field不能少。

            <field name="_version_" type="long" indexed="true" stored="true"/>
    
       <!-- points to the root document of a block of nested documents. Required for nested
          document support, may be removed otherwise
       -->
       <field name="_root_" type="string" indexed="true" stored="false"/>
       <field name="timestamp" type="tdate" indexed="true" stored="true" default="NOW+8HOUR" multiValued="false"/>
       <field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>
    
       <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    
       <!-- points to the root document of a block of nested documents. Required for nested
            document support, may be removed otherwise
       -->
       <field name="send_number" type="string" indexed="true" stored="true" multiValued="false"/>
       <field name="send_parent_account" type="string" indexed="true" stored="true" multiValued="false"/>
       <field name="busi_type" type="string" indexed="true" stored="true" multiValued="false"/>
       <field name="cnts" type="string" indexed="true" stored="true" multiValued="false"/>
       <field name="day_id" type="string" indexed="true" stored="true" multiValued="false"/>
    
        <uniqueKey>id</uniqueKey>

    4.创建collection并将配置文件上传至zk

    solrctl instancedir --create collectionSmsDay /home/data/collectionSmsDay
    • 登陆zk客户端查看节点:ls /solr/configs/collectionSmsDay,该节点下有solrconfig.xml、scheme.xml等配置文件;ls /solr/collection/下有collectionSmsDay
    [root@db1 ~]# cd /opt/cloudera/parcels/CDH/lib/zookeeper/bin/
    [root@db1 bin]# ./zkCli.sh 
    ...
    [zk: localhost:2181(CONNECTED) 3] ls /solr/configs/collectionSmsDay
    [admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt, solrconfig.xml.secure, _schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, _schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt, mapping-ISOLatin1Accent.txt, admin-extra.html, schema_bak.xml, xslt, synonyms.txt, scripts.conf, update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, schema.xml, clustering]
    [zk: localhost:2181(CONNECTED) 4] 
    [zk: localhost:2181(CONNECTED) 3] ls /solr/configs
    [collectionSmsDay]
    • solrctl工具使用方法
    [hadoop@db1 lib]$ solrctl --help
    
    usage: /opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/bin/../lib/solr/bin/solrctl.sh [options] command [command-arg] [command [command-arg]] 
    solrctl [options] command [command-arg] [command [command-arg]] ...  
    可选参数有:  
    --solr:指定 SolrCloud 的 web API,如果在 SolrCloud 集群之外的节点运行命令,就需要指定该参数。  
    --zk:指定 zk 集群solr目录。  
    --help:打印帮助信息。  
    --quiet:静默模式运行。  
    
    command 命令有:  
    init [--force]:初始化配置。  
    instancedir:维护实体目录。可选的参数有:  
    --generate path  
    --create name path  
    --update name path  
    --get name path  
    --delete name  
    --list  
    
    
    collection:维护 collections。可选的参数有:  
    [--create name -s <numShards>
                                  [-a Create collection with autoAddReplicas=true]
                                  [-c <collection.configName>]
                                  [-r <replicationFactor>]
                                  [-m <maxShardsPerNode>]
                                  [-n <createNodeSet>]]
    --delete name: Deletes a collection.  
    --reload name: Reloads a collection.  
    --stat name: Outputs SolrCloud specific run-time information fora collection.  
    `--list: Lists all collections registered in SolrCloud.  
    --deletedocs name: Purges all indexed documents from a collection.  
    
    
    core:维护 cores。可选的参数有:  
    --create name [-p name=value]]  
    --reload name: Reloads a core.  
    --unload name: Unloads a core.  
    --status name: Prints status of a core.  
    
    
    cluster:维护集群配置信息。可选的参数有:  
    --get-solrxml file  
    --put-solrxml file 
    

    5.在solr上创建collection:collectionSmsDay

    solrctl collection --create collectionSmsDay  -s 6 -m 15 -r 2 -c collectionSmsDay -a
    
    其中-s6个分片(shard),我们的solrclound是6台机器,-r2个副本(replication),-c是指定zk上solr/configs节点下使用的配置文件名称,-a是允许添加副本(必须写,否则创建不了副本),-m 默认值是1,注意三个数值:numShards、replicationFactor、liveSolrNode,一个正常的solrCloud集群不容许同一个liveSolrNode上部署同一个shard的多个replic,因此当maxShardsPerNode=1时,numShards*replicationFactor>liveSolrNode时,报错。因此正确时因满足以下条件:
    numShards*replicationFactor<liveSolrNode*maxShardsPerNode
    • 创建solr分片时,要根据实际情况定shard、replication,maxShardsPerNode,否则报错
    [root@db1 conf]# solrctl collection --create  solrtest  -s  7 –r 2 -m 20
    Error: A call to SolrCloud WEB APIs failed: HTTP/1.1 400 Bad Request
    Server: Apache-Coyote/1.1
    Content-Type: application/xml;charset=UTF-8
    Transfer-Encoding: chunked
    Date: Tue, 11 Oct 2016 01:11:36 GMT
    Connection: close
    <?xml version="1.0" encoding="UTF-8"?>
    <response>
    <lst name="responseHeader">
    <int name="status">
    400</int>
    <int name="QTime">
    73</int>
    </lst>
    <str name="Operation createcollection caused exception:">
    org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Cannot create collection solrtest. Value of maxShardsPerNode is 1, and the number of live nodes is 6. This allows a maximum of 6 to be created. Value of numShards is 7 and value of replicationFactor is 1. This requires 7 shards to be created (higher than the allowed number)</str>
    <lst name="exception">
    <str name="msg">
    Cannot create collection solrtest. Value of maxShardsPerNode is 1, and the number of live nodes is 6. This allows a maximum of 6 to be created. Value of numShards is 7 and value of replicationFactor is 1. This requires 7 shards to be created (higher than the allowed number)</str>
    <int name="rspCode">
    400</int>
    </lst>
    <lst name="error">
    <str name="msg">
    Cannot create collection solrtest. Value of maxShardsPerNode is 1, and the number of live nodes is 6. This allows a maximum of 6 to be created. Value of numShards is 7 and value of replicationFactor is 1. This requires 7 shards to be created (higher than the allowed number)</str>
    <int name="code">
    400</int>
    </lst>
    
    </response>
    [root@db1 conf]# 
    
    • 如果修改/home/data/collectionSmsDay/confs下的配置文件schema.xml,需要重新上传加载,执行以下语句:
    solrctl instancedir --update collectionSmsDay /home/data/collectionSmsDay
    solrctl collection --reload collectionSmsDay
    • web端查看新创建的collection

    6.在hbase-solr目录下创建morphline-hbase-mapper-smslogday.xml

    其中morphlineId 的value是对应Key-Value Store Indexer 中配置文件Morphlines.conf 中morphlines 属性id值。morphlineId不要和hbase的table名称相同。

    [hadoop@db1 hbase-solr]$ pwd
    /opt/cloudera/parcels/CDH/lib/hbase-solr
    [hadoop@db1 hbase-solr]$ vi morphline-hbase-mapper-smslogday.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <indexer table="tb_sms_log_day" mapper="com.ngdata.hbaseindexer.morphline.MorphlineResultToSolrMapper">
     <param name="morphlineFile" value="morphlines.conf"></param>
     <param name="morphlineId" value="smslogdayMap"></param>
    </indexer>
    ~

    7.修改Morphlines配置文件, 在CM中进入Key-Value Store Indexer面板->配置->类别->Morphlines-Morphlines文件;如果添加多个morphline,用逗号分隔。

    {
    id : smsdayMap
    importCommands : ["org.kitesdk.**", "com.ngdata.**"]
    
    commands : [                    
      {
        extractHBaseCells {
          mappings : [
            {
              inputColumn : "cf:send_number"
              outputField : "send_number" 
              type : string 
              source : value
            }
            {
              inputColumn : "cf:send_parent_account"
              outputField : "send_parent_account" 
              type : string 
              source : value
            }
            {
              inputColumn : "cf:busi_type"
              outputField : "busi_type" 
              type : string 
              source : value
            }
            {
              inputColumn : "cf:cnts"
              outputField : "cnts" 
              type : string 
              source : value
            }
            {
              inputColumn : "cf:day_id"
              outputField : "day_id" 
              type : string 
              source : value
            }     
          ]
        }
      }
    
    
      { logDebug { format : "output record: {}", args : ["@{}"] } }
    ]
    }

    8.将morphline-hbase-mapper-smsday.xml注册到Lily Hbase Service服务中

    • -n表示indexer的名称,-c表示加载的indexer的配置文件名称,–connection-param表示连接的solr的zk地址和对应的collection名称,–zookeeper表示indexer要上传到的zk地址。
    hbase-indexer add-indexer 
    -n smsdayIndexer 
    -c /opt/cloudera/parcels/CDH/lib/hbase-solr/morphline-hbase-mapper-smsday.xml 
    --connection-param solr.zk=nn1.hadoop:2181,nn2.hadoop:2181,dn7.hadoop:2181,dn5.hadoop:2181,dn3.hadoop:2181/solr  
    --connection-param solr.collection=collectionSmsDay 
    --zookeeper nn1.hadoop:2181,nn2.hadoop:2181,dn7.hadoop:2181,dn5.hadoop:2181,dn3.hadoop:2181
    • 查看索引器是否创建成功,关键Processes是否都是running processes
    [hadoop@db1 hbase-solr]$ hbase-indexer list-indexers --zookeeper nn1.hadoop:2181
    Number of indexes: 1
    
    smsdayIndexer
      + Lifecycle state: ACTIVE
      + Incremental indexing state: SUBSCRIBE_AND_CONSUME
      + Batch indexing state: INACTIVE
      + SEP subscription ID: Indexer_smsdayIndexer
      + SEP subscription timestamp: 2016-10-22T11:13:48.888+08:00
      + Connection type: solr
      + Connection params:
        + solr.collection = collectionSmsDay
        + solr.zk = nn1.hadoop:2181,nn2.hadoop:2181,dn7.hadoop:2181,dn5.hadoop:2181,dn3.hadoop:2181/solr
      + Indexer config:
          268 bytes, use -dump to see content
      + Indexer component factory: com.ngdata.hbaseindexer.conf.DefaultIndexerComponentFactory
      + Additional batch index CLI arguments:
          (none)
      + Default additional batch index CLI arguments:
          (none)
      + Processes
        + 2 running processes
        + 0 failed processes
    • 如果索引器需要重建,删除使用下列方法。如果删除不了,始终在删除中的死循环中,就需要到zk上手动删除节点信息:ls /ngdata/hbaseindexer下。
    hbase-indexer delete-indexer -n smsdayIndexer --zookeeper nn1.hadoop:2181

    9.hbase插入测试,solr中查询成功

    put 'tb_sms_day', '20161012000000001', 'cf:send_number', '15173751522'
    put 'tb_sms_day', '20161012000000001', 'cf:day_id', '2016-10-21'
    put 'tb_sms_day', '20161012000000001', 'cf:cnts', '1'
    put 'tb_sms_day', '20161012000000001', 'cf:busi_type', 'SMS'

    以上,有问题请留言!

    展开全文
  • 基于Solr的Hbase二级索引

    千次阅读 2017-06-16 10:37:34
    关于Hbase二级索引 HBase 是一个列存数据库,每行数据只有一个主键RowKey,无法依据指定列的数据进行检索。查询时需要通过RowKey进行检索,然后查看指定列的数据是什么,效率低下。在实际应用中,我们经常需要根据...
  • 操作系统-UNIX三级索引技术

    千次阅读 多人点赞 2019-11-03 10:35:29
    UNIX三级索引技术 目标:学透软考的一道题目 ...存储空间会被划分成n个物理块,在索引文件中,一个文件会被放入不同的物理块,这时需要索引表指出一个文件分别被拆分存在哪个块,所以索引表里存的是文...
  • 基于Solr实现HBase的二级索引

    千次阅读 2016-03-18 14:44:30
    本文所说的二级索引是针对 HBase 数据表中的 rowkey 级索引而言的,其原理就是针对数据表主键(rowkey)外的某个或者某些字段列建立的类似于“键 - 值”对的数据结构,以列的值作为“键”,以该列值对应的 rowkey ...
  • 操作系统——文件索引分配

    千次阅读 2020-10-19 23:47:24
    直接索引不使用FAT文件分配表,而是在文件控制块(FCB)中设置一个区域,成为索引块或索引表,每个文件都有一个FCB(Linux系统中使用inode索引节点),因此每个文件都有其对应的索引表。目录条目包括索引表的地址,...
  • HBase二级索引实现方案

    千次阅读 2018-08-07 17:52:09
    关于使用hbase进行多维度条件实时查询的方案调研。  1.MapReduce方案  优点:并发批量构建Index  缺点:不能实时构建Index  2.ITHBASE方案 ... 华为的HBase二级索引采用此方案(hindex代码...
  • 2、索引文件3、索引顺序文件梳理: 思维导图 逻辑结构VS物理结构 文件的逻辑结构和物理结构可直接类比于线性表的逻辑结构和物理结构 文件的逻辑结果分类 1、无结构文件 2、有结构文件 按照记录的长度来分: ...
  • 文件系统索引的数据结构——B-/+Tree

    千次阅读 2019-06-05 00:37:16
    目前的文件系统及数据库系统普遍采用B-/+Tree作为索引结构。对于索引查找行为本身来说,如果全部数据都加载进了速度很快的内存,使用传统的二叉树作为索引也未尝不可。但因为索引数据太大,一般不能全部加载到内存。...
  • 操作系统文件索引练习题

    千次阅读 2018-09-17 19:39:13
    文件索引结点中有8地址项,每地址项大小为4字节,其中5地址项为直接地址索引,2地址项是级间接地址索引,1地址项是二级间接地址索引,磁盘索引块和磁盘数据块大小均为1KB。则可表示的单个文件最大长度...
  • 阿里云数据库ClickHouse二级索引功能近日已正式发布上线,主要弥补了ClickHouse在海量数据分析场景下,多维度点查能力不足的短板。在以往服务用户的过程中,作者发现绝大部分用户对ClickHouse单表查询性能优化问题...
  • 5.2 Lucene索引器: 5.2.1 Lucene索引介绍 ...文档索引 是 Lucene系统的核心功能。 有专门的API用来实现索引的建立和管理功能。可处理多种格式的文档,如磁盘文件、电子邮件地址、网页及数据库记录等。 Lucene
  • 11.1 文件系统 1、下面有关文件系统的论述错误的是()。D A.在存储设备上组织文件的方法和数据结构 B.操作系统中负责管理和存储文件信息的模块 C.负责文件检索、读写等操作 D.从系统角度来说,文件系统的目的是方便...
  • 文件索引习题

    千次阅读 2017-11-24 10:32:48
    文件索引结点中有8地址项,每地址项大小为4字节,其中5地址项为直接地址索引,2地址项是级间接地址索引,1地址项是二级间接地址索引,磁盘索引块和磁盘数据块大小均为1KB。则可表示的单个文件最大长度...
  • 【操作系统】多级索引、混合索引例题

    千次阅读 多人点赞 2020-08-22 16:21:28
    多级索引: 文件系统采用多重结构搜索文件内容。...一个二级索引可存放文件的大小为:170×170×512=148×105B; 一个三级索引可存放文件的大小为:170×170×170×512=251×107B 混合索引: eg1/某系统中磁盘的每
  • 摘要 星际文件系统是一种点对点的分布式文件系统, 旨在连接所有有相同的文件系统的计算机设备。在某些方面, IPFS类似于web, 但...这形成了一个广义的Merkle DAG 数据结构,可以用这个数据结构构建版本文件系统,...
  • 文件(Files)、索引节点(Inodes)、数据块索引...大多数文件系统中通过使用“extents”来减少文件数据块的总索引大小。F2FS 不采用 B-tree 结构管理索引,也不使用extents减少文件数据块索引的大小(虽然F2F
  • 文件组织:索引顺序文件

    千次阅读 2013-11-08 23:42:39
    ISAM文件和VSAM文件是常用的索引顺序文件。...由于磁盘是以盘组、柱面和磁道三地址存取的设备,则可对磁盘上的数据文件建立盘组、柱面和磁道多级索引,下面只讨论在同一个盘组上建立的ISAM文件
  • 一个采用三级索引结构的UNIX 文件系统中,假设物理块大小为1KB,用64位表示一个物理块号。主索引表含有13 个块地址指针,其中前10 个直接指向盘块号,第11 个指向一级索引表,第12 个指向二级索引表,第13 个指向...
  • Mysql 索引实现: 聚簇索引: 索引 和 数据文件为同一个文件。非聚簇索引: 索引 和 数据文件...MyISAM索引原理:采用非聚簇索引-MyISAM myi索引文件和myd数据文件分离,索引文件仅保存数据记录的指针地址。叶子节...
  • 文件索引结构

    万次阅读 2010-05-25 16:18:00
    索引文件 为了提高文件的检索效率,可以采用索引方法组织文件。采用索引这种结构,逻辑上连续的文件可以存放在若干不连续的物理块中,但对于每文件,在存储介质中除存储文件本身外,还要求系统另外建立一张索引表...
  • 2.Solr是一个独立的企业搜索应用服务器,它对并提供类似干Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的...
  • 口气搞懂「文件系统」,就靠这 25 张图了

    万次阅读 多人点赞 2020-08-13 21:48:43
    前言 不多 BB,直接上「硬菜」。 正文 文件系统的基本组成 文件系统是操作系统中负责管理持久数据的子系统,说简单点,就是负责把用户的文件存到磁盘硬件中,因为即使计算机断电了,磁盘...Linux 文件系统会为每..
  • solr亿万级索引优化实践(

    千次阅读 2017-03-14 14:28:35
    但是这个速度远远还达不到我们的需求,最关键的时候随着节点数增加并不能速度并不能线性增加,然后又做了许多其他方面的尝试,其中路由方式是比较大的一个方向,本篇将重点介绍这一方案。 前面介绍了solr在创建索引...
  • 倒排文件索引

    千次阅读 2014-04-16 21:11:00
    这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。带有倒排索引的文件我们称为倒排索引文件,...
  • 3、文件物理结构思维导图文件...3、用户要访问一个位置:首先要找到目录文件中与之对应的文件目录项中的起始块号,然后物理块号=起始块号+逻辑块号,最后通过快内地址找到所要访问的位置。 连续分配优缺点: 优点:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,470
精华内容 49,388
关键字:

一个采用二级索引的文件系统