gitweixin
  • 首页
  • 小程序代码
    • 资讯读书
    • 工具类
    • O2O
    • 地图定位
    • 社交
    • 行业软件
    • 电商类
    • 互联网类
    • 企业类
    • UI控件
  • 大数据开发
    • Hadoop
    • Spark
    • Hbase
    • Elasticsearch
    • Kafka
    • Flink
    • 数据仓库
    • 数据挖掘
    • flume
    • Kafka
    • Hive
    • shardingsphere
    • solr
  • 开发博客
    • Android
    • php
    • python
    • 运维
    • 技术架构
    • 数据库
  • 程序员网赚
  • bug清单
  • 量化投资
  • 在线查询工具
    • 去行号
    • 在线时间戳转换工具
    • 免费图片批量修改尺寸在线工具
    • SVG转JPG在线工具

Hbase创建二级索引

精品微信小程序开发门户,代码全部亲测可用

  • 首页   /  
  • 作者: east
  • ( 页面63 )
Hbase 3月 1,2021

Hbase创建二级索引

创建二级索引

功能简介

一般都通过调用org.apache.hadoop.hbase.hindex.client.HIndexAdmin中方法进行HBase二级索引的管理,该类中提供了创建索引的方法。

说明:

二级索引不支持修改,如果需要修改,请先删除旧的然后重新创建。

代码样例

以下代码片段在com.huawei.bigdata.hbase.examples包的“HBaseSample”类的createIndex方法中。

public void createIndex() {     
LOG.info("Entering createIndex.");
String indexName = "index_name";
// Create index instance
TableIndices tableIndices = new TableIndices();
IndexSpecification iSpec = new IndexSpecification(indexName); iSpec.addIndexColumn(new HColumnDescriptor("info"), "name", ValueType.String);//注[1]
tableIndices.addIndex(iSpec);
HIndexAdmin iAdmin = null;
Admin admin = null;
try {
admin = conn.getAdmin();
iAdmin = new IndexAdmin(conf);
// add index to the table
iAdmin.addIndices(tableName, tableIndices);
LOG.info("Create index successfully.");
} catch (IOException e) {
LOG.error("Create index failed " ,e);
} finally {
if (admin != null) {
try {
admin.close();
} catch (IOException e) {
LOG.error("Close admin failed " ,e);
}
}
if (iAdmin != null) {
try {
// Close IndexAdmin Object
iAdmin.close();
} catch (IOException e) {
LOG.error("Close admin failed " ,e);
}
}
}
LOG.info("Exiting createIndex.");
}

新创建的二级索引默认是不启用的,如果需要启用指定的二级索引,可以参考如下代码片段。该代码片段在com.huawei.bigdata.hbase.examples包的“HBaseSample”类的enableIndex方法中。

  public void enableIndex() {
    LOG.info("Entering createIndex.");

    // Name of the index to be enabled
    String indexName = "index_name";

    List<String> indexNameList = new ArrayList<String>();
    indexNameList.add(indexName);
    HIndexAdmin iAdmin = null;
    try {
      iAdmin = HIndexClient.newHIndexAdmin(conn.getAdmin());
      // Alternately, enable the specified indices
      iAdmin.enableIndices(tableName, indexNameList);
      System.out.println("Successfully enable indices " + indexNameList + " of the table " + tableName);
    } catch (IOException e) {
      System.out.println("Failed to enable indices " + indexNameList + " of the table " + tableName + "." + e);
    } finally {
      if (iAdmin != null) {
        try {
          iAdmin.close();
        } catch (IOException e) {
          LOG.error("Close admin failed ", e);
        }
      }
    }
  }

注意事项

注[1]:创建联合索引

HBase支持在多个字段上创建二级索引,例如在列name和age上。

HIndexSpecification iSpecUnite = new HIndexSpecification(indexName); 
 iSpecUnite.addIndexColumn(new HColumnDescriptor("info"), "name", ValueType.String); 
 iSpecUnite.addIndexColumn(new HColumnDescriptor("info"), "age", ValueType.String);

相关操作

使用命令创建索引表。

您还可以通过TableIndexer工具在已有用户表中创建索引。

说明:

<table_name>用户表必须存在。

hbase org.apache.hadoop.hbase.index.mapreduce.TableIndexer -Dindexspecs.to.add=<table_name> -Dtable.columns.index='IDX1=>cf1:[q1->datatype&length];cf2:[q1->datatype],[q2->datatype],[q3->datatype]#IDX2=>cf1:[q5->datatype&length]

