기타/빅데이터 - Hadoop

Hadoop의 다양한 기능/서브 프로젝트들 (하둡 에코시스템)

둥굴둥굴둥굴레차 2021. 9. 6. 15:18

하둡 에코시스템이란?

Hadoop EcoSystem

빅데이터는 수집, 정제, 적재, 분석, 시각화의 여러 단계를 거친다.

이 단계를 거치는 동안 여러가지 기술을 이용하여 처리되고,

이 기술들을 통틀어 빅데이터 에코 시스템(Bigdata Eco System)이라고 한다.

 

하둡의 코어 프로젝트가 HDFS와 MapReduce인 것이고 이 외에도 다양한 서브 프로젝트가 많이 존재한다.

이러한 서브 프로젝트들의 모임을 하둡 에코시스템(Hadoop EcoSystem)이라고 한다.

 

  • Hadoop의 코어 프로젝트 : HDFS(분산데이터저장), MapReduce(분산처리)
  • Hadoop의 서브 프로젝트 : Workflow관리, 데이터 마이닝, 분석, 수집, 직렬화 등

 

https://1004jonghee.tistory.com/entry/%ED%95%98%EB%91%A1-%EC%97%90%EC%BD%94-20161003?category=419383
시작하세요! 하둡 프로그래밍(위키북스)

 


수집기술

 

수집기술은 빅데이터 분석을 위한 원천 데이터를 수집하는 기술입니다. 원천 데이터는 실시간 데이터 수집 기술, 배치 데이터 수집기술이 있습니다. 원천 데이터의 종류에도 로그 데이터, DB 데이터, API 호출 데이터 등 여러가지 종류가 있습니다.

 

Flume

플룸

Chukwa 처럼 분산된 서버에 에이전트가 설치되고, 에이전트로부터 데이터를 전달받는 콜랙터로 구성

차이점은 전체 데이터의 흐름을 관리하는 마스터 서버가 있어서, 데이터를 어디서 수집하고, 어떤 방식으로 전송하고, 어디에 저장할 지를 동적으로 변경할 수 있다.

 

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

 

Kafka

카프카

링크드인에서 개발한 데이터 스트림을 실시간으로 관리하기 위한 분산 메시징 시스템

대용량  이벤트 처리에 특화되었다. 발행(publish) - 구독(subscribe) 모델로 구성된다.

 

[Apache Kafka] 1. 소개및 아키텍처 정리

Apache Kafka(아파치 카프카)는 LinkedIn에서 개발된 분산 메시징 시스템으로써 2011년에 오픈소스로 공개되었다. 대용량의 실시간 로그처리에 특화된 아키텍처 설계를 통하여 기존 메시징 시스템보

epicdevs.com

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

 

NiFi

나이파이

미국 국가안보국(NSA)에서 개발한 시스템 간 데이터 전달을 효율적으로 처리, 관리, 모니터링하기 위한 최적의 시스템
 

NSA의 Dataflow 엔진 Apache NiFi 소개와 설치 | Popit

Apache NiFi는 NSA(National Security Agency)에서 Apache에 기증한 Dataflow 엔진입니다. 복잡해지는 기업의 시스템들에서 신속하고, 유실 없는 데이터 전송은 점점 더 중요해 지고 있습니다. 빅데이터 시스템

www.popit.kr

 

Scribe

페이스북에서 개발한 데이터 수집 플랫폼
Chukwa와는 다르게 데이터를 중앙 집중 서버로 전송하는 방식.

최종 데이터는 HDFS외에 다양한 저장소를 활용할 수 있다.

설치와 구성이 쉽게 다양한 프로그램 언어를 지원.

HDFS에 저장하기 위해서는 JNI(Java Native Interface)를 이용해야 한다.

 

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

 

 

Chukwa

분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장시키는 플랫폼

분산된 각 서버에서 에이전트(agent)를 실행하고, 콜랙터(collector)가 에이전트로부터 데이터를 받아 HDFS에 저장한다. 

콜렉터는 100개의 에이전트당 하나씩 구동되며, 데이터 중복 제거 등의 작업은 MapReduce로 처리.

 

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

 


데이터 전송

 

Sqoop

대용량 데이터 전송 솔루션.

