전체 글
150Streaming이란?데이터가 생성되는 즉시 클러스터로 전달되어 처리하는 방식으로 기존 배치 처리와 대비되는 개념배치처리는 이미 저장된 과거 데이터에 대해 주기적 처리스트리밍은 실시간으로 들어오는 데이터를 끊임없이 처리현대의 경우 데이터가 연속적으로, 대량으로, 빠르게 생성됨ex) 웹 서버 로그, IoT 센서 데이터, 주식 체결저장 후 나중에 처리하면 지연 발생하여 즉각적인 대응이 필요한 경우 존재Streaming의 주안점1.데이터를 어떻게 클러스터로 가져올 것인가웹 서버 수백 대 존재하고, 센서는 수천~수만 개가 있어 수많은 소스 존재따라서 높은 처리량(throughput), 장애 허용(fault tolerance), 확장성(scalability)을 고려해야함이 문제를 해결하는 대표적 도구: Apach..
Spark Streaming실시간으로 들어오는 스트리밍 데이터를 아주 작은 배치로 나누어 Spark에서 처리하는 기술기존 Spark의 RDD 기반 분산 처리를 그대로 활용로그나 센서데이터가 계속 들어오면 일정 시간마다 데이터 수집하고 수집된 데이터로 RDD를 생성이때 RDD에 map, reduce, join을 수행해 결과를 매 배치마다 출력 또는 저장구성 요소Batch Interval: RDD 생성 주기DStream: 시간별 RDD들의 연속Window: 여러 배치를 묶어 처리하는 시간 구간State: 누적 합, 세션 등 상태 유지 가능 Spark Streaming을 사용 하는 이유로그, 센서, 거래 데이터는 지속적으로 발생하는데 하루 1회 배치처리한다면 실시간 반응 불가능 따라서 실시간 분석 필요웹 로그..
Apache Zeppelin웹 기반 인터랙티브 노트북 도구로 Jupyter Notebook과 유사한 개념코드 실행과 Markdown, 결과 시각화를 한 화면에서 관리 가능함노트북 단위 실험 환경 제공하여 셀에 스크립트와 쿼리를 입력하여 즉시 실행 결과 확인 가능하여 데이터 탐색, 실험, 분석에 최적화문서와 코드를 결합하여 쓸 수 있어 코드 사이에 설명, 수식, 결과 해석 삽입 가능Apache Spark 연동spark-shell처럼 즉시 실행 가능함Spark SQL 직접 실행 가능해 SQL 쿼리로 대규모 데이터 탐색 가능그리고 쿼리 결과를 차트와 그래프로 바로 변환 가능하여 데이터 사이언스 도구처럼 사용 가능함http://localhost:9995/#/ 으로 접속하면 아래와 같이 Zeppelin에 접속할 ..
OozieHadoop 클러스터에서 작업을 실행, 스케줄링, 의존성 관리해주는 워크플로우 엔진여러 Hadoop 작업을 묶어서 한 번에 돌리고, 흐름도 관리하는 역할을 함Workflow여러 단계로 구성된 Hadoop Job 묶음ex) Sqoop로 적재 → Hive로 가공 → MR로 집계 → DistCp로 백업..Workflow 구조는 DAG로 방향이 있고, 사이클이 없음그리고 서로 의존성이 없는 액션들의 경우 병렬 실행이 가능함 # Oozie workflow.xml # Sqoop 작업과 Pig 작업을 동시에 실행 # Sqoop 작업 실행 … sqoopconfiguration here … ..
ZooKeeper분산 코디네이션 서비스로 클러스터 전체에서 동기화되어야 하는 상태 정보 관리 역할을 하고, 애플리케이션이 부분 장애복구하도록 돕는 도구ZooKeeper가 관리하는 핵심 정보 - 현재 마스터 노드가 누구인지 - 어떤 작업이 어떤 워커에 할당되어 있는지 - 현재 살아있는 워커 목록 이를 통해 모든 노드가 같은 내용을 보게 만드는 역할만약 각 노드가 자신을 기준으로 판단하면 일관성에 문제가 생기기 때문에 ZooKeeper를 통해 상태를 중앙에서 합의 하도록 강제함ZooKeeper를 사용하는 시스템HBase (RegionServer, Master HA)HA MapReduceApache DrillStormFailure Modes (장애 유형별 처리)1. 마스터 장애기존 마스터 다운 발생한 경우 Z..
YARN (Yet Another Resource Negotiator)Hadoop 클러스터에서 CPU 같은 컴퓨팅 자원을 배분하고, 각 작업을 어디서 동작할지 조율하는 운영체제 같은 계층이다. Hadoop1의 문제점Hadoop1은 MapReduce가 클러스터 자원 관리, 작업 실행, 장애 처리와 같은 많은 작업 수행 - MapReduce만 가능: 클러스터 자원 관리가 MapReduce 내부에 묶여 있어 Spark/Tez 같은 다른 엔진을 얹기 어려움 - 확장성/유연성 한계: 자원 모델이 map slot / reduce slot 중심이라, 실제로는 CPU 자원이 남아도는데 slot이 없어서 못 돌리는 문제 발생Hadoop 2 + YARN클러스터 자원 관리를 MapReduce에서 분리하여 YARN 위에 Map..
Apache Drill스키마가 없는 데이터 위에서도 실제 SQL을 실행할 수 있게 해주는 쿼리 엔진*쿼리 엔진: 데이터를 저장하지 않고, 쿼리를 실행해서 결과만 반환하는 시스템 특징 - SQL 엔진: SQL-like가 아니라 진짜 SQL 엔진이기 때문에 표준 SQL을 지원하여 SQL에서 사용하는 문법을 그대로 사용할 수 있다. - ODBC / JDBC 드라이버 제공: 외부 BI 도구가 SQL 문자열을 던질 수 있게 하여 애플리케이션이 일반적인 관계형 데이터베이스처럼 연결 가능하다.하지만 실제로는 관계형 DB가 아니기 때문에 Drill 자체는 데이터를 저장하지 않고, 내부적으로 데이터는 고정 스키마 없이 JSON 기반 표현을 사용해 고정 스키마 없이 동적으로 레코드를 표현한다. - ETL 없이 바로 SQ..
MongoDBMongoDB는 JSON 형태의 문서를 저장하는 NoSQL 데이터베이스로 테이블 행 구조가 아니라 유연한 문서 구조를 사용MongoDB는 가용성(Availability) 보다 연속성(Continuity)을 상대적으로 중시한 CP 시스템이다Single-master와 Replica Set 구조를 사용해 네트워크 분할 시 Primary 기준 일관성 유지하여 일시적 write 불가상태가 가능하다Schema-flexibleRDB처럼 고정된 테이블 구조가 없어 문서마다 필드가 달라도 됨단일 primary key 강제하지 않고 임의 필드에 index(복합 인덱스) 생성 가능하다이때 Sharding을 하려면 shard key가 반드시 index여야 한다장점데이터 구조 변경이 매우 쉬움JSON 기반이여서 로..