“#”用于区分不同的索引,“;”用于区分不同的列族,“,”用于区分不同的列。

tablename.to.index:创建索引的用户表表名。

indexspecs.to.add:创建索引对应的用户表列。

其中命令中各参数的含义如下:

  • IDX1:索引名称
  • cf1:列族名称。
  • q1:列名。
  • datatype:数据类型。数据类型仅支持Integer、String、Double、Float、Long、Short、Byte、Char类型。
作者 east
Hbase 3月 1,2021

HBase支持全文索引

HBase支持全文索引

功能简介

通过org.apache.luna.client.LunaAdmin对象的createTable方法来创建表和索引,并指定表名、列族名、索引创建请求,mapping文件所在目录路径。也可通过addCollection往已有表中添加索引。查询时通过org.apache.luna.client.LunaAdmin对象的getTable方法来获取Table对象进行scan操作。

说明:

表的列名以及列族名不能包含特殊字符,可以由字母、数字以及下划线组成。

带有全文索引的HBase表限制:

1、不支持多实例;

2、不支持容灾备份恢复;

3、不支持删除行/列族操作;

4、Solr侧查询不支持强一致性;

代码样例片段

以下代码片段在com.huawei.bigdata.hbase.examples包的“LunaSample”类的testFullTextScan方法中。

  public static void testFullTextScan() throws Exception {
    /**
     * Create create request of Solr. Specify collection name, confset name,
     * number of shards, and number of replication factor.
     */
    Create create = new Create();
    create.setCollectionName(COLLECTION_NAME);
    create.setConfigName(CONFSET_NAME);
    create.setNumShards(NUM_OF_SHARDS);
    create.setReplicationFactor(NUM_OF_REPLICATIONFACTOR);
    /**
     * Create mapping. Specify index fields(mandatory) and non-index
     * fields(optional).
     */
    List<ColumnField> indexedFields = new ArrayList<ColumnField>();
    indexedFields.add(new ColumnField("name", "f:n"));
    indexedFields.add(new ColumnField("cat", "f:t"));
    indexedFields.add(new ColumnField("features", "f:d"));
    Mapping mapping = new Mapping(indexedFields);
    /**
     * Create table descriptor of HBase.
     */
    HTableDescriptor desc = new HTableDescriptor(HBASE_TABLE);
    desc.addFamily(new HColumnDescriptor(TABLE_FAMILY));
    /**
     * Create table and collection at the same time.
     */
    LunaAdmin admin = null;
    try {
      admin = new AdminSingleton().getAdmin();
      admin.deleteTable(HBASE_TABLE);
      if (!admin.tableExists(HBASE_TABLE)) {
        admin.createTable(desc, Bytes.toByteArrays(new String[] { "0", "1", "2", "3", "4" }),
            create, mapping);
      }
      /**
       * Put data.
       */
      Table table = admin.getTable(HBASE_TABLE);
      int i = 0;
      while (i < 5) {
        byte[] row = Bytes.toBytes(i + "+sohrowkey");
        Put put = new Put(row);
        put.addColumn(TABLE_FAMILY, Bytes.toBytes("n"), Bytes.toBytes("ZhangSan" + i));
        put.addColumn(TABLE_FAMILY, Bytes.toBytes("t"), Bytes.toBytes("CO" + i));
        put.addColumn(TABLE_FAMILY, Bytes.toBytes("d"), Bytes.toBytes("Male, Leader of M.O" + i));
        table.put(put);
        i++;
      }

      /**
       * Scan table.
       */
      Scan scan = new Scan();
      SolrQuery query = new SolrQuery();
      query.setQuery("name:ZhangSan1 AND cat:CO1");
      Filter filter = new FullTextFilter(query, COLLECTION_NAME);
      scan.setFilter(filter);
      ResultScanner scanner = table.getScanner(scan);
      LOG.info("-----------------records----------------");
      for (Result r = scanner.next(); r != null; r = scanner.next()) {
        for (Cell cell : r.rawCells()) {
          LOG.info(Bytes.toString(CellUtil.cloneRow(cell)) + ":"
              + Bytes.toString(CellUtil.cloneFamily(cell)) + ","
              + Bytes.toString(CellUtil.cloneQualifier(cell)) + ","
              + Bytes.toString(CellUtil.cloneValue(cell)));
        }
      }
      LOG.info("-------------------end------------------");
      /**
       * Delete collection.
       */
      admin.deleteCollection(HBASE_TABLE, COLLECTION_NAME);

      /**
       * Delete table.
       */
      admin.deleteTable(HBASE_TABLE);
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      /**
       * When everything done, close LunaAdmin.
       */
      admin.close();
    }
  }

解释

(1)创建索引请求

(2)创建表描述符

(3)获取LunaAdmin对象,LunaAdmin提供了建表和索引、添加索引、检查表是否存在、检查索引是否存在、删除索引和删除表等功能。

(4)调用LunaAdmin的建表方法。

(5)往表中插入数据。

(6)构造全文索引条件,设置FullTextFilter,进行查询。

(7)删除索引。

(8)删除表。

(9)关闭admin资源。

注意事项

  • 创建表和索引都必须不存在。
  • 必须使用LunaAdmin获取Table对象进行scan操作。
作者 east
bug清单 2月 28,2021

ZooKeeper客户端无法使用

ZooKeeper客户端无法使用

现象描述

当往ZooKeeper节点写入超过4MB数据的文件时,ZooKeeper客户端无法使用,出现如下信息。

2014-11-07 15:23:34,237 | WARN | NIOServerCxn.Factory:/10.18.51.157:24002 | 
Exception causing close of session 0xe4985ef3128000d due to java.io.IOException: Len error 1080037 | 
org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:362)
2014-11-07 15:23:34,238 | INFO | NIOServerCxn.Factory:/10.18.51.157:24002 | 
Closed socket connection for client /10.18.51.156:44987 which had sessionid 0xe4985ef3128000d | 
org.apache.zookeeper.server.NIOServerCnxn.closeSock(NIOServerCnxn.java:1007)

可能原因

ZooKeeper的数据大小是由“jute.maxbuffer”参数的值决定的。如果数据超过配置的值,服务端会拒绝访问并出现以上异常。该参数的默认值为4MB,且该参数不能修改。在集群的服务端和客户端必须保持这两个参数的一致性。

定位思路

无。

处理步骤

建议用户不要去修改“jute.maxbuffer”参数的值,在ZooKeeper节点写入数据时,确保单个文件的大小不超过4MB。为确保ZooKeeper的性能,建议不要将大量的数据写入到ZooKeeper节点中。

作者 east
bug清单 2月 28,2021

NodeManager出现DBException导致无法启动

NodeManager出现DBException导致无法启动

现象描述

NodeManager无法启动。NodeManager日志中显示如下错误信息。

org.fusesource.leveldbjni.internal.NativeDB$DBException: Corruption: 1 missing files;

可能原因

当“yarn.nodemanager.recovery.enabled”=“true”时,并且由于磁盘空间不足或文件句柄用尽,使“levelDB”作为NodeManager恢复被损坏时,会发生此异常情况。

处理步骤

  1. 删除在“yarn-site.xml”中“{yarn.nodemanager.recovery.dir}/yarn-nm-state”所指定的文件夹。 其产生结果如下:
    • 对于已经在这个节点上完成的应用程序,其日志聚合可能会受影响。您需要手动删除已完成应用残留的文件或文件夹。进入{yarn.nodemanager.log-dirs}参数指定的路径,删除应用ID对应的文件夹。
    • 在此节点上已本地化的临时文件和container临时文件不会被清理。您需要手动删除已完成应用残留的文件和文件夹。进入{yarn.nodemanager.local-dirs}参数指定的路径,删除应用ID对应的文件夹。
    • 由于Container-tokens在NodeManager停用之后没有刷新,当前container可能会失败。
  2. 启动NodeManager。
作者 east
bug清单 2月 28,2021

Hive 执行动态插入分区时,在MapReduce日志中报“java.lang.OutOfMemoryError: GC overhead limit exceeded”错误

执行动态插入分区时,在MapReduce日志中报“java.lang.OutOfMemoryError: GC overhead limit exceeded”错误

现象描述

在HiveServer服务正常的情况下,执行动态插入分区时,在MapReduce日志中报“java.lang.OutOfMemoryError: GC overhead limit exceeded”错误。

可能原因

产生OOM的原因是单个任务处理的分区数过多,需要针对具体场景,减少单个task处理的分区数。

