1. hadoop 2.0 yarn  구조




2. yarn operation flow


resource manager와 node manager로 구성되며, 클러스터내 어플리케이션 코드를 수행하는 container를 관리한다 (container별로 cpu, 메모리 등 리소스 할당)




3. mapreduce1과 yarn 비교

 mapreduce 

 yarn 

 jobtracker 

 resource manager, application master, timeline server 

 tasktracker

 node manager 

 slot

 container 



4. yarn 스케쥴 options


yarn.resourcemanager.scheduler.class 설정

   org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

   org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FifoScheduler

   org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler



Queue 사용하는 방법은 application property에 queue 값을 설정

( mapreduce.job.queue,   ex => mapreduce.job.queue = prod )




1) FIFO (first in, first out)

   먼저 들어온 job를 모든 리소스를 사용하여 먼저 처리후 다음 작업을 실행    


   



2) Capacity  (shared cluster일때 유용)

   분리된 dedicated queue 사용하여 job을 처리, 큰 규모의 job일 경우 FIFO보다 느림



<configuration>

<property>

<name>yarn.scheduler.capacity.root.queues</name>

<value>prod,dev</value>

</property>


<property>

<name>yarn.scheduler.capacity.root.prod.capacity</name>

<value>90</value>

</property>


<property>

<name>yarn.scheduler.capacity.root.dev.capacity</name>

<value>10</value>

</property>


<property>

<name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>

<value>15</value>

</property>

</configuration>



3) Fair Schedulers (shared cluster일때 유용)

   들어 오는 job별로 공평하게 resouce를 분배하여 처리하여 사용함


   yarn.scheduler.fair.user-as-default-queue (user별로 queue 구성)

   yarn.scheduler.fair.allow-undeclared-pools  (선언 안된 pool은 사용하지 않음)


  



<allocations>

<defaultQueueSchedulingPolicy>fair</defaultQueueSchedulingPolicy>

    <queue name="prod">

       <weight>40</weight>

       <schedulingPolicy>fifo</schedulingPolicy>

    </queue>

<queue name="dev">

    <weight>60</weight>

</queue>

<queuePlacementPolicy>

    <rule name="specified" create="false" />              -- job queue 이름을 기술

    <rule name="primaryGroup" create="false" />        -- queue 이름이 없으면 unix group

    <rule name="default" queue="dev" />            -- 위에것이 없으면 default queue

</queuePlacementPolicy>

</allocations>


-- default

<queuePlacementPolicy>

<rule name="default" />

</queuePlacementPolicy>

'NoSQL > Hadoop' 카테고리의 다른 글

hadoop serialization and deserialization  (0) 2017.03.10
hadoop compression and decompression  (0) 2017.03.10
hadoop read & write  (0) 2017.03.06
hadoop streaming  (0) 2017.03.06
hadoop locality  (0) 2017.03.06

+ Recent posts