복붙노트

[HADOOP] 수백만 개의 레코드를 실시간으로 쿼리 / 수집 - hadoop? hbase? 카산드라?

HADOOP

수백만 개의 레코드를 실시간으로 쿼리 / 수집 - hadoop? hbase? 카산드라?

병렬화 할 수있는 솔루션이 있지만 hadoop / nosql에 대한 경험이 없으며 어느 솔루션이 내 요구에 가장 적합한 지 잘 모릅니다. 이론 상으로는 무제한의 CPU가 있다면 결과는 즉각적으로 되돌아 와야합니다. 그래서, 어떤 도움을 주시면 감사하겠습니다. 감사!

여기에 내가 가지고있는 것이있다.

집계 된 값을 사전 계산할 수는 없지만 각 키는 독립적이므로 쉽게 확장 할 수 있어야합니다. 현재, 나는 각 데이터 세트가 자신의 파티션에있는 포스트 그레스 데이터베이스에이 데이터를 가지고있다.

개념의 증거로서 나는 hadoop를 시험해 보았다 :

내 원유 개념 증명에서 볼 때 이것이 잘 확장 될 것입니다. 그러나 hadoop / hdfs에는 일반적으로 실시간 쿼리에 사용되지 않는 지연 시간이 있습니다 (결과를 반환해도 괜찮습니다. 5 초 후에 사용자에게 다시).

이 접근 방식에 대한 제안? HBase에 대한 느낌을 얻기 위해 다음 번에 시도 할 생각이었습니다. 하이브를 대신 봐야합니까? 카산드라? 볼드모트?

감사!

