是否可以将DataStream时间窗口设置为较大的值(例如24小时)?要求的原因是,我要基于网站的最新24小时客户端流量进行数据统计。这样,我可以检查是否存在安全违规。
例如,检查用户帐户是否使用多个源IP登录到该网站。或检查最近24小时内某个IP访问了多少个唯一页面。如果检测到安全违规,则会实时执行配置的操作,例如阻止源IP或锁定相关用户帐户。
该网站的吞吐量约为200Mb / s。我认为将时间窗口设置为较大的值会导致内存问题。是否应将每个时间窗口的统计结果(如5分钟)存储到数据库中?
然后根据数据库查询统计最近24小时内生成的日期?
我没有大数据分析的经验。任何建议将不胜感激。
答案 0 :(得分:0)
这取决于我们在谈论什么类型的窗口和聚合:
不使用逐出的窗口:在这种情况下,Flink将仅在每个物理窗口中保存一个累加结果。这意味着,对于一个10h的滑动窗口和一个1h的滑动窗口,它计算总和时,其数字必须为10倍。对于滚动窗口(无论参数如何),它仅保存一次聚合结果。但这并不是全部内容:因为状态是键控的,所以您必须将所有这些值乘以组中使用的字段的每个不同值。
带驱逐窗口:保存所有已处理但仍未被驱逐的事件。
简而言之,通常,内存消耗与您处理的事件数或窗口的持续时间无关,而是与:
考虑所有因素,我想说一个简单的24小时窗口几乎没有内存占用。
您可以检查相关代码here。