2012-02-13 8 views
1

Cassandra에 대한 약간의 이해를 바탕으로 데이터 지역성은 노드에 액세스하는 클라이언트 응용 프로그램에 대부분 투명합니다.Cassandra 노드의 로컬 데이터에 액세스하는 방법

그러나 연결된 노드의 로컬 인 열 패밀리의 데이터에만 명시 적으로 액세스하려는 경우 어떻게해야합니까? 그런 일이 가능한가? 클라이언트 API에서이 API를 가져 오는 방법을 찾지 못했지만 시스템 테이블을 통해이 정보 중 일부를 얻을 수는 있지만이 작업을 수행하는 방법을 알 수는 없습니다. .

아이디어는 Hadoop을 사용하지 않고 mapreduce를 수행하는 것입니다. 로컬 클라이언트는 로컬 카산드라 노드에 연결하여 로컬 데이터에서 집계를 수행 한 다음 업스트림으로 다시 전달합니다.

그런 것이 가능합니까? Hadoop이 Cassandra를 사용할 수 있다는 증거를 보았으므로이 기능을 통해 보이는 것처럼 보이지만 예제는 일반 클라이언트가 아닌 Hadoop에 맞춰진 것처럼 보입니다. 로컬 클라이언트 (Casandra와 대화하는 비트)는 Java에 있습니다. 현재 Hector를 사용하고 있지만 데이터 지역 정보를 제공하는지 확신 할 수 없습니다.

+1

다음은 백업하고 목표가 무엇인지 알려주는 곳입니다. :) 모든 데이터, 지역 정보,지도/축소 또는 유사한 정보를 스캔하려는 경우 수행 할 수 있습니다. 그렇지 않으면 대부분 무작위 데이터 집합에 액세스 할 때 어떤 이점이 있는지 확실하지 않습니다. – jbellis

+0

Hadoop이 아니라는 점을 제외하고는 map/reduce 또는 유사한 것을 염두에 두었던 것이 맞습니다. Cassandra 노드마다 클라이언트가 하나씩 있으므로 각 클라이언트가 노드의 로컬 데이터에만 액세스 할 수 있어야합니다. 나는 그것이 가장 이해하기 힘들지 만 그것을 이해하기 위해 노력하고있는 맥락에서 이해합니다. – wombat

답변

2

Netflix의 recent article Techblog는 클러스터를 통해 디스크에 저장된 SSTables를 읽고 MapReduce의 일관된 단일 데이터보기로 병합하는 Aegisthus 프로젝트를 소개합니다. 그런 다음에는 단일 노드에서 데이터 뷰를 생성하는 메커니즘이 자연스럽게 존재할 것이라고 생각합니다.

불행히도, 나는 아직이 도구를 공개하지 않았기 때문에이 도구를 사용할 수 없을 것입니다. 이 시점에서 가장 좋은 점은 Cassandra가 아닌 코드를 사용하여 SSTables를 기본적으로 읽을 수 있다는 것입니다.

SSTables를 읽는 Cassandra 소스를 사용하여 무언가를 해킹하고 빌드하려는 로컬 클라이언트에 피드를 제공 할 수 있습니다. 훌륭한 출발점은 sstable2json 도구에 사용되는 org.apache.cassandra.tools.SSTableExport의 소스를 살펴 보는 것입니다.

관련 문제