목록Data Engineering & DataOps (35)
without haste but without rest
요약 브로커 3대와 주키퍼 1대로 구성된 카프카 클러스터 도커 컴포즈 템플릿 컨테이너의 비정상적인 종료에 따른 데이터 유실을 막기 위해 오프셋 데이터와 로그 디렉토리를 호스트 볼륨에 마운팅 했다. version: "2" services: zookeeper: image: docker.io/bitnami/zookeeper:3.7 hostname: zookeeper ports: - "2181:2181" environment: - ALLOW_ANONYMOUS_LOGIN=yes volumes: - ./zookeeper/bitnami/zookeeper:/bitnami/zookeeper kafka-0: image: docker.io/bitnami/kafka:2.8.1 hostname: kafka-0 restart: ..
Spark Streaming - Spark 3.2.0 Documentation Spark Streaming Programming Guide Overview Spark Streaming is an extension of the core Spark API that enables scalable, high-throughput, fault-tolerant stream processing of live data streams. Data can be ingested from many sources like Kafka, Kinesis, or T spark.apache.org A Quick Example 특정 포트로 들어오는 텍스트를 분리해서 카운팅 하는 예제 # network_wordcount.py from pysp..
0. Flume 플럼은 로그 데이터를 효율적이고 안정적으로 수집할 수 있는 프레임워크다. 하둡 에코시스템에서 버퍼 스토리지 역할로 사용한다. 스트리밍 데이터를 카프카로 받고 HDFS에 바로 저장하면 블록이 수도없이 생긴다. 따라서 일정 크기 이상까지 데이터를 모은 뒤 HDFS에 저장해야한다. 해당 버퍼 역할을 위해 사용할 수 있는 것이 플럼이다. 1. 아키텍처 이미지 출처 플럼은 source, channel, sink 세 가지로 구성되어있다. source는 플럼이 데이터를 받아오는 곳이다. channel은 플럼 자체로 메모리 기반과 디스크 기반 중에서 선택할 수 있다. sink는 최종적으로 데이터를 전송하는 곳이다. 플럼은 위 세가지 사항을 명시한 conf 파일을 작성하여 실행한다. 2. conf 파일 ..
Hadoop: The Definitive Guide 0. Hadoop 하둡은 컴퓨터 클러스터를 구축하여 대규모 데이터 셋을 처리할 수 있는 프레임워크이다. 단일 서버에서 수천 대의 머신으로 이루어진 클러스터로 확장 가능하도록 설계되었다. 관계형 데이터베이스와의 가장 큰 차이점은 관계형 데이터베이스의 경우 상대적으로 적은 양의 데이터를 낮은 지연 시간에 처리하기 위해 데이터셋을 인덱싱하기 때문에 지속적으로 변경되는 데이터셋에 적합하다. 반면 하둡은 데이터를 한 번 저장하고 여러번 읽는 어플리케이션에 적합하다. 베이스 아파치 하둡 프레임워크는 아래 모듈을 포함한다. Hadoop Common HDFS(Hadoop Distributed File System) MapReduce YARN (Yet Another R..
0. Hive 하둡의 맵리듀스 작업을 실행하는 방법은 여러가지가 존재한다. 정형, 반정형, 비정형 데이터에 대해 자바 맵리듀스 프로그램을 사용하는 기존 방법 Pig를 사용해서 구조화된 데이터와 반구조화된 데이터를 스크립팅(절차적 언어)로 처리하는 방법 Hive를 사용해서 구조화된 데이터를 맵리듀스용 쿼리 언어인 HiveQL 사용해서 처리하는 방법 Hive는 하둡에서 구조화된 데이터를 처리하기 위한 데이터 웨어하우스 인프라 도구다. 빅데이터를 요약하고 쿼리 및 분석을 쉽게 만들어준다. 기존의 자바 기반으로 프로그램을 작성해야하는 맵리듀스를 SQL로 작성가능하다는 것이 포인트다. (분석 엔진은 현재는 Tez를 기반으로 사용하는 것으로 알고 있고, 인메모리 기반인 Presto(프레스토)도 하이브와 함께 언급되..
카프카 핵심 가이드 - 실시간 데이터와 스트림 프로세싱 아파치 카프카 애플리케이션 프로그래밍 with 자바 0. Kafka 카프카는 이벤트 기반 분산 스트리밍 플랫폼이다. 비슷한 서비스로 GCP의 Pub/Sub, AWS의 Kinesis 등이 있다. 1. Unified 카프카를 사용하면 파편화된 데이터 파이프라인을 중앙집중화된 심플한 아키텍처로 개선할 수 있다. (1). 복잡한 데이터 파이프라인 예시 이미지 원본 위 구조는 각각의 프로세스가 파편화되어있는 상태로 데이터 처리 프로세스가 추가되는 경우 점점 더 구조가 복잡해질 수 밖에 없다. (2). 중앙집중화된 데이터 파이프라인 예시 카프카를 사용하는 아키텍처는 카프카 브로커가 모든 프로세스의 매개자 역할을 하는데, 이 과정에서 아키텍처가 매우 단순해진다...
Spark: The Definitive Guide 0.Spark 스파크는 대규모 데이터 처리를 위한 인메모리 기반 분석 엔진이다. 스파크의 철학은 "빅데이터를 위한 통합 컴퓨팅 엔진"과 "라이브러리 집합"이다. 최근 반복적인 연산을 필요로하는 기계학습과 데이터 분석등이 대두되며 스파크의 인기가 많아졌다. (1) 통합 컴퓨팅 엔진 빅데이터 애플리케이션 개발에 필요한 통합 플랫폼을 제공하고자 하는 핵심 목표를 가지고 있다. 이때 간단한 데이터 읽기에서, SQL 처리, 머신러닝 그리고 스트림 처리까지 다양한 데이터 분석 작업을 같은 연산 엔진과 일관성 있는 API로 수행할 수 있도록 함을 의미한다. 스파크는 통합이라는 관점을 중시하기 때문에 기능의 범위를 컴퓨팅 엔진으로 제한해왔다. 그 결과 스파크는 저장소(..
에어플로우 로그에 시간이 안 찍혀서 최신 로그인지 감이 오지는 않는데... 로그 상에서 이미 프로세스 아이디가 존재한다는 내역을 확인했다. airflow home 디렉토리에 있는 airflow-webserver.pid, airflow-webserver-monitor.pid, airflow-scheduler.pid 파일을 제거하고 다시 실행하니까 정상적으로 실행이 된다. 에어플로우를 데몬으로 실행하고 정상적으로 종료하지 않아서, 이미 프로세스가 실행 중으로 간주되어 발생하는 이슈다. 에어플로우를 안전하게 종료하는 방법을 찾아보자.