কোন এক্স 2 ইলাস্টিক ব্লক স্টোর ভলিউম থেকে এস 3 এ 400G ফাইল অনুলিপি করার দ্রুততম কোনটি?


21

আমাকে একটি ইলাস্টিক ব্লক স্টোর ভলিউম থেকে একটি এস 3 বালতিতে 400G ফাইল অনুলিপি করতে হবে ... সেগুলি প্রায় 3kk ফাইল ~ 1Mb এর

আমি s3cmd এবং s3fuse চেষ্টা করেছি , তারা দুজনই সত্যই, সত্যিই ধীর .. s3cmd একটি পুরো দিনের জন্য দৌড়েছিল, বলেছিল এটি অনুলিপি করা শেষ হয়েছে, এবং যখন আমি বালতিটি পরীক্ষা করেছি, তখন কিছুই হয়নি (আমি মনে করি কিছু ভুল হয়েছে, তবে কমপক্ষে এস 3 সিএমডি কখনও কোনও অভিযোগ করেনি)

এস 3 ফিউজ অন্য একটি সম্পূর্ণ দিনের জন্য কাজ করছে এবং 10% এরও কম ফাইল অনুলিপি করেছে ...

এর জন্য আরও ভাল সমাধান কি আছে?

আমি অবশ্যই লিনাক্স (উবুন্টু 12.04) চালাচ্ছি


2
অনেক মানদণ্ড (উদাহরণস্বরূপ এটি একটি ) থ্রুপুট এর S3: 1) ফাইলের আকার 2) সমান্তরাল থ্রেডের সংখ্যা এবং 3) উদাহরণ আকারের 3 টি নির্ধারণকারী উপাদানগুলি প্রদর্শন করেছে। M৪ থেকে 128 সমান্তরাল (একযোগে) 1 এমবি অবজেক্টের আপলোডগুলিতে 1 জিবিএস আপলিংকে একটি এম 1.এক্স্লেজারের পরিপূরণ করা উচিত এবং এমনকি একটি ক্লাস্টার কম্পিউট (সিসি 1.4 এক্স্লারজ) উদাহরণটির 10 জিবিপিএস আপলিংক পরিপূর্ণ করা উচিত। এটি মাথায় রেখে অনেকগুলি স্ক্রিপ্ট থাকতে হবে (উদাহরণস্বরূপ এটি এক বা এস 3 সিএমডি-পরিবর্তন)
সাইবারএক্স 86

1
s3-সমান্তরাল-কৌতুকটি করলেন!
এ্যাসেবা

উত্তর:


20

ইসি 2 থেকে এস 3 এ থ্রুপুট নির্ধারণ করে এমন কয়েকটি মূল কারণ রয়েছে:

  • ফাইলের আকার - ছোট ফাইলগুলির জন্য বৃহত সংখ্যক অনুরোধ এবং আরও বেশি ওভারহেড এবং ধীরে ধীরে স্থানান্তর প্রয়োজন। ফাইলসাইজের সাথে প্রাপ্ত লাভ (যখন ইসি 2 থেকে উদ্ভূত হয়) 256kB এর চেয়ে বড় ফাইলগুলির জন্য নগণ্য। (অন্যদিকে, উচ্চতর বিলম্বের সাথে একটি দূরবর্তী অবস্থান থেকে স্থানান্তরকরণ 1MiB এবং 2MiB এর মধ্যে প্রশংসনীয় উন্নতিগুলি চালিয়ে যেতে থাকে) tend
  • সমান্তরাল থ্রেডের সংখ্যা - একটি একক আপলোড থ্রেড সাধারণত প্রায় 5MiB / s এর নীচে থাকে fair একযোগে থাকা থ্রেডের সংখ্যার সাথে থ্রুপুট বৃদ্ধি পায় এবং 64 এবং 128 থ্রেডের মধ্যে শীর্ষে যায়। এটি লক্ষ করা উচিত যে বৃহত্তর উদাহরণগুলি বৃহত্তর সংখ্যার সহবর্তী থ্রেডগুলি পরিচালনা করতে সক্ষম হয়।
  • ইনস্ট্যান্সের আকার - উদাহরণের বিবরণ অনুসারে বৃহত্তর ইনস্ট্যান্সগুলির আরও বেশি ডেডিকেটেড রিসোর্স রয়েছে, যার মধ্যে নেটওয়ার্ক ব্যান্ডউইদথের বৃহত (এবং কম আই ভেরিয়েবল) বরাদ্দ রয়েছে (এবং সাধারণভাবে I / O - সাময়িক / ইবিএস ডিস্কগুলি পড়ার সাথে - যা নেটওয়ার্ক সংযুক্ত রয়েছে Typ প্রতিটি বিভাগের জন্য সংখ্যার মানগুলি:
    • খুব উচ্চ: তাত্ত্বিক: 10 জিবিপিএস = 1250 এমবি / গুলি; বাস্তববাদী: 8.8 জিবিপিএস = 1100 এমবি / গুলি
    • উচ্চ: তাত্ত্বিক: 1 জিবিপিএস = 125 এমবি / গুলি; বাস্তববাদী: 750 এমবিপিএস = 95 এমবি / গুলি
    • মধ্যপন্থী: তাত্ত্বিক: 250 এমবিপিএস; বাস্তবসম্মত: 80 এমবিপিএস = 10 এমবি / গুলি
    • নিম্ন: তাত্ত্বিক: 100 এমবিপিএস; বাস্তববাদী: 10-15 এমবিপিএস = 1-2 এমবি / গুলি

বিপুল পরিমাণে ডেটা স্থানান্তর করার ক্ষেত্রে, একটি ক্লাস্টার কম্পিউট উদাহরণ ব্যবহার করা অর্থনৈতিকভাবে কার্যকর হতে পারে, কারণ থ্রুপুট (> 10 এক্স) এর কার্যকর লাভ ব্যয়ের পার্থক্যের চেয়ে বেশি (2-3x)।

উপরের ধারণাগুলি মোটামুটি যৌক্তিক (যদিও, প্রতি-থ্রেড ক্যাপটি নাও হতে পারে), বেঞ্চমার্কগুলি সেগুলি সমর্থন করে তা পাওয়া খুব সহজ। একটি বিশেষভাবে এখানে একটি পাওয়া যাবে

1MB অবজেক্টের 64 এবং 128 সমান্তরাল (একযোগে) আপলোডগুলি ব্যবহার করাতে 1GBS আপলিংকে কোনও এম 1.xlarge রয়েছে এবং এটি একটি ক্লাস্টার কম্পিউট (সিসি 1.4xlarge) উদাহরণের 10 জিবিপিএস আপলিংকে পরিপূর্ণ করা উচিত।

উদাহরণস্বরূপের আকারটি পরিবর্তন করা মোটামুটি সহজ, অন্য দুটি কারণ পরিচালনা করা আরও কঠিন।

  • ফাইলের আকার সাধারণত স্থির থাকে - আমরা ইসি 2 তে একসাথে ফাইলগুলিতে যোগদান করতে পারি না এবং এস 3 এ তাদের আলাদা করে দিতে পারি না (সুতরাং, ছোট ফাইলগুলি সম্পর্কে আমরা তেমন কিছু করতে পারি না)। তবে বড় ফাইলগুলি, আমরা ইসি 2 টির সাথে আলাদা হয়ে এস 3 সাইডে (এস 3 এর মাল্টি পার্ট আপলোড ব্যবহার করে) পুনরায় সংযুক্ত করতে পারি। সাধারণত, 100MB এর চেয়ে বড় ফাইলগুলির জন্য এটি সুবিধাজনক।
  • সমান্তরাল থ্রেডগুলি সামঞ্জস্য করা কিছুটা শক্ত। সহজতম পদ্ধতির কিছু বিদ্যমান আপলোড স্ক্রিপ্টের জন্য একটি মোড়ক লেখার জন্য নেমে আসে যা এটির একাধিক অনুলিপি একবারে চালানো হবে। আরও ভাল পদ্ধতির অনুরূপ কিছু সম্পাদন করতে সরাসরি API ব্যবহার করুন। কীটি সমান্তরাল অনুরোধগুলি মনে রেখে, বেশ কয়েকটি সম্ভাব্য স্ক্রিপ্টগুলি সনাক্ত করা কঠিন নয়, উদাহরণস্বরূপ:
    • s3cmd- পরিবর্তন - s3cmd এর প্রাথমিক সংস্করণের একটি কাঁটা যা এই কার্যকারিতা যুক্ত করেছে, তবে বেশ কয়েক বছরে আপডেট হয়নি।
    • s3-সমান্তরাল-পুট - যুক্তিসঙ্গত সাম্প্রতিক অজগর স্ক্রিপ্ট যা ভাল কাজ করে

8

সুতরাং, অনেকগুলি পরীক্ষার পরে s3-সমান্তরাল- কৌতুকটি দুর্দান্তভাবে করেছিলেন। স্পষ্টতই সমাধানটি যদি আপনার এস 3 এ প্রচুর ফাইল আপলোড করা প্রয়োজন। মন্তব্যের জন্য সাইবারএক্স 86 কে ধন্যবাদ ।


3
কৌতূহলের বাইরে, ক) 400 গিগাবাইট আপলোড করতে কতক্ষণ সময় লাগল খ) আপনি কতগুলি থ্রেড ব্যবহার করেছেন গ) আপনি কোন উদাহরণ আকারটি ব্যবহার করেছেন?
cyberx86

1
@ সাইবারএক্স ৮86 আমি সম্প্রতি একটি বড় ই সি 2 ইনস্ট্যান্সে এস 3-সমান্তরাল-পোট ব্যবহার করেছি। আমি 5 টি থ্রেড ব্যবহার করেছি এবং এটি 10.49 ঘন্টাে 288.73 জিবি অনুলিপি করেছে।
গর্ত্রন

4

টিউনডাব্লুএসএসআইএলআই এস 3 কনফিগারেশন মানগুলি http://docs.aws.amazon.com/cli/latest/topic/s3-config.html অনুসারে টিউন করুন ।

নীচে একটি এস 3 সিঙ্কের গতি কমপক্ষে 8x বাড়িয়েছে!

উদাহরণ:

$ more ~/.aws/config
[default]
aws_access_key_id=foo
aws_secret_access_key=bar
s3 =
   max_concurrent_requests = 100
   max_queue_size = 30000

2

এটি করার জন্য আমি সি # ( কপিফাস্টারটোস 3 ) এ একটি অনুকূলিত কনসোল অ্যাপ্লিকেশন লিখেছি । আমি ইবিএস ভোল ব্যবহার করেছি, আমার ক্ষেত্রে এটিতে 20 জিবি পরিমাণে 2 মিলিয়নেরও বেশি ফাইল সহ 5 টি ফোল্ডার রয়েছে। 30 মিনিটেরও কম সময়ে স্ক্রিপ্টটি কার্যকর করা হয়েছিল।

ইন এই নিবন্ধটি আমি কিভাবে সমান্তরাল সঙ্গে একটি recursive ফাংশন ব্যবহার করে দেখিয়েছেন। আপনি এটি অন্য ভাষায় প্রতিলিপি করতে পারেন।

শুভকামনা!




1

এস 3 সিএমডি পরিবর্তে এস 3- ক্লিপ ব্যবহার করার চেষ্টা করুন । আমি আমার এস 3 বালতিতে ফাইলগুলি আপলোড করতে এস 3 সিএমডি এর পরিবর্তে এটি ব্যবহার করেছি এবং এটি প্রায় 17 মিনিটের (21 থেকে 4 মিনিটের মধ্যে) দ্বারা আমার স্থাপনাকে দ্রুততর করে তুলেছে!

লিঙ্কটি এখানে: https://github.com/andrewrk/node-s3-cli

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.