হ্যাডোপ ভি 1 এ, আমি 1 জিবি আকারের সাথে প্রতিটি 7 ম্যাপার এবং রিডুসার স্লট বরাদ্দ করেছি, আমার ম্যাপারগুলি এবং হ্রাসকারীগুলি সূক্ষ্মভাবে চলে। আমার মেশিনে 8 জি মেমরি, 8 টি প্রসেসর রয়েছে। এখন ইয়ার্নের সাথে একই মেশিনে একই অ্যাপ্লিকেশনটি চালানোর সময় আমার ধারক ত্রুটি হয়েছে got ডিফল্টরূপে, আমার এই সেটিংসটি রয়েছে:
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>8192</value>
</property>
এটি আমাকে ত্রুটি দিয়েছে:
Container [pid=28920,containerID=container_1389136889967_0001_01_000121] is running beyond virtual memory limits. Current usage: 1.2 GB of 1 GB physical memory used; 2.2 GB of 2.1 GB virtual memory used. Killing container.
আমি তখন ম্যাপ্রেড-সাইট.xML এ মেমরি সীমাটি সেট করার চেষ্টা করেছি:
<property>
<name>mapreduce.map.memory.mb</name>
<value>4096</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>4096</value>
</property>
তবে তবু ত্রুটি হচ্ছে:
Container [pid=26783,containerID=container_1389136889967_0009_01_000002] is running beyond physical memory limits. Current usage: 4.2 GB of 4 GB physical memory used; 5.2 GB of 8.4 GB virtual memory used. Killing container.
আমি বিভ্রান্ত হয়েছি কেন মানচিত্রের টাস্কটির এত বেশি স্মৃতি দরকার। আমার বোঝার জন্য, আমার মানচিত্র / হ্রাস করা কাজের জন্য 1GB মেমরি যথেষ্ট। কেন আমি ধারককে আরও মেমরি বরাদ্দ করি, কাজটি আরও বেশি ব্যবহার করে? এটি কি কারণ প্রতিটি কাজ আরও বিভক্ত হয়? আমি মনে করি যে ধারকটির আকারটি কিছুটা কমিয়ে আরও বেশি পাত্রে তৈরি করা আরও বেশি দক্ষ, যাতে আরও কাজ সমান্তরালে চলছে। সমস্যাটি হ'ল আমি কীভাবে নিশ্চিত করতে পারি যে প্রতিটি কন্টেইনার এটি পরিচালনা করতে পারে তার চেয়ে বেশি বিভক্ত হবে না?