빅데이터 (7) 썸네일형 리스트형 Druid 정리(5) 쿼리Aggregation Queries· Timeseries· TopN· GroupBy Metadata Queries· Time Boundary· Segment Metadata· Datasource Metadata Search Queries· Search 어떤 쿼리를 사용해야 하나?· GroupBy 대신에 Timeseries나 TopN을 사용하는 것을 추천한다.· GroupBy는 드루이드에서 가장 유연하지만 가장 성능이 낮다.· Timeseries는 GroupBy보다 분명히 빠르다.( 디멘전을 그룹핑해서 요청하는 집계가 아닐 경우)· 싱글 디멘전에서 그룹핑과 정렬은 TopN 쿼리가 GroupBy보다 더 최적화돼있다. 집계 쿼리 사용은 결론적으로..· 그룹핑 없이 전체 소스에 필터링, 집계, 정렬을 할 경.. Druid 정리(4) 조인· 드루이드는 쿼리타임 룩업을 통해 제한된 조인을 지원한다.· 쿼리타임 룩업의 흔한 사용 케이스는 한 디멘전의 값을 또 다른 값으로 교체하는 것이다.· 이것은 star-schema 조인과 유사하다.· 드루이드는 아직 조인을 완벽하게 지원하지 않는다.· 비록 드루이드의 저장 포멧이 조인의 구현을 허락할지라도 아직 다음의 이유 때문에 조인을 완벽하게 서포트하지 않는다. · 조인 쿼리의 확장은 분산 데이터베이스 작업의 지속적인 병목 현상이다. · 기능의 점진적인 향상은 동시 처리가 많이 걸린 작업 부하를 관리 할 때 예상되는 문제보다 가치가 떨어지는 것으로 인식된다.· 조인 쿼리는 본질적으로 공유 키 집합을 기반으로 하는 두 개 이상의 데이터 스트림을 병합한다.· 조인 쿼리를 위한 주요한 고레벨 전략은 해.. Druid 정리(3) 스키마 변경· 데이터 소스의 스키마는 언제나 변할 수 있고 드루이드는 세그먼트 사이에 다른 스키마를 지원한다. 세그먼트 교체· 드루이드는 데이터소스, 간격, 버전, 파티션 넘버등을 사용하여 유니크하게 세그먼트를 구분한다.· 만약 시간 간격(granularity)에 여러 세그먼트가 있을 경우 파티션 넘버는 오직 세거먼트 아이디에서만 보인다.· 예를 들어 만약 hourly 세그먼트를 가지고 있을 경우 한 세그먼트보다 한 시간 안에 더 많은 데이터를 가질 수 있다.· 같은 hour에 여러 세그먼트를 만들 수 있다.· 이 세그먼트들은 같은 데이터소스, 간격, 버전을 공유하지만 선형적으로 증가하는 파티션 넘버를 가진다.· 나중에 어느 시점에서 새 스키마로 데이터를 다시 색인화하면 새로 작성된 세그먼트의 버전 ID.. Druid 정리(1) 주요기능 · 컬럼너 저장 포멧 · 확장형 분산 시스템 · 대용량 병렬 처리 · 실시간 또는 일괄 처리 · 자기 치유, 자기 균형 조정 · 내결함성 아키텍처 · 빠른 필터링을위한 인덱스 · 근사치 알고리즘 · ingest time에 자동 집계 드루이드를 쓰면 좋을 때 · 데이터 적재를 많이 하지만 업데이트가 적을 때 · 대부분의 쿼리가 집계(group by), 검색, 스캔인 경우 · 응답속도를 100ms 이하로 잡고 싶은 경우 · 둘 이상의 테이블이 있는 경우 쿼리는 큰 테이블을 조회하고 작은 테이블을 lookup 함 · 높은 카디널리티 데이터(URLs, user Ids)를 가지고 빠르게 카운팅, 랭킹을 구해야 하는 경우 · kafka, HDFS, s3등과 같은 저장소에서 데이터를 로드하고 싶은 경우 드루.. [kafka] topic이 delete가 되지 않을 경우 해결법 kafka에서 토픽을 삭제하는 방법은 아래와 같다. 먼저 server.properties에 다음 옵션을 추가해야 한다. delete.topic.enable = true 그리고 아래의 명령어를 실행하면 해당 토픽이 marked되고 일정 시간 후에 전체 클러스터에 토픽이 삭제되게 된다. bin/kafka-topics.sh --delete --zookeeper --topic 하지만 UnknownTopicOrPartitionException 같은 에러가 발생하면서 주키퍼에서까지 지워졌던 토픽이 다른 노드에 의해 복구되어 삭제가 되지 않는 경우가 있다. 이런 경우는 카프카 클러스터를 재시작할 때 원할하게 실행되지 않은 경우 발생하여 전체 클러스터를 다시 시작해도 지속적으로 발생하게 된다. :org.apache.k.. [spark] json 형태의 문자열을 dataframe으로 변환하는 방법 spark에서 json 파일을 읽어 dataframe 형태로 만들면 별도의 파싱 과정을 직접할 필요 없이 구조화된 데이터로 만들어 주기 때문에 굉장히 편리하게 개발을 할 수 있다. val df = sqlContext.read.json("file.json") 때로는 json이 파일 형태로 존재하지 않고 데이터 처리과정에서 json 형태의 문자열을 dataframe으로 변환해야 할 경우가 있는데 sc.read.json 메소드는 문자열을 인자로 받지 않는다. 그래서 특정 string 변수에 json 형태의 문자열이 존재할 경우 dataframe으로 변환하는 방법을 알아보겠다. 방법은 단순하다. 문자열을 Seq 형태로 만들고 parallelize 메소드를 이용해서 rdd 형태로 변환하면 dataframe으로 변.. Apache Kafka 정리 Apache Kafka 1. 소개 kafka는 링크드인에서 개발한 발행-구독 방식의 고성능 분산 메시징 시스템입니다.kafka는 크게 topic과 메시지를 관리하는 broker, 메시지를 전송하는 producer, 그리고 메시지를 소비하는 consumer로 이루어져 있습니다. 일반 메시징 시스템의 경우 메시지를 메모리에 저장하는 경우가 많은 반면 kafka의 경우 메시지를 파일에 저장하여 메시지의 영속성이 높으며 그러면서도 OS의 페이지 캐시와 zero copy 기법 그리고 async non blocking io를 이용하여 기존 메시징 시스템보다도 고성능을 구현하였습니다.또한 아키텍쳐 자체가 분산 시스템을 목표로 개발되었기 때문에 확장 또한 매우 손쉽게 할 수 있습니다. 예) activemq, kafka.. 이전 1 다음