sql – 分布式和/或并行SSIS处理
背景:
我管理着IT运营团队,到目前为止,这为我们提出了一个有趣的“扩展”问题.对于我们日常更新的客户,服务器只在晚上大约4-6小时“忙”.对于我们的每周刷新客户端,服务器只能“忙碌”,每周8-10小时! 我们已尽最大努力使用一些简单的方法来分配负载,方法是将每日客户端均匀地分布在服务器中,这样我们就不会过夜地连接每天的客户端.但长期这种扩展策略会产生两个值得注意的问题.首先,它会耗费大量闲置很长一段时间的硬件.其次,需要大量的生产支持来基本上“安排”ETL,使得它们不会重叠,并且如果他们在特定服务器上扩展资源或分配时隙,则移动客户端/时间表. 正如标题所暗示的那样,我们尝试过的一个选项是并行运行多个SSIS包,但在大多数情况下,这会产生非常不一致的结果.最常见的故障是DTExec,SQL和SSAS争用物理内存和丢失内存错误,ETL运行时间比预期长3,4,5倍.因此,根据我迄今为止的实际经验,似乎在同一硬件上运行多个ETL包并不是一个好主意,但我不能成为第一个不希望围绕手动调度和顺序扩展多个ETL的人处理. 我们考虑过的一个选项是虚拟化服务器,这显然不会给你任何额外的资源,但会将资源争用转移到虚拟机管理程序上,根据我的经验,它似乎可以同时管理CPU / RAM /磁盘I / O比让DTExec,SQL和SSAS在Windows中战胜它更优雅. 论坛提问: 我们考虑的另一个选择是完全重新构建我们的SSIS包,为所有尝试智能选择服务器的客户端提供一个“主”包,根据CPU /内存/磁盘利用率的“繁忙”程度,但这将是一项艰巨的努力,似乎我们正试图重新发明一些你认为会出售的东西(尽管我没有找到任何运气). 总而言之,我们是否遗漏了一个明显的解决方案,有没有人知道是否有任何工具(免费或购买,无关紧要),便于并行运行多个SSIS ETL包和多个服务器? (我称之为“基于队列和节点的”系统,但这不是官方术语).最终,VMWare的Distributed Resource Scheduler解决了这个问题,因为您只需为每个VM运行一致数量的客户端,您知道这些客户端永远不会按计划进行冲突,然后将其留给VMWare来移动VM以平衡硬件使用.我绝对不反对使用VMWare来实现这一点,但由于我们是100%的Microsoft应用程序堆栈,似乎 – 通过检查资源可以在应用程序层而不是管理程序层解决这个问题. OS,SQL,SSAS级别的利用率. 我愿意接受有关此事的任何讨论,并记住没有任何建议过于疯狂或激进! :-)现在,VMWare是我们发现摆脱“手动”平衡资源的唯一选择,因此任何将我们置于纯Microsoft堆栈上的建议都会很棒. 多谢你们, >杰夫 解决方法试试这个: http://blogs.msdn.com/b/sqlperf/archive/2011/05/25/the-balanced-data-distributor-for-ssis.aspx您还可以使用Service Broker(或其他消息队列)在家中扩展解决方案 和安装了SSIS的盒子场中等待工作和dipatch到工作包的监听器包. (编辑:92站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |