Hi George, The current implementation present in YARN using Cgroups supports CPU isolation but not by pinning to specific cores (Cgroup CPUsets) but based on cpu cycles (quota & Period). Admin is provided with an option of specifying how much percentage of CPU can be used by YARN containers. And Yarn will take care of configuring Cgroup Quota and Period files and ensures only configured CPU percentage is only used by YARN containers
Is there any particular need to pin the MR tasks to the specific cores ? or you just want to ensure YARN is not using more than the specified percentage of CPU in a give node ? Regards, Naga ________________________________ From: Rohith Sharma K S [[email protected]] Sent: Tuesday, April 07, 2015 09:23 To: [email protected] Subject: RE: Pin Map/Reduce tasks to specific cores Hi George In MRV2, YARN supports CGroups implementation. Using CGroup it is possible to run containers in specific cores. For your detailed reference, some of the useful links http://dev.hortonworks.com.s3.amazonaws.com/HDPDocuments/HDP2/HDP-2-trunk/bk_system-admin-guide/content/ch_cgroups.html http://blog.cloudera.com/blog/2013/12/managing-multiple-resources-in-hadoop-2-with-yarn/ http://riccomini.name/posts/hadoop/2013-06-14-yarn-with-cgroups/ P.S : I could not find any related document in Hadoop Yarn docs. I will raise ticket for the same in community. Hope the above information will help your use case!!! Thanks & Regards Rohith Sharma K S From: George Ioannidis [mailto:[email protected]] Sent: 07 April 2015 01:55 To: [email protected] Subject: Pin Map/Reduce tasks to specific cores Hello. My question, which can be found on Stack Overflow<http://stackoverflow.com/questions/29283213/core-affinity-of-map-tasks-in-hadoop> as well, regards pinning map/reduce tasks to specific cores, either on hadoop v.1.2.1 or hadoop v.2. In specific, I would like to know if the end-user can have any control on which core executes a specific map/reduce task. To pin an application on linux, there's the "taskset" command, but is anything similar provided by hadoop? If not, is the Linux Scheduler in charge of allocating tasks to specific cores? ------------------ Below I am providing two cases to better illustrate my question: Case #1: 2 GiB input size, HDFS block size of 64 MiB and 2 compute nodes available, with 32 cores each. As follows, 32 map tasks will be called; let's suppose that mapred.tasktracker.map.tasks.maximum = 16, so 16 map tasks will be allocated to each node. Can I guarantee that each Map Task will run on a specific core, or is it up to the Linux Scheduler? ------------------ Case #2: The same as case #1, but now the input size is 8 GiB, so there are not enough slots for all map tasks (128), so multiple tasks will share the same cores. Can I control how much "time" each task will spend on a specific core and if it will be reassigned to the same core in the future? Any information on the above would be highly appreciated. Kind Regards, George
