데이터 흐름의 관점에서 MapReduce와 HBase의 조합을 보면 제 문제가 적합하다고 보입니다. 지도, 결합 및 축소하려는 많은 문서 집합이 있습니다. 필자가 이전에 사용한 SQL 구현은 작업을 일괄 작업으로 분할하여 Map의 결과가 될 테이블을 누적 적으로 저장 한 다음 그와 동일한 작업을 수행하는 것이 었습니다. 이것은 실행 중 (또는 실행 사이의) 어느 시점에서나 그 시점에서 Map의 결과를 얻는 이점이있었습니다.Hadoop MapReduce에서지도 애플리케이션 캐싱?
이 작업을 MapReduce로 실행하면 매번 Map 함수가 모두 실행되어야합니다.
내지도 함수 (실제로 모든 함수)는 항상 주어진 입력에 대해 동일한 출력을 제공합니다. 필연적으로 출력을 다시 계산할 필요가 없습니다. 필자의 입력 (문서 세트)은 지속적으로 증가 할 것이며 MapReduce 작업을 데이터를 통해 주기적으로 실행할 것입니다. 실행 사이에 새로 추가 된 문서의 Map 함수를 계산해야합니다.
내 데이터는 아마도 HBase -> MapReduce -> HBase 일 것입니다. Hadoop이 전체 생태계라는 점을 감안할 때 주어진 함수가 주어진 ID로 행에 적용되었음을 알 수 있습니다. HBase 테이블에 변경 불가능한 항목이 있다고 가정합니다. Hadoop이 이것을 고려할 수 있습니까?
문서 (특히 Cloudera 비디오)를 통해 (잠재적으로 중복되는 데이터의) 재 계산이 Hadoop이 사용되는 문제 클래스를 지속하고 검색하는 것보다 빠를 수 있음을 알았습니다.
모든 댓글/답변?
HBase를 사용할 수있는 스키마가 어떤 종류인지 확실하지 않지만 Key가 고유 한 Key => Value라고 항상 생각했습니다. 동일한 키를 가진 많은 결과물을 가질 수 있다는 점을 감안할 때, 중간 구조의 출력 (맵 함수로부터)이이 구조에 적합할까요? 또한 귀하의 제안은 하나의 실행 결과를 이전 실행 결과와 병합하는 것을 의미한다고 생각합니다. 이것이 가능한가? 먼저 대상 (FS 디렉토리 또는 BigTable 테이블)을 비우는 MR 실행의 출력을 가정 했습니까? – Joe
HBase는 행과 열을 지원합니다. RDBMS와의 차이점은 트랜잭션이 행 전체에서 사용 가능하지 않다는 것입니다 (단, 동일한 행의 다른 열에 대한 업데이트시 산을 사용할 수 있음). 열은 희소합니다. 많은 열을 가질 수 있으며 다른 행은 다른 열을가집니다. 일반 MR에서는 추가가 불가능합니다 (HDFS 문제).하지만 HBase를 사용하면 테이블에 행을 추가 할 수 있으므로 작동해야합니다. – SquareCog