Python 将数据写入单个计算机的最快方式?
我有一个由100台机器组成的网络,所有机器都运行Ubuntu Linux 在连续(流)的基础上,机器Python 将数据写入单个计算机的最快方式?,python,linux,Python,Linux,我有一个由100台机器组成的网络,所有机器都运行Ubuntu Linux 在连续(流)的基础上,机器X被“馈送”一些实时数据。我需要编写一个python脚本,将数据作为输入,加载到内存中,对其进行处理,然后将其保存到磁盘 这是大量的数据,因此,理想情况下,我希望分割内存中的数据(使用一些逻辑),并以尽可能快的方式将数据片段发送到每台计算机。每台计算机都将接受它的一段数据,对其进行处理并将其写入本地磁盘 假设我有一个Python中的数据容器(可以是一个列表、一个字典等),它已经被处理并拆分为多个部
X
被“馈送”一些实时数据。我需要编写一个python脚本,将数据作为输入,加载到内存中,对其进行处理,然后将其保存到磁盘
这是大量的数据,因此,理想情况下,我希望分割内存中的数据(使用一些逻辑),并以尽可能快的方式将数据片段发送到每台计算机。每台计算机都将接受它的一段数据,对其进行处理并将其写入本地磁盘
假设我有一个Python中的数据容器(可以是一个列表、一个字典等),它已经被处理并拆分为多个部分。向每台机器发送每个“数据块”的最快方式是什么 您应该看看
pyzmq
:
以及zeromq(0mq)的一般指南
您有两种选择:
当您想要更多的功能时,您可能需要找到一些现有的工具来帮助您。听起来您可能想研究AMQP(用于可靠消息传递)、Hadoop(用于分布式数据处理)或更完整的NoSQL解决方案(如Cassandra或Riak)的一些组合。通过利用这些工具,您的系统将比您自己可能构建的系统更加健壮。您需要的是类似消息队列的功能。将消费者和生产者添加到队列很容易。消费者可以投票或通过回调获得通知…您是否阅读过MapReduce?它的全部目的就是这样。不幸的是,我不能给你一个特定于python的答案。但是我认为阅读这篇文章会对你有很大帮助。你能解释一下是什么让这比简单地(通过编程)
ssh-ing
到机器上并将数据发送到那里更好吗?你能解释一下是什么让这比简单地(通过编程)更好吗ssh-ing
将数据发送到机器上?@user540009:因为0mq提供了许多不同的连接类型和交互模式,并且可能比ssh更快地分发数据块。它还支持pickle和json序列化,以在网络中移动python对象。您要求以“最快的方式”分发数据,而0mq非常快。除此之外,我不知道你想做什么,也不知道要提供什么样的约束,而不是技术上的建议。谢谢。0mq
是否允许我在远程机器上运行程序?或者它只是发送消息?此外,似乎使用0mq
远程机器必须“侦听”传入的消息,而使用ssh
我可以直接连接到远程机器并“指示”该做什么;我只需要一种方法将数据“发送”到远程机器;ssh-ing
难道不是一个好的解决方案吗?您可以使用ssh
,这将在提供某些功能(例如验证与特定主机的连接、有线保密性)的同时产生某些开销(例如,密钥协商、加密)。如果您不关心加密,请查看服务器端的SocketServer python模块。尽管如此,这种“1类”方法并没有处理主机停机、负载平衡等问题,您可能并不关心这些问题。谢谢。您是对的ssh
有一些开销。但是,如果我首先初始化所有连接(需要几秒钟),然后在连接时继续向远程节点写入数据,会怎么样?在您看来,我还会有很多开销吗?运行时机器上的加密开销可能可以忽略不计。