kylin集群负载均衡(kylin3,hbaseRIF问题)

hbase历险记

目录

hbase历险记

寻找问题

分析原因

解决方案

方案1(资源问题、失败)

方案2(成功)


寻找问题

不知道你是不是有这样的疑惑。我kylin是个单机,我使用的hbase是个集群,但内存全在某一台机器上了。其实,这里kylin是单机还是集群都无所谓的,但hbase作为存储,为什么集群内存占用到了一台。

我就在hbase shell中使用了hbase负载均衡的命令

复制代码
balance_switch true

过了一会发现并没有用。

我就用knox做了网关,把hbase的页面信息代理了出来,进去浏览了一圈发现了

通过网上的寻找,就是它。

分析原因

通过反复查看寻找到了那个region的蛛丝马迹

这里面就发现了,这个table记录了相当多的phoenix信息,而phoenix,是我以前用于测试同步数据的,现在早已没用了,而图中的那个1,就是目前仅存在的问题,进去看看。

通过进入这个表,成功发现了这就是一个region,无法完成regionServer的分配,一直尝试造成的。

解决方案

通过查阅资料,发现如下两种。

  • 手动分配
  • 主动删除

这里提前解释一下,为什么我两种方案都尝试了。虽然我在前面已经发现这个region现在就是个垃圾,但我抱着宁烂误缺的态度想试一下。

方案1(资源问题、失败)

进入hbase的客户端,我执行了。

复制代码
assign '3696b0faae0b67cdfe1627afd107cb2e'

但过了一会,发现了问题,我的服务器资源疯狂飙升,我想赶快停了,这下麻烦了,磁盘越来越多。

后面通过查询,发现了我没对WAL 文件做限制,他最终会导致我磁盘全部占满,而所有服务都无法运行。

所以我想不尝试了,直接迅速快照、关闭hbase集群、删除/hbase/MasterProcWALs无用文件,删除回收站文件、添加配置、重启。

限制WAL文件配置如下,添加到hbase-site.xml中:

复制代码
<!-- 限制 WAL 文件的最大大小,以防止过大的 MasterProcWALs 文件 -->
<property>
     <name>hbase.regionserver.hlog.maxfilesize</name>
     <value>1073741824</value> <!-- 1 GB,根据需要进行调整 -->
</property>
<property>
    <name>hbase.regionserver.hlog.roll.multiplier</name>
    <value>0.95</value>
</property>
<property>
    <name>hbase.master.logcleaner.ttl</name>
    <value>600</value> <!-- 10分钟,根据需要进行调整 -->
</property>

还好重启后没有异常。

方案2(成功)

上面不行,那我就直接删除元数据了,执行删除命令,

复制代码
deleteall 'hbase:meta','SYSTEM:LOG,\x08\x00\x00\x00,1615171260407.3696b0faae0b67cdfe1627afd107cb2e.'

发现了 0 row受影响。

我突然反映过来无法识别\x,或者转义成了其他字符。然后我用匹配查询试一下,

发现了我还没办法直接删了。果断使用java程序来删除。

代码如下:

java 复制代码
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Table;
import org.apache.hadoop.hbase.util.Bytes;

/**
 * @author 
 * @version 1.0
 * @date 2024/1/16 14:13
 * @desc :
 */
public class DeleteFromMetaTable {
    public static void main(String[] args) throws Exception {
        Configuration config = HBaseConfiguration.create();
        try (Connection connection = ConnectionFactory.createConnection(config);
             Table metaTable = connection.getTable(TableName.valueOf("hbase:meta"))) {

            // Specify the row key you want to delete
            byte[] rowKey = Bytes.toBytes("SYSTEM:LOG,\u0008\u0000\u0000\u0000,1615171260407.3696b0faae0b67cdfe1627afd107cb2e.");

            // Create Delete object with the specified row key
            Delete delete = new Delete(rowKey);

            // Execute the delete operation
            metaTable.delete(delete);

            System.out.println("Delete operation completed.");
        }
    }
}

注意我已经将\x替换。

打包,上传,运行,出现了:

java 复制代码
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration

接着我又修改了hadoop-env.sh文件,添加了

java 复制代码
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/app/software/hbase-2.0.0/lib/*

这个需要根据自己的hbase相关jar包决定。分发集群(无需重启)

再运行java程序,成功。

接下来关闭hbase集群,删除hdfs上/hbase/MasterProcWALs的文件。重启集群。

进入到hbase页面查看(需等一会),发现,异常的region已经不在。

接下来是负载均衡问题,一般是自动开启的。页面查看

手动触发:

复制代码
hbase(main):001:0> balance_switch true

好一次惊心动魄的冒险。

相关推荐
司小豆20 分钟前
第四课:Cordis 如何把插件组织成一个可运行的 Agent
大数据·人工智能
用户3610588626121 小时前
Flink基础之有界与无界流详解:批流一体的底层逻辑
大数据·flink
DPS普轩·真空灌胶机专家1 小时前
普轩科技亮相第四届西安军工展 | 真空灌胶专家,展位 2-003
大数据·人工智能·科技·机器人·pcb工艺
崖边看雾1 小时前
MySQL——SQL 经典练习题:学生选课成绩查询(附详细注释)
大数据·数据库·sql·mysql
baopixiaoz2 小时前
BeeQuant × BeeAgent:AI驱动智能交易
大数据·人工智能·python·区块链
浔溺2 小时前
al+大数据每日学习笔记33
大数据·笔记·学习
hfywmsj2 小时前
广州餐饮铺位招租的选址架构:流量入口与成本函数分析
java·大数据·jvm·广州餐饮铺位招租
ACP广源盛139246256732 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#IX6024 PCIe2.0 交换芯片在轻量化 AI 服务中的机会与应用场景
大数据·数据库·人工智能·嵌入式硬件·macos·开源
my05922 小时前
跳出单一信息工具局限:奥米豆构建认知与心智并行的学习范式
大数据·人工智能·python·学习
qq_425516183 小时前
一句话生成PPT的录音APP:会议材料生成能力对比
大数据·人工智能·powerpoint