2016-11-14 4 views
1

Hbase에서 hbase.hregion.max.filesize을 10GB로 구성했습니다. 단일 행이 10GB 크기를 초과하면 Hbase 분할이 행 키를 기반으로 행해지므로 행이 2 개의 영역으로 연결되지 않습니다Hbase의 단일 행이 hbase.hregion.max.filesize를 초과하면 성능 문제가 발생합니다.

예를 들어, 1000 개의 열을 가진 행이 있고 각 열의 크기가 25MB에서 40MB. 따라서 정의 된 영역 크기를 초과 할 확률이 있습니다. 이 경우 행 키만 사용하거나 행 한정자를 사용하여 데이터를 읽는 동안 성능에 어떤 영향을 미칩니 까?

답변

2

첫 번째 것은 Hbase가 단일 행 (그 가상의)에 그 매우 큰 데이터 10GB를 저장하는 것이 아닙니다.

난 당신이

악영향 성능에 영향을 미칠 것이다 (그냥 저장하는 생각) 한 행에 10 기가 바이트 저장하지 않은 바랍니다. 이처럼 많은 데이터를 파티션 된 구조의 hdfs에 저장하는 것과 같은 다른 방법을 고려하십시오. 일반적으로

,이는 tips for generally applicable batch clients like Mapreduce Hbase jobs

Scan scan = new Scan(); 
scan.setCaching(500); //1 is the default in Scan, which will be bad for MapReduce jobs 
scan.setCacheBlocks(false); // don't set to true for MR jobs 

는 HBase와의 단일 행에 대한 Performance

+0

최적의 크기로 모양을 가질 수 있습니다. 그것을 바탕으로 행 키를 디자인 할 것입니다. 또한이 정보를 어디서 얻을 수 있습니까? – Roshan

+0

AFAIK, 최적의 크기는 없지만 행 당 최대 10MB의 원시 메시지를 저장하고 mapreduce를 통해 처리했지만 그 다음 500 번에서 200 번까지 캐시 크기 (프리 페치 된 레코드 수)를 줄여야합니다. GBs가 아닌 MB –