1.Hadoop 이란?
-하둡은 분산 데이터 처리의 공통 플랫폼입니다.
-하둡을 3가지로 나눈다면
1) 데이터 저장의 분산 파일 시스템(Distributed file system) HDFS
2) 데이터 처리의 분산 데이터 처리(Distributed data processing) MapReduce(MR)
3) 자원 관리의 YARN(hadoop ver 2.0에 발표)
-YARN의 역할
1) CPU나 메모리 등의 계산 리소스는 리소스 매니저인 YARN에 의해 관리
2) YARN은 애플리케이션이 사용하는 CPU 코어와 메모리를 '컨테이너라 불리는 단위로 관리)
3) Hadoop에서 분산 애플리케이션을 실행하면 YARN이 클러스터 전체의 부하를 보고 비어 있는 호스트부터 컨테이너를 할당
-MapReduce란
1) YARN상에서 동작하는 분산 애플리케이션 중 하나이며, 분산 시스템에서 데이터 처리를 실행하는 데 사용
2) 임의의 자바 프로그램을 실행시킬 수 있기 때문에 비구조화 데이터를 가공하는 데 적합하다.
3) 정렬된 데이터를 분산처리(Map), 이를 다시 합치는 과정(Reduce)
(흩어져 있는 데이터를 수직화 -> 그 데이터를 각각의 종류별로 모으고(Map) -> 필터링과 정렬을 거쳐 데이터를 추출(Reduce)하는 분산처리 기술과 관련된 Framework를 의미)
- Splitting : 문자열 데이터를 라인별로 나눔
- Mapping : 라인별로 문자열을 입력 -> (key, value) 형태로 출력
- Shuffling : 같은 key를 가지는 데이터끼리 분류
- Reducing : 각 key 별로 빈도수를 합산해서 출력
- Final Result : 리듀스 메소드의 출력 데이터를 합쳐서 하둡 파일시스템에 저장
2. Hadoop ecosystem이란?
-하둡의 코어 프로젝트는 HDFS, MapReduce, YARN이지만 이들의 역할을 수행해내는 다양한 서브 프로젝트들로 구성된 환경을 뜻함.
ex)
1) 분산 데이터 처리 서브 프로젝트
-하둡의 MapReduce는 hadoop ver1.0에서 쓰이던 분산 데이터 처리 애플리케이션이고, ver2.0에서는 MapReduce보다 약 30% 성능이 좋다는 tez라는 분산 데이터 처리 엔진이 나옵니다.
-그 외에도 SQL 기반의 쿼리 엔진인 Hive, Hive를 대신하는 대화형 쿼리 엔진인 Impala, Presto 인 메모리 형의 고속 데이터 처리인 Spark를 MapReduce대신에 사용하기도 합니다.
-과거에 하드웨어가 발달하지 못했던 시절에는 속도보다는 안전성을 추구하기 때문에 장시간의 배치 처리를 가정해 한정된 리소스를 유효하게 활용하도록 설계되어 있습니다.
ex) MapReduce,Tez, Hive on MR, Hive on Tez
-대량의 배치처리를 제외한 구조화 데이터를 대화식으로 집계하고자 할 때는 지연이 적은 메모리기반의 impala와 presto를 사용합니다.
-현재의 발달된 하드웨어에 의해 인 메모리 기반의 고속 데이터 처리가 가능해졌습니다.
ex) Spark
-이외에도 apache drill, apache HAWQ, apache kylin, apache Phoenix, apache Tajo 등이 있습니다.
2) YARN을 대체 할 리소스 관리자
-YARN을 대체 할 리소스 관리자로는 대표적으로 mesos와 Kubernetes(K8s)가 있습니다.
-Mesos(메조스)
1) OS수준의 가상화 기술을 사용하고 있으며, YARN보다 더 엄격한 리소스 제어를 합니다.
2) 기술적으로는 Docker와 마찬가지로 Linux 컨테이너가 사용되며, Docker 이미지를 사용하여 프로그램을 실행할 수도 있습니다.
3) YARN은 HDFS와 연계함으로써 데이터가 어디에 있는가 하는 정보를 사용하여 애플리케이션을 실행합니다.
(Hive와 같은 대규모 배치 처리는 되도록 데이터 부근에서 실행하는 것이 효율이 높기 때문에 YARN을 사용하는 것이 적합합니다)
4) Mesos는 HDFS의 존재를 알지 못하므로 동일한 일을 실현하기 위해서는 이용자가 여러 방법을 모색해야합니다.
-Kubernetes(K8s)
1) 하둡에서도 실행은 가능하지만 추천은 하지않는 리소스 관리자
2) spark를 사용 할때 yarn을 대체할 만한 리소스 관리자
3) 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼이고, 컨테이너를 관리하여 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공하고, 애플리케이션의 확장과 장애 조치를 처리하고, 배포 패턴 등을 제공
3. HDFS를 대체할 만한 것은?
-분산 파일 시스템을 대체할 만한 것
1) 분산 스토리지로, 버킷을 만들고 객체를 저장하는 스토리지인 Amazon S3(클라우드)
2) 분산 데이터베이스인 카산드라(cassandra, NoSQL)
4.이외에 hadoop ecosystem을 구성하는 것들
1) 데이터를 전송과 관련된 serialize과 관련된 AVRO파일,
2) 워크플로우 관리와 스케줄링에 사용되는 oozie와 airflow,
3) 클러스터 배포,관리,모니터링과 관련된 ambari,
4) 분산된 시스템간의 정보를 어떻게 공유할것이고, 클러스터에 있는 서버들의 상태를 체크할 필요가 있으며 또한, 분산된 서버들간에 동기화를 위한 락(lock)을 처리하는 것들이 문제를 해결하는 coordination service, Zookeeper
참조:
도서 빅데이터를 지탱하는 기술
댓글