HDFS, RDBMS, DW, NoSQL등 다양한 저장소에 대용량 데이터를 신속하게 전송할 수 있는 방법을 제공.

Oracle, MS-SQL, DB2 등과 같은 상용 RDBMS와 MySQL, PostgresSQL과 같은 오픈소스 RDBMS등을 지원.

 

Sqoop -

 

 

 

Hiho

Sqoop과 같은 대용량 데이터 전송 솔루션

현재 github에서 공개되어 있다. 

하둡에서 데이터를 가져오기 위한 SQL을 지정할 수 있으며, JDBC 인터페이스를 지원.

 

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

 


작업관리기술

워크플로우 및 코디네이터 시스템

작업 관리 기술은 빅데이터를 분석하는 여러가지 단계를 효율적으로 생성, 관리하고 모니터링 할 수 있게 도와주는 기술 입니다.

 

Airflow

에어플로우

에어비앤비에서 개발한 데이터 흐름의 시각화, 스케쥴링, 모니터링이 가능한 워크플로우 플랫폼

하이브, 프레스토, DBMS 엔진과 결합하여 사용 할 수 있다.

 

Airflow: a workflow management platform

By Maxime Beauchemin

medium.com

 

Apache Airflow - Workflow 관리 도구(1)

오늘은 Workflow Management Tool인 Apache Airflow 관련 포스팅을 하려고 합니다. 이 글은 1.10.3 버전에서 작성되었습니다 최초 작성은 2018년 1월 4일이지만, 2020년 2월 9일에 글을 리뉴얼했습니다 슬라이드

zzsza.github.io

 

Azkaban

아즈카반

링크드인에서 개발한 워크플로우 관리 도구

워크플로우 스케쥴러, 시각화된 절차, 인증 및 권한 관리, 작업 모니터링 및 알람 등

 

Azkaban

Compatible with any version of Hadoop Easy to use web UI Simple web and http workflow uploads Project workspaces Scheduling of workflows Modular and pluginable Authentication and Authorization Tracking of user actions Email alerts on failure and successes

azkaban.github.io

 

Oozie

하둡의 작업을 관리하는 워크플로우 및 코디네이터 시스템
  • 자바(Java) 서블릿 컨테이너에서 실행되는 자바 웹 애플리케이션 서버
  • 맵리듀스 작업이나 Pig 작업 같은 특화된 액션들로 구성된 워크플로우를 제어
 

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

 


데이터 직렬화

빅데이터 에코 시스템이 다양한 기술과 언어로 구현되기 때문에 각 언어간에 내부 객체를 공유해야 하는 경우가 있습니다. 이를 효율적으로 처리하기 위해서 데이터 직렬화기술을 이용합니다.

 

Avro

에이브로

아파치의 하둡 프로젝트에서 개발된 원격 프로시저 호출(RPC) 및 데이터 직렬화 프레임워크

자료형과 프로토콜 정의를 위해 JSON을 사용하며 콤팩트 바이너리 포맷으로 데이터를 직렬화합니다.

 

Welcome to Apache Avro!

Welcome to Apache Avro! Apache Avro™ is a data serialization system. To learn more about Avro, please read the current documenta

avro.apache.org

 

Thrift

스리프트

페이스북에서 개발한 서로 다른 언어로 개발된 모듈의 통합을 지원하는 RPC 프레임워크

데이터 타입과 서비스 인터페이스를 선언하면, RPC 형태의 클라이언트와 서버 코드를 자동으로 생성해 줍니다. 

자바, C++, C#, Perl, PHP, 파이썬, 델파이, Erlang, Go, Node.js 등과 같이 다양한 언어를 지원합니다.

 

Apache Thrift - Home

The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haske

thrift.apache.org

 

Protocol Buffers

프로토콜 버퍼

구글에서 개발한 RPC 프레임워크이며 구조화된 데이터를 직렬화하는 방식을 제공

다양한 언어를 지원하며 특히 직렬화 속도가 빠르고 직렬화된 파일의 크기도 작아서 Apache Avro 파일 포맷과 함께 많이 사용됩니다.

 

Protocol Buffers  |  Google Developers

Protocol buffers are a language-neutral, platform-neutral extensible mechanism for serializing structured data.

developers.google.com

 


데이터 저장