定位思路

参照如下样例进行操作。

样例建表语句如下:

create table test(id int )partitioned by (dt int);

create table test1(id int, dt int);

正常的动态插入分区语句为:

insert overwrite table test partition (dt) select id, dt from test;

处理步骤

  1. 由于dt是分区字段,减少单个task处理分区数的办法是,将分区字段distribute到不同的task来处理。 修改后的语句: insert overwrite table test partition (dt) select id, dt from test1 distribute by dt;
  2. 当distribute by的分区字段存在倾斜时,比如值为NULL的占了很大部分,那么还可以将其打散处理。 存在倾斜字段为NULL时的优化后语句: insert overwrite table test partition (dt) select id, dt from test1 distribute by nvl(dt,round(rand()*50)); 说明: nvl函数是一个将null转换为需要的值的hive内置udf。内置udf的使用,可参考https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF。其中rand返回一个0-1之间的随机数,乘以一个常数50(也可以是其他数字,根据自己任务的并发度合理选取,以能在合理的时间处理完为宜)。 然后通过round函数取整,就能够将值为NULL的分区,分散到多个不同的task中处理。
作者 east
bug清单 2月 28,2021

Hive TEXTFILE类型文件ARC4压缩Select时乱码

TEXTFILE类型文件ARC4压缩Select时乱码

现象描述

Hive查询结果表做压缩存储(ARC4),对结果表做select * 查询时返回结果为乱码。

可能原因

TEXTFILE文件非块文件,使用ARC4按条加密后,读取文件会异常,无法解析内容,导致乱码。

定位思路

  1. 设置压缩类:org.apache.hadoop.io.encryption.arc4.ARC4BlockCodec,按块对TEXTFILE类型文件加密。
  2. 正常设置耗时1分钟以内。

处理步骤

  1. 查询出乱码以后,在beeline客户端执行以下命令。 set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.encryption.arc4.ARC4BlockCodec; set hive.exec.compress.output=true; 输入admin用户的密码完成登录。
  2. 重新导入数据到结果表。 insert overwrite table tbl_result select * from tbl_source;
  3. 执行select命令检查内容是否为乱码。 select * from tbl_result; 没有乱码证明问题得到解决。
作者 east
bug清单 2月 28,2021

Hive客户端连接失败,提示“Read timed out”

客户端连接失败,提示“Read timed out”

现象描述

安全版本的集群中,HiveServer服务正常的情况下,使用Shell客户端或二次开发工具登录HiveServer失败,日志异常提“Read timed out”示关键字,具体信息如下:

org.apache.hadoop.hive.ha.client.HAConnectMonitor.<init>(HAConnectMonitor.java:54) 
 at org.apache.hadoop.hive.ha.client.HATTransport.open(HATTransport.java:158) 
 at org.apache.hadoop.hive.jdbc.ha.HAHiveConnection.<init>(HAHiveConnection.java:60) 
 ... 6 more 
 Caused by: java.net.SocketTimeoutException: Read timed out
 at java.net.SocketInputStream.socketRead0(Native Method) 
 at java.net.SocketInputStream.read(SocketInputStream.java:152) 
 at java.net.SocketInputStream.read(SocketInputStream.java:122) 
 at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:127)

可能原因

网络原因导致Hive客户端连接HiveServer时,Socket超时,连接失败。

定位思路

  1. Hive客户端连接HiveServer时,是建立Socket连接,当网络丢包时,就有可能导致Socket超时,使Hive客户端连接HiveServer失败。
  2. 执行ping命令检查客户端到HiveServer所在节点的网络连通性与稳定性。
  3. 当网络经过排查和修复达到稳定后,正常连接耗时在1分钟以内。

处理步骤

  1. 在客户端所在机器上,执行ping HiveServer所在节点IP地址命令检查Hive客户端与集群网络质量。 如果执行命令后,如果网络不通或者延迟较大,证明网络状况较差。 请联系网络管理员排查网络问题,以保证满足业务使用。
  2. 增加网络闪断的保护,使用Hive客户端的应用层,增加连接失败重试机
作者 east
bug清单 2月 28,2021

由于datanodeUuid值不一致导致DataNode数据目录出现Failure

由于datanodeUuid值不一致导致DataNode数据目录出现Failure

现象描述

在“dfs.datanode.data.dir”中添加新目录后,发现老的目录出现failure。

