• 索引的修复可以通过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. python 后台爆破工具

    sys:使用sys模块获得脚本的参数 queue模块,创建一个“队列”对象 time 模块     Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). fin ...

  2. certbot+nginx (仅用作个人纪录)

    https://certbot.eff.org/#centos6-nginx https://github.com/kshcherban/acme-nginx server { listen 80; ...

  3. 传统开发模型vs敏捷开发模型——过程模型的变革

    一.概念框架 在了解一个新概念的时候,最好的方法就是把它插入到原有的概念体系中.在不仅有助于对概念的记忆,更利于深刻地认识概念的本质.精髓.下图说明了"敏捷开发"在软件工程理论体系 ...

  4. Eplan简单教程

    鉴于AUTOCAD画电路图比较繁琐而且手动添加关联参考错误率较高,而EPLAN画电路图确实效率要高许多,也更规范.过年正好有点时间,把我这段时间学EPLAN的一些经验总结了一下,有兴趣可以看看,也省得 ...

  5. windows server 2012 FTP SMB 文件夹权限继承

    被坑了..win默认的权限继承,有继承就没有smb目录继承,有smb目录继承 父级文件夹的权限就删不掉.. 换ftp轻松愉快...

  6. spring加载bean实例化顺序

    问题来源: 有一个bean为 A,一个bean为B.想要A在容器实例化的时候的一个属性name赋值为B的一个方法funB的返回值. 如果只是在A里单纯的写着: private B b;private ...

  7. ubuntu包管理

    查看某个文件属于哪个包dpkg -S add-apt-repository 包名software-properties-common命令名/usr/bin/add-apt-repository/usr ...

  8. 阿里云 crp kelude远程部署tomcat8 重启tomcat脚本

    部署包路径:/usr/local/tomcat/webapps 应用服务启动脚本路径:/usr/local/tomcat/bin/restart.sh 部署授权帐号:tomcat restart.sh ...

  9. java获得某个月的天数

    /*** 方法一*/ String strDate = "2012-02"; SimpleDateFormat format = new SimpleDateFormat(&quo ...

  10. CenOS 7 安装wordpress

    1:Centos安装 php和html yum install httpd -y yum install php -y 2:将 wordpress 拖到目录  /var/www/html 3:浏览器访 ...