2014-12-05 13 views
2

Hbase.Hbase를 처음 사용하는 것은 테이블을 무작위로 업데이트 (put 또는 delete)하는 것이 좋지만 hbase이 수행하는 방법을 이해할 수 없습니다. hbase는 HDFS를 사용하여 해당 저장소에 사용할 수 없기 때문에 HDFS에서 무엇이든 업데이트하십시오. Hbase은 레코드를 업데이트하고 레코드를 업데이트하기 위해 memstore를 사용합니다. MemStore는 정렬 된 키 순서로 임의의 수의 업데이트 된 행을 포함합니다. hfile에 디스크로 데이터를 덤프 할 때이 hfile은 다른 레코드와 함께 hfiles.hbase random write 작동 방법

모든 hfile을 덤프 한 후 hfile은 HDFS에 복제됩니다. WAL 편집 log.WAL 로그 파일에 대한 질문은 HDFS에서도 복제됩니다. 모든 업데이트에 대해 HDFS에 대한 업데이트가 복제됩니다.

답변

5

이 블로그 게시물은 http://blog.cloudera.com/blog/2012/06/hbase-io-hfile-input-output/ http://blog.cloudera.com/blog/2012/06/hbase-write-path/

하지만 기본적으로, 당신은 (회복) 월마트에 기록됩니다 풋 (키, 값)과 memstore를 보낼 도움이 될 수 있습니다. memstore가 임계 값에 도달하면 memstore가 디스크 (hfile)에 정렬 된 순서로 기록됩니다. 얼마 후 디스크에 여러 개의 hfiles가 있습니다. 각 파일에 내용이 정렬되어 있음을 알고 있으므로 (병합 된) 병합을 수행하여 데이터를 쿼리 할 수 ​​있습니다.

충돌이 발생한 경우 WAL이 사용되며 데이터가 memstore에 있고 컴퓨터가 충돌하는 경우 WAL에있는 복사본 만 있습니다. 데이터가 플러시되면 memstore 데이터가 포함 된 WAL을 제거 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다.이 블로그는 모두 설명했습니다 ... 하지만 시퀀스 파일에 대한 의심이 하나 더 있습니다 ... 모든 시퀀스 파일의 추가가 모든 블록에 복제됩니다. –

+1

그것은 HDFS의 일부입니다. HDFS는 HBase와 비슷한 작업을하고 있습니다. OutputStream을 사용하여 데이터를 작성합니다. 그 데이터는 블록 크기까지 버퍼링 된 다음 블록이 그 크기에 도달하면 N 개의 기계로 복제됩니다. 어느 정도 작동하는지, 모든 것이 변경 가능하지 않아서 "레코드"라는 개념이 없다고 생각해야합니다. 뭔가를 추가하면 메모리에 추가되고 임계 값에 도달하면 데이터가 통합됩니다 (블록) 복제 한 다음 복제합니다. – th30z

+0

고마워 ..이 질문은 하루 종일 내 마음을 터뜨리고 있었다. 더 많은 독서에서 나는 모든 지역에서 월에 쓰는 공유 된 동일한 HLog 인스턴스를 얻었다. 나는 wal 인스턴스 (fsOutputStream) 어떤 쓰기 사이에서도 닫히지 않습니다. –