빅데이터는 대용량의 데이터를 저장하기 때문에 데이터의 저장의 안정성과 속도가 중요합니다. HDFS외에도 아마존 AWS의 S3, MS Azure의 Data Lake, Blob Storage, Google의 Cloud Storage가 있습니다.

 

HDFS

하둡 분산 파일 시스템

분산 환경에서 생성되는 데이터를 HDFS에 안정적으로 저장시키는 플랫폼

분산된 각 서버에서 에이전트(agent)를 실행하고, 콜랙터(collector)가 에이전트로부터 데이터를 받아 HDFS에 저장한다. 

콜렉터는 100개의 에이전트당 하나씩 구동되며, 데이터 중복 제거 등의 작업은 MapReduce로 처리.

 

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

 

S3

아마존에서 제공하는 인터넷용 저장소

 

 

Tajo

고려대학교 정보통신대학 컴퓨터학과 DB연구실 박사 과정학생들이 주도해서 개발한 하둡 기반의 DW 시스템.

데이터 저장소는 HDFS를 사용하되, 표준DB언어인 SQL을 통해 실시간으로 데이터를 조회할 수 있습니다.

Hive보다 2 ~ 3배 빠르며, 클라우드데라의 임팔라(Impala)와는 비슷한 속도를 보여줍니다. 

임팔라가 클라우드데라의 하둡을 써야 하는 제약에 비해, 특정 업체 솔루션에 종속되지 않는 장점이 있습니다.

 

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

 


NoSQL

 

HBase

구글 Bigtable을 기반으로 개발된 비관계형 데이터베이스로 HDFS의 컬럼(Column) 기반 데이터베이스
  • 실시간 랜덤 조회 및 업데이트가 가능
  • 각각의 프로세스들은 개인의 데이터를 비동기적으로 업데이트 할 수 있다.
  • 단, MapReduce는 일괄처리 방식으로 수행된다. 
 

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

 


데이터 처리

데이터 처리는 빅데이터를 분석하는 기술입니다. 하둡의 맵리듀스를 기반으로, 스파크, 하이브, HBase, 임팔라등 여러가지 기술이 있습니다.

 

MapReduce

HDFS상에서 동작하는 가장 기본적인 분석 기술

간단한 단위작업을 반복할 때 효율적인 맵리듀스 모델을 이용하여 데이터를 분석

 

Spark

인메모리 기반의 범용 데이터 처리 플랫폼
  • 맵리듀스와 비슷한 목적의 업무를 수행하지만 하드디스크가 아닌 메모리를 활용하여 매우 빠른 속도로 데이터를 처리
  • 인 메모리(In-Memory) 캐싱, 일반 배치 프로세싱(Batch Processing), 스트리밍 분석, 머신러닝, 그래프 데이터 베이스 및 임시 쿼리 등을 지원
  • 현재 가장 빠르게 성장하고 있는 오픈소스 프로젝트 중의 하나.
 

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 질의 시스템

맵리듀스를 사용하지 않고, 자체 개발한 엔진을 사용해 빠른 성능을 보여줍니다. 

임팔라(Impala)는 데이터 조회를 위한 인터페이스로, HiveQL을 사용합니다. 

수초 내에 SQL 질의 결과를 확인할 수 있으며, HBase와도 연동이 가능합니다.

 

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

 

Presto

프레스토

페이스북이 개발한 대화형 질의를 처리하기 위한 분산 쿼리 엔진

메모리 기반으로 데이터를 처리하며, 다양한 데이터 저장소에 저장된 데이터를 SQL로 처리할 수 있습니다.

특정 질의 경우 하이브 대비 10배 정도 빠른 성능을 보여주며, 현재 오픈소스로 개발이 진행되고 있습니다.

 

Presto | Distributed SQL Query Engine for Big Data

Distributed SQL Query Engine for Big Data

prestodb.io

 

Hive

페이스북에서 만든 오픈소스로 데이터 웨어하우징 솔루션
  • SQL과 매우 유사한 HiveQL이라는 쿼리를 제공하여 자바를 잘 모르는 유저도 쉽게 하둡 데이터를 분석할 수 있다.
  • HiveQL은 내부적으로 MapReduce 잡으로 변환되어 실행된다.
 

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

 

Hcatalog

Pig, MapReduce, Spark에서 Hive 메타스토어 테이블에 액세스할 수 있는 도구