由于datanodeUuid值不一致导致DataNode数据目录出现Failure

可能原因

新老目录下“VERSION”文件里的“datanodeUuid”值不一致。

定位思路

查看DataNode的日志文件,检查是否有InconsistentFSStateException异常信息,是否显示“datanodeUuid”不一致。

heartbeating to 9-96-101-251/172.18.0.111:25000 | org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /export4/BigData/datanode/dn3 is in an inconsistent state: 
Root /export4/BigData/datanode/dn3: DatanodeUuid=2a8c2266-7d3f-428c-b47f-6c7e2500bdc5, does not match 3d61ca33-c3ba-4c73-998a-7667c747545d from other StorageDirectory. | DataStorage.java:375

处理步骤

  1. 进入“新目录/current/”,查询“VERSION”文件中的“datanodeUuid”值。 #Tue Jul 05 22:23:04 CST 2016 storageID=DS-7c410c98-29bc-49de-b3dd-87cd48d4f7d3 clusterID=myhacluster cTime=0 datanodeUuid=3d61ca33-c3ba-4c73-998a-7667c747545d storageType=DATA_NODE layoutVersion=-56
  2. 进入“老目录/current/”,将“VERSION”文件中的“datanodeUuid”修改成1查询到的“datanodeUuid”值。
  3. 重启DataNode。

参考信息

DataNode启动时,会从数据目录中的“VERSION”文件中读取“datanodeUuid”值,并将该值写入到系统的DataStorage对象中。每个DataNode对应一个“datanodeUuid”值,即同一个DataNode上的所有目录使用同一个“datanodeUuid”值。

该问题中,删除老目录,添加新目录时,“VERSION”文件并没有被拷贝到新目录中,重启DataNode后,新目录中的“VERSION”文件由format操作生成,并自动生成了一个新的“datanodeUuid”值。

将老目录加回到“dfs.datanode.data.dir”中,并且位于新目录之前,重启DataNode后,DataNode会先从老目录中加载“VERSION”文件,读取其中的“datanodeUuid”值,并写入到系统的DataStorage对象中。再从新目录中的“VERSION”文件中读取“datanodeUuid”值并与系统的DataStorage对象中的“datanodeUuid”值作对比时,由于新目录中的“datanodeUuid”值是后来重新生成的,与老目录中的不同,所以系统会抛出“datanodeUuid”不匹配的InconsistentFSStateException异常。

作者 east
bug清单 2月 28,2021

Datanode报InvalidProtocolBufferException异常

Datanode报InvalidProtocolBufferException异常

现象描述

DataNode无法发送block报告给NameNode。以下为DataNode日志信息:

java.lang.IllegalStateException: com.google.protobuf.InvalidProtocolBufferException: 
Protocol message was too large.  May be malicious.  Use CodedInputStream.setSizeLimit() 
to increase the size limit exception

可能原因

此类故障发生在DataNode向NameNode发送block报告时。HDFS是专门为大文件设计的,所以为了防止其用于小文件上,限制了每个卷的block报告的体积。

定位思路

以防这类异常发生,用户可指定多种“dfs.datanode.data.dir”,在多个卷内将block分散开来,block报告消息的体积将会变小。

在运行的环境中遇到此类异常时,Hadoop目前无法做到自动完成上述修复。

处理步骤

  1. 关闭相关的DataNode。
  2. 使用mv命令将block副本和meta对从“dfs.datanode.data.dir”目录移动到新目录下,同时确保块在磁盘间移动时subdir目录的结构始终完全保持不变。 例如,如果block副本和meta对是在“/data/1/dfs/dn/current/BP-1788246909-10.10.1.202-1412278461680/current/finalized/subdir0/subdir1/”目录下,若想要将其移动到“/data/5/disk”下,必须移到相同的子目录结构,即“/data/5/dfs/dn/current/BP-1788246909-10.10.1.202-1412278461680/current/finalized/subdir0/subdir1/”。 如果目录结构发生改变,移动后的DataNode将不能定位副本。
  3. 重启DataNode。
作者 east
bug清单 2月 28,2021

资源异常导致HDFS进入安全模式

资源异常导致HDFS进入安全模式

现象描述

在性能环境上验证性能指标时HDFS进入安全模式。 NameNode日志中出现下列信息:

