본문 바로가기

Development/Data Engineering12

[Apache Spark] 스파크의 구조와 실행흐름 이해하기 스파크 애플리케이션의 구조 스파크를 사용하면서 잊지 말아야 하는 점은 데이터는 항상 분산되어 있고 같은 연산을 하더라도 여러 노드에서 작업한다는 점이다. [스파크 구조 설명] 스파크는 작업을 관리하는 드라이버 프로그램과 작업이 실제로 작동되는 워커 노드로 나뉘어 있다. 그리고 중간은 클러스터 매니저가 존재하는데 클러스터 매니저는 드라이버 프로그램과 워커노드를 연결시켜주는 중간다리 역할을 한다. [용어 설명] Driver Program : 개발자가 상호작용 할 수 있는 노드이다. main함수를 실행하고 스파크 Context를 생성한다. Spark Context : 새로운 RDD를 생성하고, 클러스터 매니저와 연결되는 객체이다. Cluster Manager : 드라이버에서 지시받은 작업(리소스)의 스케쥴링과.. 2022. 3. 30.
분산처리의 문제점 분산처리중 신경써야하는 문제점 1. 부분 실패 - 노드 몇개가 프로그램과 상관 없는 이유로 인해 실패 => RDD의 불변한 성질을 이용해 복구가 가능함 => 스파크 내부에서 일어나는 과정이라 크게 신경쓰지 않아도 됨. 2. 속도★ - 많은 네트워크 통신을 필요로 하는 작업은 속도가 저하 => 네트워크 통신을 필요로 하는 코드를 후순위에 두고 작성해야한다. => 네트워크는 메모리 연산에 비해 100만배 정도 느리다. 참고 이미지 2022. 3. 23.
[Apache Spark] 아파치 스파크 배경, 그리고 이해 빅 데이터를 다루기 위해 만들어진 아파치 스파크 아파치 스파크의 배경, 이해 아파치 스파크는 "빅데이터 분산 처리 엔진" 혹은 "빅데이터 오픈소스 분산 처리 플랫폼" 구체적으로는 "인메모리 기반 대용량 데이터 고속 처리 엔진으로 범용 분산 클러스터 컴퓨팅 프레임워크" 이렇게 이해되고 있다. 처음 빅데이터의 개념이 등장했을때 빅데이터 처리는 분산형 파일 시스템을 기반으로 만들어진 하둡(HDFS) 에코시스템이 대세를 이루었다. 그러나 현재는 빅데이터 처리를 실시간으로 필요한 서비스가 늘어나면서 DISK I/O 기반인 하둡이 아닌 인 메모리상에 동작하는 Spark가 주목받기 시작했고, 이제는 빅데이터에서 없어서는 안될 중요한 프레임워크가 되었다. 디스크 블록에서 처리하는게 아닌 인메모리상에서 동작하는 스파크는.. 2022. 3. 22.
병렬처리와 분산처리 병렬처리란? 데이터를 여러개로 쪼개고 여러 쓰레드에서 각자 task를 적용한다. 각자 만든 결과값을 합치는 과정 분산된 환경에서의 병렬처리? 데이터를 여러개로 쪼개서 여러 노드로 분산한다. 여러 노드에서 각자 독립적으로 task를 적용한다. 각자 만든 결과값을 합친다. but 노드간 분산처리의 경우 노드간 통신같이 신경써야 될 것이 늘어나는데 Spark를 이용하면 분산된 환경에서도 일반적인 병렬 처리를 하듯 코드를 짜는게 가능하다. Spark는 분산된 환경에서 데이터를 병렬 모델로 구현해 추상화 시켜주기 때문이다. = RDD RDD.map() * 노드간 통신에 걸리는 지연시간을 주의하며 코드를 작성해야 한다. 2022. 3. 18.
[Apache Kafka] 아파치 카프카란 본 내용은 아래 글들에서 읽고 정리한 것입니다. https://www.redhat.com/ko/topics/integration/what-is-apache-kafka https://kouzie.github.io/kafka/%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4/# 아파치 카프카란? 아파치 카프카는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산 데이터 스트리밍 플랫폼이다. 카프카는 초당 수백만 개의 데이터 포인트를 처리할 수 있어서 여러 소스에서 데이터 스트림을 처리하고, 여러 사용자에게 전달하도록 설계되었다. 여기서 여러 사용자는 데이터 처리가 필요한 어느 곳이든 해당 될 수 있다. 아파치 카프카는 시스템 또는 애플리케이.. 2022. 1. 5.
데이터 파이프라인의 흐름 컴퓨터 과학에서 파이프라인은 한 데이터 처리 단계의 출력이 다음 단계의 입력으로 이어지는 형태로 연결된 구조를 가리킨다. 데이터 파이프라인의 기본적인 흐름 필요 데이터 요구사항 확인, 어떤 데이터를 수집할지 선정 데이터가 왜 필요한지, 어느 시점에 수집 할 지 있는지 파악 데이터 파이프라인을 구축하기 전에 어떤 데이터를 수집해야 하는지목적과 방향을 정하는 것 데이터 수집 데이터 전처리 저장 데이터 시각화 분석 데이터 파이프라인 아키택쳐 아키택쳐 만드는 툴을 이용해 처음으로 만들어봤는데 여간 힘든게 아니다... 하지말까.. 아키택쳐에서 쓰이는 서비스들은 따로 공부하면서 업로드 할 예정이다. 데이터 파이프 라인 구성 방안 파이프라인을 설계하기 앞서 고려해야하는 사항 회사내의 데이터적 요구사항에 대한 빠른대응.. 2021. 12. 29.