테이블을 생성하거나 기타 작업을 수행할 수 있는 REST 인터페이스 및 명령줄 클라이언트를 제공합니다.

 

HCatalog - Apache Hive - Apache Software Foundation

배너의 맨 끝으로 배너의 맨 처음으로 HCatalog 메타 데이터의 끝으로 건너뛰기 Lefty Leverenz님이 작성, 12월 16, 2018에 최종 변경 메타 데이터의 시작으로 이동 HCatalog is a table and storage management layer for

cwiki.apache.org

 

Pig

복잡한 MapReduce 프로그래밍을 대체할 Pig Latin이라는 자체 언어를 제공.

하둡에 저장된 데이터를 맵리듀스 프로그램을 만들지 않고 SQL과 유사한 스크립트를 이용하여 데이터를 처리. 

MapReduce API를 매우 단순화시키고 SQL과 유사한 형태로 설계되었다. 

 

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

 


클러스터 관리

분산 리소스 관리

빅데이터는 단일 시스템이 보다는 보통 클러스터로 처리 되기 때문에 자원의 효율적인 사용이 필요합니다. 클러스터의 관리를 위한 여러가지 기술이 있습니다.

 

YARN

작업 스케줄링 및 클러스터 리소스 관리를 위한 프레임워크

기존 하둡의 데이터 처리 프레임워크인 맵리듀스의 단점을 극복하기 위해서 시작된 프로젝트

하둡2.0부터 이용 가능.

맵리듀스, 하이브, 임팔라, 타조, 스파크 등 다양한 애플리케이션들은 얀에서 리소스를 할당받아 작업을 실행.

 

Apache Hadoop

 

Mesos

메소스

Cloud환경에 대한 리소스 관리

클라우드 인프라스트럭처 및 컴퓨팅 엔진의 다양한 자원(CPU, 메모리, 디스크)을 통합적으로 관리할 수 있도록 만든 자원 관리 프로젝트

다양한 글로벌 기업들이 메소스로 클러스터 자원을 관리

메소스는 클러스터링 환경에서 동적으로 자원을 할당하고 격리해주는 매커니즘을 제공

이를 통해 분산 환경에서 작업 실행을 최적화시킬 수 있습니다.

웹 기반의 UI, 자바, C++, 파이썬 API를 제공

하둡, 스파크(Spark), 스톰(Storm), 엘라스틱 서치(Elastic Search), 카산드라(Cassandra), 젠킨스(Jenkins) 등 다양한 애플리케이션을 메소스에서 실행할 수 있습니다.

 

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


분산서버관리

클러스터에서 여러가지 기술이 이용될 때 하나의 서버에서 모든 작업이 진행되면 이 서버가 단일실패지점(SPOF)가 됩니다. 이로 인한 리스크를 줄이기 위해 분산 서버 관리 기술을 이용합니다.

 

Zookeeper

분산 환경에서 서버들간 상호 조정이 필요한 다양한 서비스를 제공하는 시스템. 모니터링 및 관리.
  1. 하나의 서버에만 서비스가 집중되지 않도록 서비스를 알맞게 분산하여 동시에 처리하게 해줌
  2. 하나의 서버에서 처리한 결과를 다른 서버들과도 동기화 -> 데이터 안정성 보장
  3. 운영(active) 서버에서 문제가 발생해 서비스를 제공할 수 없는 경우,
    다른 대기중인 서버를 운영 서버로 바꿔 서비스가 중지없이 제공되게 해줌
  4. 분산 환경을 구성하는 서버들의 환경설정을 통합적으로 관리
 

Apache ZooKeeper

 


시각화

 

Zeppelin

제플린

한국의 NFLab이라는 회사에서 개발하여 Apache top level 프로젝트로 최근 승인 받은 오픈소스 솔루션

Notebook 이라고 하는 웹 기반 Workspace에 Spark, Tajo, Hive, ElasticSearch 등 다양한 솔루션의 API, Query 등을 실행하고 결과를 웹에 나타내는 솔루션

 

Zeppelin

SQL Zeppelin lets you connect any JDBC data sources seamlessly. Postgresql, Mysql, MariaDB, Redshift, Apache Hive and so on. USE NOW

zeppelin.apache.org

 

Hue

