Быстрое массовое копирование файлов в Scala с помощью Akka - PullRequest
0 голосов
/ 12 декабря 2011

Мне интересно, как лучше всего скопировать файл src в dest в Scala, который будет обёрнут в Akka Actor и, возможно, с помощью RemoteActor на нескольких машинах.

У меня огромное количество файлов изображений, которые я должен скопировать из одного каталога в каталог, смонтированный по NFS.

Не так много делали FileHandling на Java или Scala, но знайте, что есть библиотека NIO и некоторые другие, над которыми работали начиная с Scala 2.7. Что-то, что будет самым безопасным и быстрым.

Я, наверное, тоже должен дать некоторое представление о своей инфраструктуре. Соединение составляет 1000 МБ, в котором через Cisco3560 подключается узел Isilon к серверу Windows 2003 Server. Узел Isilon - это монтирование NFS, а Windows 2003 Server - монтирование с высокой степенью конфигурации Samba (Cifs).

1 Ответ

1 голос
/ 12 декабря 2011

Вы, вероятно, не можете превзойти скорость копирования файлов базовой ОС, поэтому, если файлы большие или вы можете их пакетировать, лучше всего написать сценарий оболочки с помощью Scala, а затем вызывать его с помощью bash или что-то подобное. Скорее всего, один поток может насытить дисковый ввод-вывод, так что на самом деле ничего особенного делать не приходится. Если образы большого размера, вы будете ожидать ограничения 50ish MB / s на вашем диске (или ограничения 10ish MB / s в вашей сети Ethernet 100 Mbps); если они малы, вы будете ждать несколько десятков мс служебных данных при поиске файлов, времени проверки сети и т. д.

Тем не менее, вы можете использовать Apache Commons IO , который имеет утилиту для копирования файлов, и предыдущий вопрос имеет высокопроизводительный ответ среди записей с самым высоким рейтингом. У вас может быть один актер, выполняющий все задачи копирования, и это должно быть так же быстро, как если бы у вас была группа актеров, пытающихся побороться за одинаковую ограниченную пропускную способность ввода-вывода.

...