태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

하둡의 퍼포먼스 (삽질기)

Tech 2007.11.09 21:04
실험환경: ( Ram 4GB, Quad core, 250GB SATA2 ) X 5

노드 하나는 마스터, 나머지 네개의 노드를 실제 Mapping, Reducing에 포함시켰다. 마스터 노드를 계산에서 제외한 것은 다른 사람들도 쓰는 공용 노드였기 때문...

준비: Hadoop 0.15.0, sun java 1.5.0_03
설정: 마스터 1대, 계산노드 4대, replica 1, JVM Heapsize 1536MB, MAX Partition size 64MB... 기타등등 거의 기본값.

Step 1. 입력 데이터 생성. 하둡에 기본 포함된 example RandomWriter로 40GB(노드 하나당 10개씩, 각 1GB 파일)의 입력 데이터를 생성하였음.

Step 2. example sorter(그러니까 identity mapper - identity reducer)를 사용하여 정렬 시도. 모든 인자는 기본값 -> Mapping하며 Out of memory가 자주 뜨다가.. 종국에는 Mapping을 모두 끝내지 못하고 Job Failed.
Map task가 자동으로 640개로 잡히고, Running Map Task는 최대 8개(즉 노드당 2개씩)였다. 계산해보면 40GB/640->64MB, 즉 입력을 640개로 쪼갰다는 것을 알 수 있다. 이녀석들을 다루며 메모리가 부족하다고 하는걸로 봐서 Mapper들이 입력을 더 잘게 쪼개야 할 듯. 그래서 Step 3로 넘어감.

Step 3. Map task 1000개(대략 40MB단위로 쪼갬), Reduce task 8개로 시작.
a. Running map task는 8개가 최대. Pending -> Running -> Completed 로 넘어간다. Out of memory 예외는 사라졌음.
b. Mapping이 일어나는 동안 mapping된 data chunk들이 대기하고 있는 reduce task들에게 복사되어간다.
c. 1000개의 map task 완료 -> 거의 동시에 Copy 완료 -> Reduce task들이 Sorting phase에 들어감.
d. Sorting을 마친 녀석들부터 reduce 시작. 8개의 reduce task가 모두 거의 동시에 sorting을 시작했지만, sorting을 마치는 시점, reduce가 완료되는 시점에는 큰 차이가 있었다.
e. 차례로 reduce를 마침. 마지막 reduce task가 완료되었을때가 1hr 46min.

Step 4. reduce task는 동시에 8개까지 돌아갈 수 있다. 위에서 8개의 reduce task중 가장 먼저 하나가 끝난 경우, running reduce task는 7로 줄어들게 된다. 4개의 reduce task가 일을 빨리 끝내고 노는 동안 나머지 4개의 reduce task들만이 작업을 하는 경우도 생길 수 있다. 리소스의 utilization을 향상시키기 위하여 reduce작업도 보다 작은 unit으로 쪼갤 수 있다. 24개로 쪼개 보았다. 이렇게 하면 reduce task 하나가 완료되면, pending reduce task가 시작되어 계속 일을 하게 되므로 보다 자원을 효율적으로 사용할 수 있다. (load balancing이라고 볼 수도...) 하지만 unit이 너무 작으면 하둡 프레임웍이 이를 관리하는데 더 큰 부하게 걸리게 되니 적당하게 잡아주자. 여튼,
a. 1000개의 map task - Step 3와 거의 비슷
b. 총 24개의 reduce task중 8개가 running. 8개의 reduce task들에게만 data chunk가 복사된다. 이 시점에서는 어느 reduce task가 먼저 완료될지 모르기 때문에 pending reduce task를 위한 data chunk는 준비할 수 없다.
c. 8개의 reduce task가 sorting -> reduce
d. 완료된 reduce task는 completed로 바뀌고, pending reduce task중 하나가 activated. 이 녀석을 위한 data chunk가 복사되기 시작한다.
e. d와 같은 작업이 계속되어 24개의 reduce task가 모두 완료. 1hr 24min.

Step 5. 하둡 기본 설정은 2 tasks per node 이다. 음, 비싼 돈을 들여 quad core 를 준비했는데 좀 아깝지? 그래서 4 tasks per node로 바꾸어 보았다. 코어가 4개니까 4개의 task(프로세스)가 돌아가는게 효율적일 것 같아서... 이로서 running map task는 16, running reduce task도 16이 될 수 있다. 와! 더 빨라지지 않을까?
result. 1hr 35min. ... -_-???

