Muszę skopiować 400G plików z elastycznego magazynu bloków do wiadra s3 ... To około 300 tysięcy plików ~ 1Mb
Próbowałem s3cmd i s3fuse , oba są naprawdę, bardzo powolne .. s3cmd działał przez cały dzień, powiedział, że skończył kopiowanie, a kiedy sprawdziłem wiadro, nic się nie stało (przypuszczam, że coś poszło nie tak, ale przynajmniej s3cmd nigdy na nic nie narzekał)
S3Fuse pracuje przez kolejny pełny dzień i skopiował mniej niż 10% plików ...
Czy jest na to lepsze rozwiązanie?
Oczywiście używam Linuksa (ubuntu 12.04)
Odpowiedzi:
Istnieje kilka kluczowych czynników, które określają przepustowość z EC2 do S3:
W przypadku przesyłania dużych ilości danych może być ekonomicznie praktyczne zastosowanie instancji obliczeń klastrowych, ponieważ efektywny wzrost przepustowości (> 10x) jest większy niż różnica kosztów (2-3x).
Chociaż powyższe pomysły są dość logiczne (chociaż ograniczenie liczby wątków może nie być), dość łatwo jest znaleźć wzorce, które je popierają. Jeden szczególnie szczegółowy można znaleźć tutaj .
Używanie od 64 do 128 równoległych (równoczesnych) przesyłanych obiektów 1 MB powinno nasycić łącze wysyłające 1 Gb / s, które ma m1.xlarge, a nawet nasycić łącze wysyłające 10 Gb / s instancji obliczeń klastra (cc1.4xlarge).
Chociaż zmiana wielkości instancji jest dość łatwa, pozostałe dwa czynniki mogą być trudniejsze do zarządzania.
źródło
Tak więc, po wielu testach s3-równolegle postawiony sposób zadziałał niesamowicie. Oczywiście rozwiązanie, jeśli musisz przesłać wiele plików do S3. Dzięki cyberx86 za komentarze.
źródło
Dostosuj wartości konfiguracji AWS CLI S3 zgodnie z http://docs.aws.amazon.com/cli/latest/topic/s3-config.html .
Poniżej zwiększono szybkość synchronizacji S3 o co najmniej 8x!
Przykład:
źródło
W tym celu napisałem zoptymalizowaną aplikację konsolową w języku C # ( CopyFasterToS3 ). Użyłem w EBS vol, i moim przypadku miał 5 folderów z ponad 2 milionami plików w ilości 20 GB. Skrypt został wykonany w mniej niż 30 minut.
W tym artykule pokazałem, jak korzystać z funkcji rekurencyjnej równolegle. Możesz zapisać go na inny język.
Powodzenia!
źródło
Są też: s3funnel , który wydaje się bardzo stary (2008) i kilka otwartych błędów, ale wciąż jest wymieniony w samej Amazon: amzn-lnk
źródło
Spróbuj s4cmd zamiast tego, to naprawdę szybsze niż s3cmd. Jego adres: https://github.com/bloomreach/s4cmd
źródło
Spróbuj użyć s3-cli zamiast s3cmd. Użyłem go zamiast s3cmd do przesyłania plików do mojego wiadra s3, dzięki czemu moje wdrożenie było szybsze prawie o 17 minut (od 21 do 4 minut)!
Oto link: https://github.com/andrewrk/node-s3-cli
źródło