为了更快的定位您的问题,请提供以下信息,谢谢
【详述】存算分离集群下无法删除HDFS文件
【背景】执行drop table xx froce
【业务影响】HDFS文件无法以被清理
【是否存算分离】存算分离
【StarRocks版本】V3.3.0版本
【集群规模】1fe(1 follower)+1cn(fe与cn混部)
CDH版本(开启了kerberos认证):
CDH 6.3.2
Apache Hadoop 3.0.0
【机器信息】CPU虚拟核/内存/网卡,例如:48C/64G/万兆
【联系方式】
【附件】
-
部署细节
1.1 设置hadoop_env.sh HADOOP_USER_NAME=hdfs
1.2 同步了hadoop的配置文件hdfs-site.xml, core-site.xml文件到be,fe conf目录下
1.3 同步kerberos相关文件到fe cn机器上
1.4 同步了hdfs集群的host到fe cn机器上
1.4 fe.conf 添加JAVA启动参数 -Djava.security.krb5.conf=/etc/krb5.conf -Dhadoop.kerberos.keytab.login.autorenewal.enabled=true
1.5 cn.conf 添加JAVA启动参数 -Djava.security.krb5.conf=/etc/krb5.conf -Dhadoop.kerberos.keytab.login.autorenewal.enabled=true
1.6 配置环境变量:
export KRB5KEYTAB=/app/krb5/hdfs.keytab
export KRB5PRINCIPAL=hdfs@xxxxx.COM.CN
1.7 配置定时任务刷新kerberos ticket
0 15 * * * kinit -c /app/krb5/ticket/krb5cc_sr_001 -kt /app/krb5/hdfs.keytab hdfs@xxxxx.COM.CN -
存算分离集群部署后,创建默认的STORAGE VOLUME
CREATE STORAGE VOLUME def_volume
TYPE = HDFS
LOCATIONS = (“hdfs://nameservice1/user/starrocks/sr_001”)
PROPERTIES(
“dfs.nameservices” = “nameservice1”,
“dfs.ha.namenodes.nameservice1” = “namenode139,namenode315”,
“dfs.namenode.rpc-address.nameservice1.namenode139” = “hdfs27:8020”,
“dfs.namenode.rpc-address.nameservice1.namenode315” = “hdfs28:8020”,
“dfs.namenode.http-address.nameservice1.namenode139” = “hdfs27:9870”,
“dfs.namenode.http-address.nameservice1.namenode315” = “hdfs28:9870”,
“dfs.client.failover.proxy.provider.nameservice1” = “org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider”,
“hadoop.security.authentication” = “kerberos”,
“hadoop.security.kerberos.ticket.cache.path” = “/app/krb5/ticket/krb5cc_sr_001”
); -
正常创建数据库,表,做数据测试
CREATE TABLE IF NOT EXISTS p_orders10
(
create_time DATE NOT NULL COMMENT “create time of an order”,
order_id BIGINT NOT NULL COMMENT “id of an order”,
order_state string COMMENT “state of an order”,
total_price BIGINT COMMENT “price of an order”
) UNIQUE KEY(create_time, order_id)
PARTITION BY date_trunc(‘day’, create_time)
DISTRIBUTED BY HASH(order_id) BUCKETS 2
PROPERTIES (
“datacache.enable” = “true”,
“datacache.partition_duration” = “1 MONTH”,
“enable_async_write_back” = “false”
);
insert into p_orders10 values (date’2024-04-08’, 123456, ‘orders’, 100);
insert into p_orders10 values (date’2024-04-08’, 1234567, ‘orders’, 100);
到这里都是可以正常创建表,插入数据,也确认了hdfs集群也是有正常的元数据,数据文件生成的
- 测试正常的表,库删除
drop table xx froce
到这里删除库,表也是正常的,对应hdfs文件系统上的文件和元数据信息也被清理了
- 过了1到2天,再执行删除表,库的操作
这里发现删除表和库的时候,cn.out有大量kerberos相关的报错信息,HDFS文件系统上的数据也没有被清理
备注:如果重启了CN,再执行以上操作, 又是正常的,目前怀疑是kerberos ticket过期后,就没有办法再操作hdfs文件系统上的数据了