해결법

  1. ==============================

    1.하이브 또는 돼지는 그들이 당신을 도울 것처럼 보이지 않습니다. 본질적으로 그것들은 하나 이상의 map / reduce 작업으로 컴파일되므로 응답은 5 초 이내에있을 수 없습니다

    하이브 또는 돼지는 그들이 당신을 도울 것처럼 보이지 않습니다. 본질적으로 그것들은 하나 이상의 map / reduce 작업으로 컴파일되므로 응답은 5 초 이내에있을 수 없습니다

    인프라가 최적의 성능을 위해 약간 작지만 HBase가 작동 할 수 있습니다. 각 열의 요약 통계를 미리 계산할 수없는 이유를 이해할 수 없습니다. 당신은 무거운 체중 감소를 할 필요가 없도록 계산 실행 평균을 찾아야합니다.

    http://en.wikipedia.org/wiki/Standard_deviation을 확인하십시오.

    stddev (X) = sqrt (E [X ^ 2] - (E [X]) ^ 2)

    이것은 당신이 AB의 stddev를 얻을 수 있다는 것을 의미합니다.

    sqrt (E [AB ^ 2] - (E [AB]) ^ 2). E [AB ^ 2]는 (합 (A ^ 2) + 합 (B ^ 2)) / (| A | + | B |)

  2. ==============================

    2.귀하의 데이터가 꽤 동질적인 것 같기 때문에 Google BigQuery를 살펴 보겠습니다. MapReduce 단계없이 데이터를 수집하고 분석 할 수 있으며 RESTful API를 사용하면 당신의 질문. 실제로 응용 프로그램을 어떻게 디자인 하느냐에 따라 상당히 실시간 응용 프로그램을 만들 수 있습니다.

    귀하의 데이터가 꽤 동질적인 것 같기 때문에 Google BigQuery를 살펴 보겠습니다. MapReduce 단계없이 데이터를 수집하고 분석 할 수 있으며 RESTful API를 사용하면 당신의 질문. 실제로 응용 프로그램을 어떻게 디자인 하느냐에 따라 상당히 실시간 응용 프로그램을 만들 수 있습니다.

  3. ==============================

    3.오픈 소스 공간에서 좋은 해결책을 찾지 못하면 심각한 문제입니다. 상업 공간에서 greenplum / netezza와 같은 MPP 데이터베이스가 수행해야합니다. 이상적으로 Google의 Dremel (BigQuery 뒤에있는 엔진)이 필요합니다. 우리는 오픈 소스 클론을 개발하고 있지만 시간이 좀 걸릴 것입니다 ... 사용 된 엔진에 관계없이 솔루션에는 메모리에 전체 데이터 세트를 포함시키는 것이 포함되어야한다고 생각합니다. 필요한 클러스터 크기를 알려줘야합니다.

    오픈 소스 공간에서 좋은 해결책을 찾지 못하면 심각한 문제입니다. 상업 공간에서 greenplum / netezza와 같은 MPP 데이터베이스가 수행해야합니다. 이상적으로 Google의 Dremel (BigQuery 뒤에있는 엔진)이 필요합니다. 우리는 오픈 소스 클론을 개발하고 있지만 시간이 좀 걸릴 것입니다 ... 사용 된 엔진에 관계없이 솔루션에는 메모리에 전체 데이터 세트를 포함시키는 것이 포함되어야한다고 생각합니다. 필요한 클러스터 크기를 알려줘야합니다.

  4. ==============================

    4.귀하를 올바르게 이해하고 한 번에 하나의 열에 만 집계하면됩니다. 더 나은 결과를 위해 데이터를 다르게 저장할 수 있습니다. HBase에서 뭔가 보일 겁니다. 현재 설정의 데이터 당 테이블 열과 필터링 필드의 다른 단일 테이블 (type_ids) 행을 사용하면 효율적인 필터링을 위해 필터 필드를 키에 통합하는 방법을 생각해 볼 수 있습니다. 그렇지 않으면 2 단계 읽기 ( 오늘 설정 (예 : 수천 개의 열)에서 각 표에 대한 열 HBase는 새로운 열을 추가하면 상관 없으며, 존재하지 않는 열에 대해서는 데이터를 저장하지 않는다는 의미에서 희소식입니다. 행을 읽으면 평균을 할 수있는 모든 관련 가치를 얻을 수 있습니다. 아주 쉽게

    귀하를 올바르게 이해하고 한 번에 하나의 열에 만 집계하면됩니다. 더 나은 결과를 위해 데이터를 다르게 저장할 수 있습니다. HBase에서 뭔가 보일 겁니다. 현재 설정의 데이터 당 테이블 열과 필터링 필드의 다른 단일 테이블 (type_ids) 행을 사용하면 효율적인 필터링을 위해 필터 필드를 키에 통합하는 방법을 생각해 볼 수 있습니다. 그렇지 않으면 2 단계 읽기 ( 오늘 설정 (예 : 수천 개의 열)에서 각 표에 대한 열 HBase는 새로운 열을 추가하면 상관 없으며, 존재하지 않는 열에 대해서는 데이터를 저장하지 않는다는 의미에서 희소식입니다. 행을 읽으면 평균을 할 수있는 모든 관련 가치를 얻을 수 있습니다. 아주 쉽게

  5. ==============================

    5.이 경우 일반 오래된 데이터베이스를 사용할 수 있습니다. 거래 시스템이있는 것 같지 않습니다. 결과적으로 하나 또는 두 개의 대형 테이블을 사용할 수 있습니다. SQL은 대형 데이터에 조인 할 필요가있을 때 문제점이 있습니다. 그러나 귀하의 데이터 세트가 귀하가 가입해야하는 것처럼 들리지 않으므로 귀하는 괜찮을 것입니다. 데이터 세트를 찾기 위해 인덱스를 설정할 수 있으며, SQL 또는 app 수학에서 찾을 수 있습니다.

    이 경우 일반 오래된 데이터베이스를 사용할 수 있습니다. 거래 시스템이있는 것 같지 않습니다. 결과적으로 하나 또는 두 개의 대형 테이블을 사용할 수 있습니다. SQL은 대형 데이터에 조인 할 필요가있을 때 문제점이 있습니다. 그러나 귀하의 데이터 세트가 귀하가 가입해야하는 것처럼 들리지 않으므로 귀하는 괜찮을 것입니다. 데이터 세트를 찾기 위해 인덱스를 설정할 수 있으며, SQL 또는 app 수학에서 찾을 수 있습니다.

  6. from https://stackoverflow.com/questions/6833892/realtime-querying-aggregating-millions-of-records-hadoop-hbase-cassandra by cc-by-sa and MIT license