Apache Hadoop 0.23 이야기
- 개발관련팁/Hadoop
- 2011. 12. 21.
Hadoop World 2011에서 Arun 아저씨가 발표한 Apache Hadoop 0.23 자료 정리
발표 video : http://www.cloudera.com/videos/hadoop-world-2011-presentation-video-apache-hadoop-0.23
- Hortonworks에서 일하는 Arun 아저씨는 Apache Hadoop PMC (Project Management Committe)의 Chair임. 그리고 hadoop 0.23의 release manager
- hadoop에 대한 간단한 역사
- nutch project에서 시작. 2006년 hadoop project를 시작한 Doug Cutting 아저씨를 yahoo에서 채용
- 초기 버전은 매달 릴리즈 (0.1, 0.2…)
- 0.15~0.20까지는 분기마다 릴리즈
- hadoop 0.20 버전은 여전히 현재의 stable한 버전임
- 2011년 5월에 security를 추가한 0.20.203 버전이 릴리즈 (내가 한 일을 남들이 모르게 하라..)
- 2011년 10월에 hbase를 위한 몇 가지 기능을 추가하여 0.20.205 버전이 릴리즈
- hadoop 0.23 버전은 30개월 만에 첫 stable 버전 release가 될 예정
- 간만에 major feature 추가
- HDFS Federation : scaling 문제를 해결하기 위해 multi name node 도입, namespace관리와 block 관리를 분리
- 차세대 map reduce인 YARN 도입
- 전반적으로 두 배 이상 성능 향상 / local read일 경우, hdfs protocol을 타지 않고 빠르게 읽도록 수정 (for Hbase) / shuffle의 성능이 30% 이상 향상
- HDFS의 name node의 고가용성 확보 (name node가 죽어도 어떻게든 수습하자)
- 기타 HBase를 위한 pipline 개선 / fulle mavenization / name node의 Edit log를 좀 더 단순하고 튼튼하게 수정
- 배포 목표
- 궁극적인 목표는 하나의 data center의 컴퓨터들(약 2.5~3만대)을 하나의 cluster로 묶는 것
- 0.23에서는 6천대의 node가 하나의 cluster로 동작하는 것이 목표 (현재는 4천대 정도 인듯?)
- 현재 (0.20) 4만 concurrent task / cluster –> 10만 개 이상의 concurrent task / cluster
- 현재 (0.20) 3~4천 개의 concurrent job / cluster -> 만 개의 concurrent job / cluster
- 잡담하나 : Yahoo는 5만대 이상의 machine들을 less then 1 full time employee가 관리한다고.. 이것이 hadoop의 cool한 점이라고 자랑함
- 이제 그럼 무엇을 더 해야 하는가?
- 테스트를 많이 한다. 최소한 마지막 버전만큼의 성능은 나오도록
- HBase, Pig, Hive, Oozie와의 intgration test도 한다
- 왜 Test가 어렵나?
- 단순한 api가 아님. map reduce는 굉장히 넓은 범위의 api
- hadoop streaming까지 들어가면, 이건 거의 unix 수준 (이라고 들었는데 제대로 들은 건가?)
- 매일밤 MapReduce 하나를 위해, 거의 천 여 개의 functional test가 돌아감
- 그리고 Pig/Hive를 위한 수 백 개의 테스트도 돌아감
- Scale test는 기계가 많이 없어서.. 200~400대로 2000대를 simulation 하여 테스트한다
- 얼마나 오래 가는지도 테스트하고, stress test도 열심히 한다
- Benchmarks
- HDFS와 Map Reduce pipeline의 모든 부분들을 벤치마크 (HDFS에서 읽고 쓰는 throughput, name node의 성능 등)
- GridMixv3 (hadoop cluster들을 위한 benchmark tool) : Macro benchmark로 이해하면 ok. 만약 shuffle에서 30 % 성능이 좋아졌다면, 실제 production cluster에서 성능은 얼마나 좋아졌을까? 수 천 개의 job을 실행하고 benchmark함
- 배포
- 내부 alpha 테스트 : 2011년 11월 시작. 500~800대 정로 테스트
- alpha 버전 : 2012년 1월 예정. 2천 대의 노드로 구성된 클러스터를 포함하여 만 대 이상의 노드로 테스트
- beta 버전 : 2012년 1/4분기 늦게. 사실 베타라고 얘기하기도 애매함. 4천 개 이상의 노드로 구성된 클러스터를 포함하여 총 2만 개 이상의 노드로 테스트. 야후에서는 한 달에 2백 만 개의 job을 돌릴 예정. 몇 달 동안 테스트하면, 천 만 개 이상의 job이 테스트됨. 이 정도면 뭐..
- beta가 끝나면 production. stable 버전이 될 것. 2012년 2/4 분기