안녕하십니까. 처음으로 TB 결재를 한 다음 20 밀리그램 증분을 삽입/업데이트/삭제와 같이 xml 형식으로 저장해야하는 애플리케이션을 개발했습니다. 이 5TB의 데이터 위에 적용됩니다. 그리고 마침내 요청에 따라 모든 데이터의 전체 스냅 샷을 생성하고 각 데이터가 해당 파일에 있어야하므로 논리를 기반으로 5K 텍스트 파일을 만들어야합니다.거대한 데이터를 저장하고 실시간으로 업데이트하기위한 HBase 솔루션이 없습니다.
HBase를 사용하여이 프로젝트를 수행했습니다. HBase에 10 개에서 500 개까지의 영역이있는 35 개의 테이블을 만들었습니다. HDFS에 데이터가 있고 mapreduce를 사용하여 데이터를 수용 Hbase 테이블에 대량로드합니다.
그 후 나는 모든 들어오는 XML 증분 파일을 구문 분석하고 HBase 테이블을 업데이 트하는 자바로 작성된 SAX 파서 응용 프로그램을 가지고 있습니다. XML 파일의 주파수는 분당 10 XML 파일과 2000 업데이 트의 총 있습니다. 증분 메시지가 엄격하게 정렬됩니다.
마지막으로 요청할 때 모든 마지막 Hbase 테이블을 스캔하고 5K 텍스트 파일을 만들어 클라이언트에 전달하기 위해 마지막 mapreduce 응용 프로그램을 실행합니다.
3 단계 모두 정상적으로 작동하지만 클러스터 된 공유 프로덕션 서버에 응용 프로그램을 배포하려고하면 HBase에서 전체 테이블 검사를 수행하기 때문에 인프라 팀에서 응용 프로그램을 실행할 수 없습니다.
나는 94 노드 클러스터를 사용했으며 가장 큰 HBase 테이블 데이터는 약 2 억입니다. 다른 모든 테이블은 수백만 개 미만의 데이터를 가지고 있습니다.
mapreduce가 텍스트 파일을 스캔하고 작성하는 데 걸리는 총 시간은 2 시간이 걸립니다.
이제 이것을 구현할 다른 해결책을 찾고 있습니다.
나는 레코드 레벨을 삽입/업데이트하고 매우 정확한 방식으로 삭제하기 때문에 HIVE를 사용할 수 있습니다.
또한 HBase 및 HIVE 테이블을 통합하여 증분 데이터 HBase 테이블이 사용되고 전체 테이블 스캔 HIVE가 사용됩니다. 그러나 HIVE가 Hbase 저장소 핸들러를 사용하기 때문에 HIVE 테이블에 파티션을 만들 수 없으므로 HIVE 전체 테이블 스캔이 매우 느리게도 10 배 더 느려집니다. 전체 테이블 스캔
현재 어떤 종류의 솔루션도 생각할 수 없습니다 붙어있어. HBase가 관련되지 않은 다른 솔루션을 도와주세요.
이 사용 사례에서는 AVRO 또는 파킹 파일을 사용할 수 있습니까?하지만 AVRO가 레코드 수준 업데이트를 지원하는 방법을 잘 모르겠습니다.
성능상의 문제가 없습니다. 400GB의 데이터 크기를 갖는 2 억 개의 레코드로 시도한 결과 좋은 성능을 얻었습니다. 12 분 내에 완료되었습니다.하지만 내 관심사는 전체 테이블입니다. 공유 클러스터에 배포됩니까? – SUDARSHAN
물론 전체 테이블 스캔은 성능에 영향을 미칩니다. 행키를 다시 디자인하고 필터를 사용하려고합니다. 또는 Apache Phoenix를 배치 한 다음 RDBMS의 테이블처럼 HBase 테이블에 액세스하십시오. – okmich