데이터처리 (24) 썸네일형 리스트형 카프카의 내부 동작 원리와 구현 내부 동작 원리 - 리플리케이션 - 리더와 팔로워의 역할 - 리더에포크와 복구 동작 카프카 리플리케이션 고가용성 분산 스트리밍 플랫폼인 카프카는 데이터 파이프라인들의 메인 허브 역할을 하는데, 이 카프카가 문제가 생겨 전체 파이프라인에 영향을 미치면 심각한 문제가된다. 따라서 일시적인 장애가 발생하더라도 안정적이게 서비스 할 수 있게 리플리케이션 동작을 하게 됐다. 리플리케이션 동작 카프카는 브로커가 장애 나도 안정적인 서비스를 제공함. 이 리플리케이션 동작을 위해 토픽 생성시 replication factor 옵션 설정 어떻게 동작을 하는지 알아보자. 예제에서는 토픽을 하나 생성하고, (파티션 1, 리플리케이션 팩터 3) describe 로 상세보기를 했다. 그럼 파티션 0에 리더는 브로커1, 리플리케.. [실전 카프카 개발부터 운영까지] 카프카 기본 개념과 구조 카프카의 기본 개념과 구조를 보고, 카프카의 처리량을 높이기 위해 설계된 분산 시스템, 페이지 캐시, 배치 전송을 본 후 주키퍼 역할도 봐보자. - 카프카 기본 개념 구조 - 분산 시스템 - 페이지 캐시 - 배치 전송 리플리케이션 각 메시지들을 복제해서 클러스터내 브로커들에 분산시킨다. 브로커가 하나 종료 되더라도 안전하게 유지 가능. --partition 1, --replication-factor 3 replication-factor 는 몇개의 리플리케이션을 유지할지 의미다. 3이면 원본을 포함한 복제본이 3개가 있다는 뜻. (토픽의 파티션이 복제되는것.) 복제 수가 크면 안전하긴 하지만, 리소스를 많이 사용한다. 3일 경우가 꽤 안정적이었다. 파티션 하나의 토픽이 한번에 처리할수있는 한계 때문에 하나.. elasticsearch 성능 극대화 성능 극대화 엘라스틱 서치의 성능을 극대화 할 수 있도록 설정 하는 방법에 대해 봐보자 어플리케이션 복잡도 다수의 요청을 하나의 HTTP 요청으로 그룹화 하는지 알아보자 네트워크 오버헤드를 없애서 아주 좋은 성능 향상을 기대 할 수 있다. 색인(추가)과 검색 중 어느것에 초점을 맞출지 루씬 세그먼트를 어떻게 관리해서 살펴보자 refresh, flush, merge 등 설정이 어떻게 동작하고 이것들이 검색과 색인 성능에 어떻게 영향을 미치는지 봐보자 메모리 엘라스틱서치의 캐싱을 이용해서 성능을 좋게 할 수 있다. 필터캐시, 샤드 쿼리 캐시등을 봐보자 준비 되지 않은 캐시에 검색 요청이 너무 느리다면, 워머를 통해 백그라운드에서 미리 실행을 시켜 캐시를 준비해둘수도있다. 요청을 그룹화하기 네트워크 오버헤드를.. elasticsearch 데이터 검색 & 분석 엘라스틱서치 검색 엘라스틱서치는 루씬 검색 기능을 사용해서 데이터를 검색할 수 있는 풍부한 API 를 제공한다. REST API 검색 요청은 노드에 보내지고 검색요청을 모든 샤드에 보내진다. 모든 샤드에서 충분한 정보를 수집한 후 반환될 도큐먼트가 포함된 샤드만 내용을 반환하도록 요청받는다. 검색 범위 지정하기 전체 클러스터로 검색하지 않고 검색요청에 색인을 포함해서 쿼리를 제한하는게 좋다. 해당 색인의 샤드에만 요청을 보낼 수 있다. 검색 요청의 기본 구성 요소 색인을 설정했다면 검색 요청에 중요한 구성요소들을 설정해야 한다. 구성요소는 반환할 도큐먼트 개수를 제어하고 최적의 도큐먼트를 선택해서 결과를 도출한다. query- 검색 요청에 있어 가장 중요한 요소. 점수 기반으로 최적의 도큐먼트를 반환하거.. elasticsearch 소개 엘라스틱 서치? 데이터 검색을 위해서는 검색 결과를 내놓고, 통계를 제공하고, 빠른 처리 속도가 필요한데, 이런 경우엔 엘라스틱서치 같은 검색엔진을 사용하는게 적합하다. 엘라스틱서치는 실시간 검색을 제공하고 집계 기능을 제공하고 시스템 확장에도 용이하다. 엘라스틱 서치는 Apache Lucene 을 기반으로 만들어졌는데 루씬에서 역색인을 제공해준다. 역색인은 각 단어가 어느 문서에 있는지 목록을 만들어 유지하는 자료구조인데 이 역색인을 통해 데이터 검색을 빠르게 할 수 있다. 엘라스틱 서치는 데이터를 색인 하고 검색 하는 루씬의 기능들을 사용한다. 색인 - 어떻게 문서를 처리하고 저장할지 검색 - 여러 질의와 필터들 선택 엘라스틱서치는 REST API 로 기능을 제공하고 JSON 으로 질의한다. 루씬이 .. 데이터 소스 스파크의 핵심 데이터 소스가 있다. CSV JSON 파케이 ORC JDBC/ODBC 연결 일반 텍스트 파일 이외에 커뮤니티에서 만든 많은 데이터소스가 있다. 카산드라 HBase 등등 데이터 소스 API의 구조 - 읽기 API 구조 데이터 읽기의 핵심 구조는 다음과 같다. DataFrameReader.format().option().schema().load() format은 선택적으로 사용할수있고 , 기본값은 파케이다 option 메서드를 사용해 데이터를 읽는 방법에 대한 파라미터를 키, 값 으로 설정 할 수 있다. schema 메서드는 스키마를 제공할때 사용 - 쓰기 API 구조 DataFrameWriter.format().option().partitionBy().bucketBy().sortBy().sa.. 구조적 API 기본 연산 DataFrame 은 Row 타입의 레코드와 여러 컬럼으로 구성된다. 스키마는 각 컬럼명과 데이터 타입을 정의 한다. DataFrame 의 파티셔닝은 DataFrame 이 클러스터에서 물리적으로 배치 되는 형태를 정의한다. 파티셔닝 스키마는 파티션을 배치하는 방법을 정의함 - 스키마 스키마는 여러개의 StructFiedld 타입 필드로 구성된 StructType 객체다 스키마를 StructType 으로 직접 정의할 수 있는데, 스키마의 데이터 타입과 데이터가 일치하지 않으면 런타임에서 에러를 발생시킨다. 스파크는 자체 데이터 타입을 사용하므로 프로그래밍 언어의 데이터 타입을 스파크의 데이터 타입으로 설정 할 수 없다. - 표현식으로 컬럼 표현 표현식은 DataFrame 레코드의 여러 값에 대한 트랜스포메.. 구조적 API 구조적 API는 데이터 흐름을 정의하는 기본 추상화 개념 다양한 유형의 데이터를 처리 할 수 있다. 비정형적인 로그 파일 반 정형적인 CSV 파일 정형적인 파케이 파일 구조적 API 의 종류 Dataset DataFrame SQL 테이블과 뷰 DataFrame 과 Dateset DataFrame 과 Dataset 은 잘 정의된 로우와 컬럼을 가지는 분산 테이블 형태의 컬렉션이다 지연 연산의 실행 계획이며, 불변성을 가진다. DataFrame에 액션을 호출하면 스파크는 트랜스포메이션을 실행하고 결과를 반환한다. DataFrame 은 '비타입형' 이고 Dataset 은 '타입형' 이다. 정확히는 DataFrame 은 타입 일치 여부를 런타임 이 되어서야 확인 할 수 있다. Dataset 은 컴파일 단계에서 .. 이전 1 2 3 다음