CS 전공/리뷰2012. 6. 11. 08:28

근래 KAIST에서 수행하는 연구 중에는  Hadoop을 이용한 비정형데이터 처리가 있다.

그래서 작게나마 9대의 PC들을 가지고 연구실에서 Hadoop cluster를 구축하였다.

1대는 이미 실험실에 존재하던 서버로 이를 Name node로 설정하였고

나머지 8대는 새로 구입한 것으로 i5 quadcore CPU + 8GB 메모리, 1TB 7200RPM HDD와 256GB SSD를 탑재한 것이다.  이들은 data node로 설정하였다. 그리고 이들 모두를 Gigabit switching hub로 연결하였다.


수행하다보니 꼭 reduce task 에서 임의로 노드들의 eth0 네트워크 인터페이스가 죽어버리는 

현상을 경험하였다. 처음엔 Hadoop 세팅 자체의 문제이거나 ulimit 등의 사소한 문제로 생각하였으나 아니었다. 

 수차례의 닭질 끝에 결국엔 Cent0S에 제공하는 Realtek 네트워크 드라이버가 2.x대로

현재의 8.0대에 비해 현저히 버전이 낮은 상태였고, 옛날 버전의 드라이버가 무언가 문제를 일으킨

것을 찾아내었다.


이것을 파악한 것은 나중의 일이고, 처음엔 이것저것 테스트해보았다. 그중에는 스위칭허브를 100Mbps로 교체해 본 일도 포함되었다. 그런데 교체해보니 느리지만 reduce가 죽어서 100% 완료에 도달못하는 문제는 사라졌다. 

해서 이번에는 네트워크 드라이버들을 모두 업그레이드를 하고,  100Mbps와 1Gigabit switching hub를 교체해서 달아보면서 네트워크 성능이 어떻게 M/R job의 성능에 영향을 미치는지 간단히 측정해 보았다. 물론 이것은 어떠한 데이터를 가지고 어떠한 작업을 수행하느냐에 따라 크게 달라질 것이다.

필자의 데이터는 text 포맷이고, M/R job은 간단히 언급하자면, text에서 유일한 token들을 추리고,

이들이 전체 데이터에서 얼마나 반복되어 나타나는지 count하여, 원 text와 같이 출력하는 일이다.


실험 결과는: 

--------

11GB 데이터 적재 시

1 Gigabit : 222.449s

100Mbps: 1,369.204s 

으로 약 6.15배 차이 


11GB에  M/R 작업 수행 시

1 Gigabit : 3분 48초

100Mbps : 9분 11초

 으로 약 2.41배 차이


를 보여주었다.


이를 Amdahl's law(http://bart7449.tistory.com/244에 대입시켜 보면, 

data loading의 경우 1/( (1-p) + p/10 ) = 6.15 이고

p ~= 0.93 


M/R 작업 수행 시의 경우를 보면,

1 / ( (1-p) + p /10 ) = 2.41 

p ~= 0.65

이라는 결과가 나온다. 


즉, 데이터 로딩의 경우 네트워크가 Hadoop 시스템에서 차지하는 비율이 약 93% 에 이르고, 

M/R 작업의 경우에는 그 비율이 낮아지지만 그래도 과반이 넘는 약 65% 에 이르렀다.


이는 Hadoop 시스템에서 네트워크 성능이 Hadoop 시스템의 전체 성능에 엄청나게 영향을 미치는

요인이라는 얘기가 된다. 우리가 보통 시스템에서  I/O를 얘기를 할 때는 디스크 I/O만을 

크게 고려하는데, Hadoop 시스템에서는 오히려 네트워크 I/O가 더 큰 영향을 미치는 것으로 

판단된다.


네트워크 쪽 하는 사람들은 Hadoop을 network traffic log 등을 분석하는데 이용하는 것으로 아는데, 

bulk data transmission이 많은 이러한 Hadoop 환경에서

네트워크 성능 개선을 통한 Hadoop 시스템 개선이나  또는 Hadoop에 특화된 네트워크 구축 방법이나 개발 등이 좋은 주제가 될 수 있지 않을까?


혹 이와 관련하여 좋은 아이디어 있다면 연락주기를 희망한다.  :) 


 




 

Posted by Bart