Step 5에 대한 고찰: ... 사실 작업 내내 모든 노드에 top 을 띄워놓고 코어 4개의 사용률, wait time등을 살펴보았는데, mapping - reducing(copying, sorting, reducing) 사이클에서 cpu 사용률이 50%를 넘는걸 한번도 보지 못했다. 거의 대부분이 wait - 즉, 계산 과정의 거의 대부분이 I/O bind job이란 이야기. 즉, quad core든 dual core든 non-multi core이든 큰 상관은 없다는 이야기. 물론 custom mapper/reducer에서 뭔가 빡센 계산을 한다면 이야기는 달라지겠지만, 이건 map/reduce 모델과 어울리는 것은 아닌 듯. quad core를 잘 써보자 라는건 애초부터 extremely I/O binded job 인 map/reduce 프레임웍에는 의미없는 발버둥이었던 듯.

종합해보면, 정해진 개수의 노드로 이루어진 hadoop cluster의 성능을 높이려면

1. CPU Upgrade X
2. Node간의 Network bandwidth upgrade O
3. HDD Speed upgrade O
4. Ram △ - Disk flushing하는 단위가 늘어날테니, I/O에 도움을 줄 수 있겠다.

정도를 생각해 볼 수 있겠... -0-/

추가적으로, replica 에 대해서는??? 파일이 노드의 여러곳에 복제되어 있으면 아마도 write는 느려지고 read는 어느정도 빨라질 가능성이 있다. map에 들어가는 입력 파일들이 복사되어 퍼지는 데에 replica가 있으면 유리하다. 즉, 어느정도 성능 향상의 가능성이 있다. 하지만 반대로 map에서 나오는 데이터들이 여러곳에 복사되어야 하는걸까? 그렇다면 이 부분에서는 negative. 임시 데이터들에 대해서도 replica를 만드는지는 잘 모르겠으니 확인해볼 여지가 있다. 여튼, 영향이 있을 수는 있으나 그게 positive/negative중 어느 쪽인지는 좀 더 뜯어봐야 할듯.

'Tech' 카테고리의 다른 글

Nonnegative integers without numbers  (0) 2007.11.15
ofstream redirect to stdout  (3) 2007.11.10
하둡의 퍼포먼스 (삽질기)  (7) 2007.11.09
Fibo2 ...  (3) 2007.11.05
Fib(n) = Fib(n-1) + Fib(n-2), Fib(1) = Fib(2) = 1  (4) 2007.11.02
Nutch Crawler, briefly  (1) 2007.10.31
Trackbacks 0 : Comments 7
  1. Favicon of http://www.jaso.co.kr 김형준 2007.11.20 22:54 Modify/Delete Reply

    웹서핑중에 좋은 글 읽고 갑니다.
    마지막 질문에 대한 답은 Map의 결과는 Map이 수행된 local disk에 저장되고(1copy) 이것을 reduce에서 가져가는 구조입니다. map이 수행되던 장비가 죽으면 다른 장비에서 해당 map이 다시 수행되고요. 그리고 replica 3개 둔다고 해서 write 속도에는 영향을 별로 안줍니다. pipe 개념으로 전달하기 때문이죠.

  2. Favicon of http://www.teshi.net teshi 2009.09.24 09:35 Modify/Delete Reply

    좋은 정보 보고 갑니다. 오래된 정보이지만... 그래도 많은 도움이 되었습니다.

  3. Favicon of http://gmyou.egloos.com 힘찬아빠 2010.12.17 11:20 Modify/Delete Reply

    이제 막 타겟으로 잡고 서치중입니다... 퍼가두 될까요? ^^*

    • Favicon of http://deisys.net dgoon 2010.12.19 20:35 Modify/Delete

      별로 도움이 되지는 않을 것 같은 내용이지만... 얼마든지 퍼가셔도 됩니당 ㅎㅎ

  4. Favicon of http://15366nmactc.org/media/oakley.php Cheap Oakley sunglasses 2013.07.13 19:32 Modify/Delete Reply

    희미한 달빛이 샘물 위에 떠있으면,나는 너를 생각한다.

  5. Favicon of http://13376blatsoffcomics.com ghd 2013.07.16 16:32 Modify/Delete Reply

    눈을 감아봐 입가에 미소가 떠오르면 네가 사랑하는 그 사람이 널 사랑하고 있는거야.

Write a comment