본문 바로가기

전체 글

(1270)
[es] force merge https://www.elastic.co/docs/api/doc/elasticsearch/operation/operation-indices-forcemerge Force a merge | Elasticsearch API documentationAll methods and paths for this operation: POST /_forcemerge POST /{index}/_forcemerge Perform the force...www.elastic.co 먼저 엘라스틱서치의 데이터 구조는 큰 개념부터 가장 작은 단위까지 인덱스 > 샤드 > 세그먼트 > 도큐먼트 순서로 포함 관계를 가진다. 1. forcemerge하나 이상의 인덱스에 속한 샤드에 대해 강제 병합(force merge)작업을 수행할수 ..
[es] 로그가 밀리기 시작했다. Elasticsearch 클러스터에서 색인이 안 된다는 알람을 받았고 처음에는 disk 용량 부족으로 판단했다. 실제 원인은 ILM warm phase가 새벽에 발행한 forcemerge 12건이 동시에 돌면서 translog fsync와 같은 디스크에서 I/O 경합을 일으킨 것이었다. disk 89~90%는 로그가 안 쌓인 1차적인 원인으로 더 큰 문제는 IOPS 여유가 없어 모든 로그가 더 느려진게 문제가 있었다. 1. 증상알람을 받은 것은 "데이터가 안들어오는데요" 였다. 특정 인덱스만 안되는지 확인해봤지만 해당 es 서버의 모든 색인이 안 되고 있었다.모든 컨슈머가 한꺼번에 다운이? 그럴리가 없지.GET _cat/allocation?v&s=disk.percent:descshards disk.i..
[paper] Spanner: Google’s Globally-Distributed Database -1. 단어 설명상태 머신 복제(State Machine Replication)같은 초기 상태에서 시작해 같은 명령들을 같은 순서로 실행하면 항상 같은 결과 상태에 도달하는 결정적(deterministic) 시스템데이터베이스가 대표적으로 빈 DB에 "x=1 쓰기 → y=2 쓰기 → x 삭제"를 순서대로 적용하면 언제나 결과는 일치한다.Paxos: 합의(consensus) 알고리즘- 안전성: 일부 서버가 죽거나 메시지가 유실 / 지연되어도, 서로 다른 서버가 서로 다른 값에 합의하는 일은 절대 없다.- 과반수(quorum) 원리: 전체 복제본의 과반수만 살아 있으면 진행할 수 있다. 5대 중 2대가 죽어도 나머지 3대로 쓰기가 계속 되며 반드시 겹치는 서버가 하나는 있기 때문에 이전 합의 내용이 유실되지 ..
오퍼월 데이터 spark vs bigquery 리포트 작업 비교 0. 결론오퍼월 3단 퍼널 로그(노출, 클릭, 전환)로 일별 캠페인 집계 리포트를 만드는 작업에서 Spark와 BigQuery를 비교했다.결론은 이 워크로드는 BigQuery scheduled query로 유지하는 것으로 결론을 냈다. 13GB 규모에서는 Spark와 BigQuery의 1회 실행 비용이 모두 같은 자릿수를 유지 했다.Spark 변환 자체는 37.5초였지만, 실행 환경 기동에 약 90초 소요spakr 사용시 정기 집계 하나를 위해 클러스터, 의존성, 스케줄러를 추가로 운영할 필요이번 PoC는 Spark / BigQuery 같은 산출물을 두 엔진에서 구현하고 데이터 운영 비용까지 포함해 현재 조건에 맞는 엔진을 고른 작업이었다. 1. 비교 범위현재 일별 캠페인 집계는 BigQuery..
[paper] C-Store: A Column-oriented DBMS C-Store: A Column-oriented DBMShttps://web.stanford.edu/class/cs345d-01/rl/cstore.pdf0. 핵심 요약기존 DBMS는 INSERT/UPDATE를 중심으로 설계되어 있었지만, 데이터 웨어하우스는 대부분의 작업이 읽기(SELECT) 이다. 분석 데이터 베이스는 기존의 DBMS에 비해 쓰기보다 읽기가 압도적으로 많으므로 설계 방식과 다르게 다음을 방향으로 설계 되었다.- Column 단위 저장- Projection 기반 저장- 적극적인 Compression- Read Optimized Storage- Snapshot Isolation- Bitmap Index 활용1. 기존 문제점1.1 대부분의 상용 DBMS가 OLTP 중심으로 설계- Row 단위..
Task 5. Identify a specific day Task 5. Identify a specific dayBuild a query that will answer: "On what day did the total number of deaths cross 8000 in Italy?" The query should return the date in the format yyyy-mm-dd.Columns to reference:country_namecumulative_deceased WITH italy_deaths_by_date AS ( SELECT date, SUM(cumulative_deceased) AS deaths FROM `bigquery-public-data.covid19_open_data.covid19_open_data` WHE..
Kafka connect (5) - schema registry schema registry란?kafka 메시지의 스키마(필드 이름과 타입 정의)를 중앙에서 버전 관리하는 REST 서비스로 저장소로 별도 DB를 쓰지 않고 kafka 자신의 내부 토픽(_schemas)을 사용한다. kafka 브로커는 메시지를 그냥 바이트 덩어리로 취급하기 때문에 "이 토픽의 메시지가 어떤 형태여야 하는가"를 아무도 강제하지 않는다. producer와 consumer가 형태에 대한 약속을 각자 코드에 들고 있을 뿐이고 필드를 바꾸는 순간 소비 시점에야 깨진다. schema registry는 템플릿으로 정해둔 코드를 관리를 담당해준다. subject - 스키마가 등록되는 단위. 기본 전략은 {토픽이름}-value(키는 -key)라서 토픽마다 스키마가 하나씩 등록된다.스키마 ID와 버전..
Kafka connect (4) - kafka connect to gcs 파일 저장 sink 커넥터로 토픽 메시지를 parquet 파일로 만들어 GCS 버킷에 적재한다.parquet + 날짜 파티션 경로로 잘라두면 이후 spark나 BigQuery external table이 바로 읽을 수 있도록 저장한다. 1. 준비$ gcloud storage buckets create gs://uiandwe-kafka-lab --location=us 권한이 있는 서비스키로 준비 SA 키 파일을 broker 컨테이너 안으로 복사$ gcloud storage buckets add-iam-policy-binding gs://uiandwe-kafka-lab \--member="serviceAccount:kafka-sink@my-project.iam.gserviceaccount.com" \--role="..