WARN org.apache.hadoop.hdfs.server.namenode.NameNodeResourceChecker: Space available on volume 'null' is 0, 
WARN org.apache.hadoop.hdfs.server.namenode.FSNamesystem: NameNode low on available disk space. Entering safe mode.

可能原因

  1. 参数“dfs.namenode.name.dir”配置目录的磁盘空间不足。
  2. 底层网络文件系统出现了不可用的情况导致的,如网络不稳定等。

定位思路

  1. 查看参数“dfs.namenode.name.dir”配置目录的磁盘空间是否足够。
  2. 查看底层网络文件系统是否异常,如网络不稳定等。
  3. 查看NameNode日志中是否出现类似“NameNode low on available disk space. Entering safe mode”的日志。

处理步骤

  1. 查看参数“dfs.namenode.name.dir”配置目录的磁盘空间是否足够。
  2. 修复底层网络文件系统之后(网络稳定之后),手动退出安全模式。执行hdfs dfsadmin -safemode leave命令手动退出安全模式。
作者 east
bug清单 2月 28,2021

Hbase由于网络故障引起的InvalidToken异常

由于网络故障引起的InvalidToken异常

现象描述

安全模式下,在执行Mapreduce或者Spark等程序时,可能出现如下异常导致的任务执行失败:

2015-12-07 12:46:17,607 WARN [htable-pool1-t1] 
org.apache.hadoop.hbase.ipc.AbstractRpcClient: Exception encountered 
while connecting to the server :
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken): Unknown master key for token (id=7)

可能原因

由于网络故障导致客户端和服务端的token不一致。

定位思路

无。

处理步骤

  1. 重新启动发生故障的RegionServer和客户端程序。
作者 east
bug清单 2月 28,2021

在hbck命令输出中出现“Found lingering reference file”

在hbck命令输出中出现“Found lingering reference file”

现象描述

残留的引用文件指的是连接hfile的引用文件,这个hfile在HDFS中是不存在。

Hback工具报出以下错误:

hbase/bin> hbase hbck
2016-03-08 17:57:55,858 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
INFO: Watching file:/home/pankaj/v1r2cxx/hbase/hbase/conf/log4j.properties for changes with interval : 60000
HBaseFsck command line options:

