'JAVA'에 해당되는 글 51건
- 2010.10.08 Hadoop 1
개요- 오픈소스 Lucene과 Nutch를 진두지휘하던 더그 커팅이 구글의 분산기술을 2006년부터 하둡이라는 이름으로 오픈소소화함.
- 크게 분산파일시스템인 HDFS와 대용량 데이터 처리 기법인 MapReduce로 나뉨.
- 대규모 분산파일처리시스템 구축에 놀라울 만큼의 성능과 안정성 보장.
- ETL, DW, BI시장에도 도전장을 내밀고 있음,
클라우드 이전의 문제점
프로그램 / 프로세서의 문제
공짜 점심은 끝났다. 다음세대의 프로세서로 바꿔 달면 프로그램의 실행속도가 빨라지는 시대는 이제 지나갔다.
- 따라서 더 빠르게 실행하고 싶다면 병렬 프로그램을 작성하는 방법을 배워야 한다.
- 하지만 병렬 프로그래미은 보다 덜 모듈적이다.
동 일한 크기로 잡을 나누는것이 쉬운 일이 아니다.
- 또한 독립적인 프로세스로부터 결과를 조합하는데 더 많은 처리가 필요하다.
저장공간문제
- 고가의 NAS를 더이상 추가할 수 없다.
- 일반적으로 SAN으로 연결된 공유파일 시스템은 대규모 데이터에 액서스 할때는 네트워크에 병목현상이 발생하여 계산을 수행할 노드들이 노는 문제가 생김.
하드 드라이브의 저장용량은 지난 수년동안 엄청나게 증가한 반면 억세스 속도는 그에 미치지 못했다.
- 100개의 드라이브가 있고 1/100으로 나누어 저장 후 병렬로 동작할 수 있다면 동작시간은 1/100으로 줄어든다.
- 통계적으로 사용자들의 분석작업은 고르게 분포되어 서로를 크게 방해하지 않는다.
이러할 경우 문제점
- 하드웨어를 많이 사용할수록 하드웨어가 장애날 확율이 늘어난다.
- 분 할된 데이터를 어떤 식으로든 결합할 필요가 있다.
Hadoop의 기능
MapReduce
- 일반적으로 더 많은 데이터가 더 좋은 알고리즘보다 낫다.
매퍼 : 각 자료를 한줄씩 읽어서 키와 벨류로 묶어준다. (복키 가능)
- 이를 소팅해서 리듀서로 넘겨준다.
- 리듀서 : 매퍼를 받아서 자료를 합치고 정리한다.
HDFS(Hadoop Distributed FileSystem) : 데이터 분산 저장.
- 페타 바이트급의 데이터 보유 가능
동작예
각 컴퓨터 40~80대를 하나의 랙으로 묶고 중앙 스위치에 연결해 클러스터를 구성한다.
- x86 프로세서 탑재. OS는 리눅스이며 2~4기가의 메모리를 탑재한다.
- 저장소는 개별 컴퓨터에 직접 부착된 싼 IDE디스크에 담긴다. (GFS라는 분산 파일 시스템)
10기가의 데이터 -> A,B,C로 나누어 각각의 PC에 분산/ 3개 정도로 중복 저장.
- 마스터 PC에서 이 정보를 관리한다.
분 산 저장된 3개의 하드디스크가 동시 페일오버될 확율은 거의 없다.
- 만약 페일오버시 즉시 그 자료를 복제해서 다시 3개로 만든다.
부하 균등화
- 작 업을 구성하는 과제는 컴퓨터 개수보다 큰 경우가 많다. -> 빠른 컴퓨터는 느린 컴퓨터 보다 더 많은 과제를 배정받는다.
- 오류의 내구성 : 주기적으로 ping을 보내고 작업자가 죽었다면 즉시 과제를 재배정 한다.
- 범용 하드웨어 사용 : 일반 하드디스크를 형광등처럼 소모품으로 간주.
- 국소성 : 계산을 수행하는 자료가 작동컴퓨터 또는 랙과 동일한 곳에 저장됨으로 네트워크 대역폭을 절약한다.
성능
- 80코어 / 오라클 / 20억 => 1시간 소요
- 일반PC 벌크 / 3200만원 => 34분 소요
사용처
- 통계 / ETL / 데이터 마이닝 / 로그분석.
- 통계에 대한 처리가 DBA에서 개발자로 넘어오고 있음.
페이스북
- 하둡에 2PB이상의 데이터를 담았으며 하루에 10TB이상의 데이터가 추가되고 있다.
- 2400개의 코어와 9TB의 메모리를 가지고 있으며 하루동안 많은 부분에서 100% 활용되고 있다.
단점
- 작은 크기의 파일이 무수히 많고나 빈번하게 업데이트가 일어나는 데이터는 맞지 않음.
관계형 데이터베이스와의 차이.