• 索引的修复可以通过2种方式,(关于pehoenix的索引的生命周期可以参考  https://community.hortonworks.com/articles/58818/phoenix-index-lifecycle.html

        • 一 手工执行修复命令
        • 依赖phoenix的自动修复命令
      • 自动修复
      • 手工修复
        • 当数据量比较小的时候,正常的修复命令可以正常执行,但是由于数据量较大,出现了修复超时、修复错误等问题
        • 当数据量较大的时候,采用修复命令的时候,比较曲折,由于各方面原因最终没有修复成功,
      • 下面的一个场景为修复我们的一个数据库表原始数据800G,索引数据70个G左右,regionserver 是3台,8core 14g
      • 修复流程如下
      • 查看当前索引的状态
      • select TABLE_NAME,DATA_TABLE_NAME,INDEX_TYPE,INDEX_STATE,INDEX_DISABLE_TIMESTAMP from system.catalog where INDEX_TYPE is not null

;


      验证sql 是否走索引 发现没有走

      
                            .修复索引

          • ALTER INDEX IF EXISTS SysActionLog_idx ON "SysActionLog" REBUIL3
      • 执行出现超时
              Error: org.apache.phoenix.exception.PhoenixIOException: Failed after attempts=36, exceptions:
        • Wed Nov 16 11:06:26 GMT 2016, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=73626: row '' on table 'SYSACTIONLOG_IDX' at region=SYSACTIONLOG_IDX,,1463835204579.ce4eb5993504052a305c8807d6234d93., hostname=workernode2.reddog.microsoft.com,16020,1479228656092, seqNum=1438608 (state=08000,code=101)
      • 再次查询。
      • 此时索引的状态已经 变为正在进行修复
  •                    修改phoenix 的执行超时(index.phoenix.querytimeout) ,后执行 再次 仍然出现错误

        6/11/16 11:40:40 WARN client.ScannerCallable: Ignore, probably already closed(region server 的日志对应的为超时)

          org.apache.hadoop.hbase.UnknownScannerException: org.apache.hadoop.hbase.UnknownScannerException: Name: 5, already closed?

          • at org.apache.hadoop.hbase.regionserver.HRegionServer.scan(HRegionServer.java:3186)

        at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:29994)
           at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2080)
           at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:108)
          at org.apache.hadoop.hbase.ipc.RpcExecutor.consumerLoop(RpcExecutor.java:114
        at org.apache.hadoop.hbase.ipc.RpcExecutor$1.run(RpcExecutor.java:94)
         at java.lang.Thread.run(Thread.java:74

      5修改超时时间
                        针对上面的错误,分析regionserve的日志,发现是由于一些超时时间导致,在每个regionserver 的节点上增加如下参数

        • <property>
          <name>hbase.client.scanner.timeout.period</name>
          <value>9200000</value>
          </property>
          <property>
          <name>hbase.rpc.timeout</name>
          <value>9200000</value>
          </property>
          <property>
          <name>hbase.regionserver.lease.period</name>
          <value>9200000</value>
          </property>
          <property>
          <name>phoenix.query.timeoutMs</name>
          <value>9200000</value>
          </property>

    • 目前 怀疑 应该在HDInsight 节点下的phoenix 目录下的hbase-site.xml 增加上面的几个参数,但是原生的HDP下phoenix的目录下没有这个hbase-site.xml。 有时间进一步验证....

    • 在Hdp 原生的集群执行时,也出现了超时,由于时微软的azure windows 平台上 不知HDP在window上是否有问题,同样的操作和参数配置 在测试的HDP liux集群出现了如下错误,需要进一步解决,(调整zk的时间)
  • 未完 待续

Phoenix -修复表索引的更多相关文章

  1. mysql之repair table 修复表札记

    REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE   tbl_name[,tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] REP ...

  2. myisamchk命令修复表操作

    myisamchk命令使用总结 myisamchk实用程序可以用来获得有关你的数据库表的统计信息或检查.修复.优化他们 1.常用于myisamchk的检查选项--information, -i打印所检 ...

  3. mysql 优化修复表

    OPTIMIZE TABLE `table_name` 优化表 MyISAM 引擎清理碎片 OPTIMIZE语法: OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABL ...

  4. mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)

    随着mysql的长期使用,可以修复表来优化,优化时减少磁盘占用空间.方便备份. REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化 ...

  5. mysql 修复表和优化表

    REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化表

  6. mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)

    REPAIR TABLE `table_name` 修复表 OPTIMIZE TABLE `table_name` 优化表 show create table tablename   表结构 REPA ...

  7. PostgreSQL查看表、表索引、视图、表结构

    -- 表索引select * from pg_indexes where tablename='person_wechat_label';select * from pg_statio_all_ind ...

  8. 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。

    题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出. 输入描述: 先输入键值对的个数然后输入成对的index和value值 ...

  9. (转)Mysql技术内幕InnoDB存储引擎-表&索引算法和锁

    表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC% ...

随机推荐

  1. 给自己~~微语&&歌单

    如果你很忙,除了你真的很重要以外,更可能的原因是:你很弱,你没有什么更好的事情去做,你生活太差不得不努力来弥补,或者你装作很忙,让自己显得很重要.——史蒂夫-乔布斯 时间并不会因为你的迷茫和迟疑而停留 ...

  2. [c++] stack的使用

         cout <<        ; i<; i++)          first.push(i);      cout <<                   ...

  3. React 学习笔记(学习地址汇总)

    好的博文地址:http://www.ruanyifeng.com/blog/2015/03/react.html 官网学习地址:http://facebook.github.io/react/docs ...

  4. while做法1.兔子生兔子 2.求100以内质数的和3.洗发水15元 牙膏5元 香皂2元 150元的算法

    1.兔子生兔子 2.求100以内质数的和 3.150块钱花完问题

  5. UVa 12166 修改天平

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  6. 【python】pandas & matplotlib 数据处理 绘制曲面图

    Python matplotlib模块,是扩展的MATLAB的一个绘图工具库,它可以绘制各种图形 建议安装 Anaconda后使用 ,集成了很多第三库,基本满足大家的需求,下载地址,对应选择pytho ...

  7. 刷题ING...

    我用codeVS刷题.. 努力准备!!

  8. FileSystem.DeleteDirectory遇到"无法删除 文件:无法读取源文件或磁盘"

    Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(fileFolder, UIOption.AllDialogs, RecycleOpti ...

  9. PHP+Mysql+jQuery实现地图区域数据统计-展示数据

    我们要在地图上有限的区块内展示更多的信息,更好的办法是通过地图交互来实现.本文将给大家讲解通过鼠标滑动到地图指定省份区域,在弹出的提示框中显示对应省份的数据信息.适用于数据统计和地图区块展示等场景. ...

  10. JavaScript中常见的字符串操作函数及用法

    JavaScript中常见的字符串操作函数及用法 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信 ...