hadoop 0.21 append 성능 테스트

hadoop이 지난달 0.21로 업그레이드 되면 append 기능이 추가되었습니다.
append에 대해 성능 테스트를 수행해 보았는데 결과 공유합니다.

테스트를 수행한 환경이 VM환경이라 절대적인 성능 수치 보다는 일반 write와 속도 비교가 더 의미 있을 겁니다. 그리고 부하 상황이 아닌 싱글 클라이언트 상황에서의 테스트입니다.

1. 테스트 환경
    . 물리적 서버 3대,   각 서버에 VM5대
    . Hadoop 1 master, 23 datanode
    . Hadoop 버전: 0.21

2. 테스트 프로그램
    . 1024 bytes를 102,400번 수행 -> 100MB
    . 별첨 참고

3. 테스트 결과
    . write(BufferedOutputStream 사용시): 17,654 ms
    . write(DFSOutputStream 사용시): 12,298 ms
    . append(DFSOutputStream 사용시, 매번 flush 호출): 130,436 ms
    . append(DFSOutputStream 사용시, 마지막에 flush 호출): 11,398 ms
   . append(DFSOutputStream 사용시, 1000건 단위로 flush 호출): 16,225 ms
 
4. 결론
    . append의 경우 flush()를 호출하지 않으면 기존 write의 동일한 성능
    . append 연산을 사용하는 용도가 주로 로그 데이터 저장 등인데 이 경우 매번 flush 해주는 경우가 일반적
      -> 이런 상황에서는 10배 정도의 성능 저하 발생
    . append 도중 close를 하지 않은 상태에서 클라이언트가 강제 종료되면 일전 시간(수 분) 내에서는
      파일 읽기 연산 불가

    . append 사용 가능 상황
      -> 쓰기 시간이 중요하지 않고 중요한 데이터
      -> 쓰기 시간이 중요하지만 일부 데이터(1000건 정도) 유실이 발생해도 무방한 데이터


크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 김형준