Hadoop Eco-System (하둡 에코시스템)
하둡의 코어 프로젝트는 HDFS와 MapReduce지만 그 외에도 다양한 서브 프로젝트들이 많습니다.
하둡 에코시스템은 프레임워크를 이루고 있는 다양한 서브 프로젝트들의 모임이라고 볼 수 있습니다.
아래 그림들은 하둡 에코시스템을 나타낸 것 입니다.
출처 : 클라우데라
출처 : 시작하세요! 하둡 프로그래밍(위키북스)
하둡의 코어 프로젝트 : HDFS(분산 데이터 저장), MapReduce(분산 처리)
하둡의 서브 프로젝트 : 워크플로우 관리, 데이터 마이닝, 분석, 수집, 직렬화 등
구성 요소 (하둡의 서브 프로젝트)
1. 분산 코디네이터
Zookeeper
분산 환경에서 서버들간에 상호 조정이 필요한 다양한 서비스를 제공하는 시스템입니다.
하나의 서버에만 서비스가 집중되지 않도록 서비스를 알맞게 분산하여 동시에 처리하게 해줍니다.
하나의 서버에서 처리한 결과를 다른 서버들과 동기화합니다. (데이터 안정성 보장)
운영 서버에서 문제가 발생하여 서비스를 제공할 수 없는 경우, 다른 대기중인 서벌르 운영 서버로 바꿔 서비스가 중단없이 제공되게 합니다.
분산 환경을 구성하는 서버들의 환경설정을 통합적으로 관리합니다.
http://zookeeper.apache.org/
2. 워크플로 스케줄링 시스템
Oozie
하둡의 작업을 관리하는 워크플로우 및 코디네이터 시스템입니다.
자바 서블릿 컨테이너에서 실행되는 자바 웹 어플리케이션 서버로, MapReduce 작업이나 Pig 작업 같은 특화된 액션들로 구성된 워크플로우를 제어합니다.
http://incubator.apache.org/oozie
Oozie - Apache Oozie Workflow Scheduler for Hadoop
Overview Oozie is a workflow scheduler system to manage Apache Hadoop jobs. Oozie Workflow jobs are Directed Acyclical Graphs (DAGs) of actions. Oozie Coordinator jobs are recurrent Oozie Workflow jobs triggered by time (frequency) and data availability. O
oozie.apache.org
3. 분산 리소스 관리
YARN
작업 스케줄링 및 클러스터 리소스 관리를 위한 프레임 워크로 MapReduce, Hive, Impala, Spark 등 다양한 애플리케이션들은 얀(YARN)에서 작업을 실행합니다.
https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html
Apache Hadoop 3.3.1 – Apache Hadoop YARN
Mesos(클라우드 환경에 대한 리소스 관리)
Mesos는 Linux 커널과 동일한 원칙을 사용하며 컴퓨터에 API(Hadoop, Spark, Kafka, Elasticsearch 등)를 제공합니다.
페이스북, 트위터, 이베이 등 다양한 기업들이 메소스 클러스터 자원을 관리하고 있습니다.
http://mesos.apache.org/
Apache Mesos
Apache Mesos abstracts resources away from machines, enabling fault-tolerant and elastic distributed systems to easily be built and run effectively.
mesos.apache.org
4. 데이터 저장
HBase(분산 데이터 베이스)
HDFS의 컬럼 기반 데이터베이스 이빈다.
구글의 BigTable 논문을 기반으로 개발된 것으로, 실시간 랜덤 조회 및 업데이트가 가능하며, 각각의 프로세스들은 개인의 데이터를 비동기적으로 업데이트 할 수 있습니다. 단, MapReduce는 일괄처리 방식으로 수행됩니다.
http://hbase.apache.org
Apache HBase – Apache HBase™ Home
Welcome to Apache HBase™ Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. Use Apache HBase™ when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- bi
hbase.apache.org
Kudu(컬럼기반 스토리지)
컬럼기반 스토리지로 하둡 에코 시스템에 새로 추가되어 급변하는 데이터에 대한 빠른 분석을 위해 설계되었습니다.
클라우드데라에서 시작된 프로젝트로, 2015년 말 아파치 인큐베이션 프로젝트로 선정되었습니다.
https://kudu.apache.org/
Apache Kudu - Fast Analytics on Fast Data
Faster Analytics Kudu is specifically designed for use cases that require fast analytics on fast (rapidly changing) data. Engineered to take advantage of next-generation hardware and in-memory processing, Kudu lowers query latency significantly for engines
kudu.apache.org
5. 데이터 수집
Chukwa
분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장시키는 플랫폼입니다.
분산된 각 서버에서 에이전트(agent)를 실행하고, Collector가 에이전트로부터 데이터를 받아 HDFS에 저장합니다.
Collector는 100개의 에이전트당 하나씩 구동되며, 데이터 중복 제거 등의 작업은 MapReduce로 처리합니다.
http://incubator.apache.org/chukwa
Chukwa - Welcome to Apache Chukwa
About Apache Chukwa Apache Chukwa is an open source data collection system for monitoring large distributed systems. Apache Chukwa is built on top of the Hadoop Distributed File System (HDFS) and Map/Reduce framework and inherits Hadoop’s scalability and
chukwa.apache.org
Flume
Chukwa처럼 분산된 서버에 에이전트가 설치되고, 에이전트로부터 데이터를 전달받는 Collector로 구성되어 있습니다.
Chukwa와의 차이점은 전체 데이터 흐름을 관리하는 마스터 서버가 있어서, 데이터를 수집하는 방법과 출처를 전송하고 저장되는 위치를 동적으로 할당할 수 있습니다.
http://incubator.apache.org/projects/flume.html
Flume Incubation Status - Apache Incubator
This page tracks the project status, incubator-wise. For more general project status, look on the project website. The Flume project graduated on 2012-06-20 Flume is a distributed, reliable, and available system for efficiently collecting, aggregating, and
incubator.apache.org
Scribe
페이스북에서 개발한 데이터 수집 플랫폼이며, Chukwa와는 다르게 데이터를 중앙 집중 서버로 전송하는 방식을 사용합니다.
최종 데이터는 HDFS외에 다양한 저장소를 활용할 수 있으며, 설치와 구성이 쉽게 다향한 프로그램 언어를 지원합니다.
HDFS에 저장하기 위해서는 JNI(Java Native Interface)를 이용해야 합니다.
https://github.com/facebook/scribe
GitHub - facebookarchive/scribe: Scribe is a server for aggregating log data streamed in real time from a large number of server
Scribe is a server for aggregating log data streamed in real time from a large number of servers. - GitHub - facebookarchive/scribe: Scribe is a server for aggregating log data streamed in real tim...
github.com
Kafka
카프카는 데이터 스트리밍을 실시간으로 관리하기 위한 분산 시스템으로, 대용량 이벤트를 처리하기 위해 개발되었습니다.
https://kafka.apache.org/
Apache Kafka
Apache Kafka: A Distributed Streaming Platform.
kafka.apache.org
Sqoop
대용량 데이터 전송 솔루션으로 HDFS, RDBMS, DW, NoSQL 등 다양한 저장소에 대용량 데이터를 신속하게 전송할 수 있는 방법을 제공합니다.
Oracle, MS-SQL, DB2 등과 같은 상용 RDBMS와 MySQL, PostgreSQL과 같은 오픈소스 RDBMS등을 지원합니다.
http://sqoop.apache.org
Hiho
Sqoop과 같은 대용량 전송 솔루션이며 현재 github에 공개되어 있습니다. 하둡에서 데이터를 가져오기 위한 SQL을 지정할 수 있으며, JDBC 인터페이스를 지원합니다.
https://github.com/sonalgoyal/hiho
GitHub - sonalgoyal/hiho: Hadoop Data Integration with various databases, ftp servers, salesforce. Incremental update, dedup, ap
Hadoop Data Integration with various databases, ftp servers, salesforce. Incremental update, dedup, append, merge your data on Hadoop. - GitHub - sonalgoyal/hiho: Hadoop Data Integration with vario...
github.com
6. 데이터 처리
Pig
복잡한 MapReduce 프로그래밍을 대체할 Pig Latin이라는 자체 언어를 제공합니다.
MapReduce API를 단순화시키고 SQL과 유사한 형태로 설계되었습니다.
http://pig.apache.org
Welcome to Apache Pig!
Welcome to Apache Pig! Apache Pig is a platform for analyzing large data sets that consists of a high-level language for expressing data analysis programs, coupled with infrastructure for evaluating these programs. The salient property of Pig programs is t
pig.apache.org
Mahout
하둡 기반 데이터 마이닝 알고리즘을 구현한 오픈소스입니다.
현재 분류(classification), 클러스터링(clustering), 추천 및 협업 필터링(Recommenders/Collavorative filtering), 패턴 마이닝(Pattern Mining), 회귀 분석(Regression), 차원 리덕션(Dimension Reduction), 진화 알고리즘(Evolutionary Algorithms) 등 주요한 알고리즘을 지원하고 있습니다.
Mahout을 그대로 사용할 수도 있지만, 자신의 비즈니스 환경에 맞게 최적화하여 사용하는 경우가 대부분입니다.
http://mahout.apache.org
Apache Mahout
December 15, 2020 Trevor able to do Mahout in-core matrix addition in Python. Will continue working, but good first step. Want to see POC that DRMs will also “work” and then will sketch... Read Post →
mahout.apache.org
Spark
대규모 데이터 처리를 빠른 속도로 실행시켜주는 엔진입니다. 스파크는 병렬 애플리케이션을 쉽게 만들 수 있는 80개 이상의 고급 연산자를 제공하며, 파이썬, R 등과 같이 대화형 프로그래밍으로 사용할 수 있습니다.
https://spark.apache.org/
Apache Spark™ - Unified Analytics Engine for Big Data
Ease of Use Write applications quickly in Java, Scala, Python, R, and SQL. Spark offers over 80 high-level operators that make it easy to build parallel apps. And you can use it interactively from the Scala, Python, R, and SQL shells.
spark.apache.org
Impala
클라우드데라에서 개발한 하둡 기반의 실시간 SQL 질의 시스템입니다.
MapReduce를 사용하지 않고, 자체 개발한 엔진을 사요하여 빠른 성능을 보여줍니다. 임팔라는 데이터 조회를 위한 인터페이스로 HiveQL을 사용합니다. 수 초 내에 SQL 질의 결과를 확인할 수 있으며 HBase와 연동이 가능합니다.
https://github.com/cloudera/impala
GitHub - cloudera/Impala: Real-time Query for Hadoop; mirror of Apache Impala
Real-time Query for Hadoop; mirror of Apache Impala - GitHub - cloudera/Impala: Real-time Query for Hadoop; mirror of Apache Impala
github.com
Hive
하둡 기반의 데이터웨어하우징용 솔루션입니다.
페이스북에서 만든 오픈소스로, SQL과 유사한 HiveQL이라는 쿼리를 제공합니다. 따라서 자바를 잘 모르는 데이터 분석가들도 쉽게 하둡 데이터를 분석할 수 있도록 도와줍니다. HiveQL은 내부저긍로 MapReduce Job으로 변환되어 실행됩니다.
http://hive.apache.org
Apache Hive TM
Apache Hive TM The Apache Hive ™ data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are
hive.apache.org
Tajo
고려대학교 정보통신대학 컴퓨터학과 DB 연구실 박사 과정학생들이 주도해서 개발한 하둡 기반의 DW 시스템입니다.
데이터 저장소는 HDFS 를 사용하되, 표준DB 언어인 SQL 을 통해 실시간으로 데이터를 조회할 수 있습니다. Hive 보다 2 ~ 3 배 빠르며, 클라우드데라의 임팔라(Impala) 와는 비슷한 속도를 보여줍니다. 임팔라가 클라우드데라의 하둡을 써야 하는 제약에 비해, 특정 업체 솔루션에 종속되지 않는 장점이 있습니다.
http://tajo.incubator.apache.org
Tajo - A Big Data Warehouse System on Hadoop -
Apache Tajo™: A big data warehouse system on Hadoop Apache Tajo is a robust big data relational and distributed data warehouse system for Apache Hadoop. Tajo is designed for low-latency and scalable ad-hoc queries, online aggregation, and ETL (extract-tr
tajo.incubator.apache.org
출처
댓글