【问题标题】:redshift leader node using up 100% of diskredshift 领导节点使用了 100% 的磁盘
【发布时间】:2018-11-09 20:08:09
【问题描述】:

我们有一个 50 节点的 redshift 集群,我们会定期运行 Vacuum。目前我们正在运行一个管道,将一些数据移动到 S3 并从 redshift 中删除。

经过大约 2 周的处理。我们在 49 个节点(领导者除外)上的磁盘使用率从 95% 下降到 80%。但是leader的磁盘使用率上升了,现在是100%。

我尝试重新启动集群以查看是否有临时文件占用了空间。但这没有帮助。

此时任何建议都会有很大帮助。

谢谢!

【问题讨论】:

  • 这似乎是一个很好的问题要问AWS Support。您可以寻求建议、提出问题并寻求专家建议。成本可能低于您迄今为止在此问题上花费的时间。
  • @JohnRotenstein 我同意你的看法。但是我该怎么说...,这不是我的选择。
  • 有什么在运行吗?
  • 嗨@bhavin,你找到这个的根本原因了吗?我也面临同样的问题,但没有任何线索。

标签: database amazon-redshift pipeline leader


【解决方案1】:

您可能有一些“倾斜”的表,这意味着表在节点上分布不均匀,以下 SQL 将为您提供表列表并基于 skew 列,您可能需要重新分配表。

select trim(pgn.nspname) as schema, 
trim(a.name) as table, id as tableid, 
decode(pgc.reldiststyle,0, 'even',1,det.distkey ,8,'all') as distkey, dist_ratio.ratio::decimal(10,4) as skew, 
det.head_sort as "sortkey", 
det.n_sortkeys as "#sks", b.mbytes,  
decode(b.mbytes,0,0,((b.mbytes/part.total::decimal)*100)::decimal(5,2)) as pct_of_total, 
decode(det.max_enc,0,'n','y') as enc, a.rows, 
decode( det.n_sortkeys, 0, null, a.unsorted_rows ) as unsorted_rows , 
decode( det.n_sortkeys, 0, null, decode( a.rows,0,0, (a.unsorted_rows::decimal(32)/a.rows)*100) )::decimal(5,2) as pct_unsorted 
from (select db_id, id, name, sum(rows) as rows, 
sum(rows)-sum(sorted_rows) as unsorted_rows 
from stv_tbl_perm a 
group by db_id, id, name) as a 
join pg_class as pgc on pgc.oid = a.id
join pg_namespace as pgn on pgn.oid = pgc.relnamespace
left outer join (select tbl, count(*) as mbytes 
from stv_blocklist group by tbl) b on a.id=b.tbl
inner join (select attrelid, 
min(case attisdistkey when 't' then attname else null end) as "distkey",
min(case attsortkeyord when 1 then attname  else null end ) as head_sort , 
max(attsortkeyord) as n_sortkeys, 
max(attencodingtype) as max_enc 
from pg_attribute group by 1) as det 
on det.attrelid = a.id
inner join ( select tbl, max(mbytes)::decimal(32)/min(mbytes) as ratio 
from (select tbl, trim(name) as name, slice, count(*) as mbytes
from svv_diskusage group by tbl, name, slice ) 
group by tbl, name ) as dist_ratio on a.id = dist_ratio.tbl
join ( select sum(capacity) as  total
from stv_partitions where part_begin=0 ) as part on 1=1
where mbytes is not null 
order by  mbytes desc

【讨论】:

  • @mdemy 感谢您的建议,但我相信计算节点上会出现倾斜行而不是领导者。
  • 没有倾斜的行,但有倾斜的表。您上面的评论表明您需要更多阅读才能了解红移的工作原理。祝你好运
  • 不确定我是否关注@mdemy。你怎么能在没有倾斜行的情况下倾斜表格。你能指点我你可能指的文档吗..请不要误会我的意思,只是想找到指针。
猜你喜欢
  • 2018-12-21
  • 2014-09-06
  • 2017-11-25
  • 2017-01-16
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 2019-12-18
  • 2019-12-07
相关资源
最近更新 更多