2016-03-08 17:57:58,179 INFO  [main] util.HBaseFsck: Checking and fixing region consistency
ERROR: Region { meta => null, hdfs => hdfs://10.10.106.212:8020/hbase/data/default/t1/7fbfdb516dff6013009143c4ba22cb89, deployed => , replicaId => 0 } 
on HDFS, but not listed in hbase:meta or deployed on any region server
2016-03-08 17:57:58,218 INFO  [main] util.HBaseFsck: Computing mapping of all store files

2016-03-08 17:57:58,253 INFO  [main] util.HBaseFsck: Validating mapping using HDFS state
ERROR: Found lingering reference file
hdfs://10.10.106.212:8020/hbase/data/default/t1/7fbfdb516dff6013009143c4ba22cb89/cf1/64d2e118ab1347a59aeb90f206853dc5.8fcda14355e599b20e8ea7f66f86b9d0
Summary:
Table hbase:meta is okay.
    Number of regions: 1
    Deployed on:  host-10-10-106-212,16020,1457430545905
Table hbase:acl is okay.
    Number of regions: 1
    Deployed on:  host-10-10-106-212,16020,1457430545905
Table t1 is okay.
    Number of regions: 2
    Deployed on:  host-10-10-106-212,16020,1457430545905
Table hbase:namespace is okay.
    Number of regions: 1
    Deployed on:  host-10-10-106-212,16020,1457430545905
2 inconsistencies detected.
Status: INCONSISTENT
2016-03-08 17:57:58,418 INFO  [main] client.ConnectionManager$HConnectionImplementation: Closing master protocol: MasterService
2016-03-08 17:57:58,418 INFO  [main] client.ConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x10101ea9abf0181

可能原因

在一个故障场景,子region A在table目录下已经成功创建,但是在创建子region B的过程中region server出故障了。因此split region失败了并且在table目录的文件系统留下一个孤立的子目录。

当打开region,只清理”.split”目录,而不是孤立的子regions,这些孤立的子regions在先前失败的split操作过程中可能被移到table目录。因此将来,如果父region split成功,那么之前失败的子region A的引用hfile将会无效,hback将会报出以上错误。

定位思路

无。

处理步骤

  1. Hback工具提供命令-fixReferenceFiles来使这样残留的引用文件保留在其他位置。由于这会引起其他的不一致,请使用hbck -repair命令来解决这些不一致。 hbase hbck -repair <tableName>
  2. 运行hbck命令来复查-repair命令是否修复了所有的不一致。 hbase hbck 如果hback命令输出结果不一致,请重复1。

参考信息

Hbck命令有很多其他选项,请运行以下命令来获得更详细的用法。

hbase hbck -help

作者 east

上一 1 … 62 63 64 … 93 下一个

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。回复”chatgpt”获取免注册可用chatgpt。回复“大数据”获取多本大数据电子书

标签

AIGC AI创作 bert chatgpt github GPT-3 gpt3 GTP-3 hive mysql O2O tensorflow UI控件 不含后台 交流 共享经济 出行 图像 地图定位 外卖 多媒体 娱乐 小程序 布局 带后台完整项目 开源项目 搜索 支付 效率 教育 日历 机器学习 深度学习 物流 用户系统 电商 画图 画布(canvas) 社交 签到 联网 读书 资讯 阅读 预订

官方QQ群

小程序开发群:74052405

大数据开发群: 952493060

近期文章

  • 如何在Chrome中设置启动时自动打开多个默认网页
  • spark内存溢出怎样区分是软件还是代码原因
  • MQTT完全解析和实践
  • 解决运行Selenium报错:self.driver = webdriver.Chrome(service=service) TypeError: __init__() got an unexpected keyword argument ‘service’
  • python 3.6使用mysql-connector-python报错:SyntaxError: future feature annotations is not defined
  • 详解Python当中的pip常用命令
  • AUTOSAR如何在多个供应商交付的配置中避免ARXML不兼容?
  • C++thread pool(线程池)设计应关注哪些扩展性问题?
  • 各类MCAL(Microcontroller Abstraction Layer)如何与AUTOSAR工具链解耦?
  • 如何设计AUTOSAR中的“域控制器”以支持未来扩展?

文章归档

  • 2025年8月
  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2023年11月
  • 2023年10月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年1月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年7月
  • 2018年6月

分类目录

  • Android (73)
  • bug清单 (79)
  • C++ (34)
  • Fuchsia (15)
  • php (4)
  • python (45)
  • sklearn (1)
  • 云计算 (20)
  • 人工智能 (61)
    • chatgpt (21)
      • 提示词 (6)
    • Keras (1)
    • Tensorflow (3)
    • 大模型 (1)
    • 智能体 (4)
    • 深度学习 (14)
  • 储能 (44)
  • 前端 (5)
  • 大数据开发 (493)
    • CDH (6)
    • datax (4)
    • doris (31)
    • Elasticsearch (15)
    • Flink (79)
    • flume (7)
    • Hadoop (19)
    • Hbase (23)
    • Hive (41)
    • Impala (2)
    • Java (71)
    • Kafka (10)
    • neo4j (5)
    • shardingsphere (6)
    • solr (5)
    • Spark (100)
    • spring (11)
    • 数据仓库 (9)
    • 数据挖掘 (7)
    • 海豚调度器 (10)
    • 运维 (35)
      • Docker (3)
  • 小游戏代码 (1)
  • 小程序代码 (139)
    • O2O (16)
    • UI控件 (5)
    • 互联网类 (23)
    • 企业类 (6)
    • 地图定位 (9)
    • 多媒体 (6)
    • 工具类 (25)
    • 电商类 (22)
    • 社交 (7)
    • 行业软件 (7)
    • 资讯读书 (11)
  • 嵌入式 (71)
    • autosar (63)
    • RTOS (1)
    • 总线 (1)
  • 开发博客 (16)
    • Harmony (9)
  • 技术架构 (6)
  • 数据库 (32)
    • mongodb (1)
    • mysql (13)
    • pgsql (2)
    • redis (1)
    • tdengine (4)
  • 未分类 (7)
  • 程序员网赚 (20)
    • 广告联盟 (3)
    • 私域流量 (5)
    • 自媒体 (5)
  • 量化投资 (4)
  • 面试 (14)

功能

  • 登录
  • 文章RSS
  • 评论RSS
  • WordPress.org

All Rights Reserved by Gitweixin.本站收集网友上传代码, 如有侵犯版权,请发邮件联系yiyuyos@gmail.com删除.