Hadoop User Experience; 하둡 휴

하둡과 하둡 에코시스템의 지원을 위한 웹 인터페이스를 제공하는 오픈 소스

Hive 쿼리를 실행하는 인터페이스를 제공하고, 시각화를 위한 도구를 제공합니다.

잡의 스케줄링을 위한 인터페이스와 잡, HDFS, 등 하둡을 모니터링하기 위한 인터페이스도 제공합니다.

 

GitHub - cloudera/hue: Hue Editor: Open source SQL Query Assistant for Databases/Warehouses

Hue Editor: Open source SQL Query Assistant for Databases/Warehouses - GitHub - cloudera/hue: Hue Editor: Open source SQL Query Assistant for Databases/Warehouses

github.com

 


그외

 

Mahout

하둡 기반 데이터 마이닝 알고리즘을 구현한 오픈소스

지원하는 알고리즘

  • 현재 분류(classification)
  • 클러스터링(clustering)
  • 추천 및 협업 필터링(Recommenders/Collavorative filtering)
  • 패턴 마이닝(Pattern Mining)
  • 회귀 분석(Regression)
  • 차원 리덕션(Dimension Reduction)
  • 진화 알고리즘(Evolutionary Algorithms) 등
 

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

 

 

엑셈 플라밍고 (EXEM Flamingo) - 빅데이터 통합 관리 플랫폼

(1) 개요

- 하둡 에코 시스템을 기반으로 빅데이터 플랫폼을 구축한 고객들의 경우, 다양한 오픈소스 소프트웨어를 운영하면서 발생하는 각각의 이슈를 해결하는데 상당한 어려움을 겪고 있음

- Spark, Hive, MapReduce, Kafka, HBase, HDFS, R 등 다양한 빅데이터 분석 환경에서 시스템 운영자 및 데이터 분석가는 수십 내지 수백 대의 노드(Node)를 관리해야 하기 때문에 시스템 성능 관리가 쉽지 않음. 따라서 빅데이터 분석 환경을 보다 쉽게 관리할 수 있는 통합 솔루션에 대한 니즈가 발생하기 시작

- 엑셈의 플라밍고는 빅데이터 수집부터 저장, 분석에 필요한 데이터 가공까지 손쉽게 활용할 수 있도록 돕는 플랫폼. 즉 하둡 에코 시스템에 대한 통합 관리 솔루션. 플랫폼 모니터링, 보유 데이터의 브라우징, 데이터 정제 및 처리를 위한 워크플로우 등 안정적인 운영과 활용이 가능하도록 다양한 기능을 제공

<출처: 엑셈>

<출처: 엑셈>

(2) 주요 기능

 

1) 실시간 모니터링: 하둡 성능 관리에 최적화된 모니터링 패턴 제공

2) CPU 코어 모니터링: 하나의 클러스터 공유를 통한 분석 작업 별 CPU 코어 사용량 모니터링

3) 알람/메일 연계: 주요 컴포넌트에 대한 비정상 동작 시 경보 메일 발송

4) 분석 애플리케이션 모니터링: 장애 발생 시 실행 로그를 빠르게 확인하여 문제 해결

5) 에코 시스템 관리: 서비스 상태 체크, 안정적인 운영 지원

6) Zeppelin Notebook: 단계별 쿼리 관리, 조화된 데이터의 다운로드 및 시각화 기능 제공

7) 대량 파일/디렉토리 브라우징: 수많은 디렉토리와 파일을 동시에 관리

8) 워크플로우 기능: Drag & Drop 방식으로 데이터 처리 지원

 


 

🔽 REFERENCE

 

3-빅데이터 에코시스템

빅데이터는 수집, 정제, 적재, 분석, 시각화의 여러 단계를 거칩니다. 이 단계를 거치는 동안 여러가지 기술을 이용하여 처리되고, 이 기술들을 통틀어 빅데이터 에코 시스템( ...

wikidocs.net

 

 

빅데이터 하둡 (Hadoop) 오픈소스 생태계 & 엑셈 플라밍고 플랫폼 (데이터베이스 / 분산 저장 및 처

1. 빅데이터 (Big Data) & 하둡 (Hadoop) (1) 개요 - 많은 양의 데이터를 효율적으로 분석하기 위해...

blog.naver.com