[HADOOP] HBase 단일 행 트랜잭션 지원에서의 행 잠금
HADOOPHBase 단일 행 트랜잭션 지원에서의 행 잠금
HBase에서는 단일 행 트랜잭션 지원을 제공하기 위해 행 잠금 개념을 사용합니다. 예를 들어
p = new Put ( "/ * 행 키 * /"); 이 문장은 행을 잠급니다.
우리가 완성 할 때까지
잠금이 해제되지 않습니다.
따라서 새로운 풋을 시작하면 그 사이에
행이 이미 잠겨 있기 때문에 p1 put이 작동하지 않아야하지만 HBase 0.94에서 작동하려고 시도했습니다.
행 잠금 링크 정보 행 잠금에 대해 본 위치 이해에 문제가 있습니까? 단일 행 트랜잭션 지원이 행 잠금으로 작동하는 방법이 아닌 경우.
해결법
-
==============================
1.HBase가 작동하는 방식은 Puts가 적용될 때 행이 원자 블록으로 작성되도록 보장하지만 스냅 샷 격리를 제공하지 않는 경우 (클라이언트가 아닌) 리전 서버에 잠금이 유지되는 것입니다. 당신은 그것을 원합니다).
HBase가 작동하는 방식은 Puts가 적용될 때 행이 원자 블록으로 작성되도록 보장하지만 스냅 샷 격리를 제공하지 않는 경우 (클라이언트가 아닌) 리전 서버에 잠금이 유지되는 것입니다. 당신은 그것을 원합니다).
두 개의 풋이 동일한 클라이언트에서 전송되지 않은 경우 (이 경우 동일한 트랜잭션의 일부일 수 있음) HBase가 중단되거나 풋 사이의 어딘가에 시간 초과가 발생하지 않는 한 (압축으로 인해). 두 개의 풋은 HBase에 도착한 순서에 따라 순차적으로 적용됩니다.
-
==============================
2.table.put (p) 명령을 실행할 때까지 행이 잠기지 않았다고 생각합니다. Put을 사용할 때 p = new Put ( "row key"); 쓰기에 대한 정보를 보유 할 오브젝트를 작성하고 있지만 실제로 데이터베이스와 아직 통신하지는 않습니다. 데이터베이스 쓰기를 시도 할 준비가되면 table.put (p)를 입력하십시오. 두 개의 put () 작업이 같은 행에서 동시에 발생하면 그 중 하나가 실패 할 수 있습니다. 그러나 잠금은 HBase 내에서 발생하고 외부에서 제어 할 수 없기 때문에 매우 오랫동안 행 잠금을 유지할 수 있다고 생각하지 않습니다. 따라서 프로세스는 다음과 같습니다.
table.put (p) 명령을 실행할 때까지 행이 잠기지 않았다고 생각합니다. Put을 사용할 때 p = new Put ( "row key"); 쓰기에 대한 정보를 보유 할 오브젝트를 작성하고 있지만 실제로 데이터베이스와 아직 통신하지는 않습니다. 데이터베이스 쓰기를 시도 할 준비가되면 table.put (p)를 입력하십시오. 두 개의 put () 작업이 같은 행에서 동시에 발생하면 그 중 하나가 실패 할 수 있습니다. 그러나 잠금은 HBase 내에서 발생하고 외부에서 제어 할 수 없기 때문에 매우 오랫동안 행 잠금을 유지할 수 있다고 생각하지 않습니다. 따라서 프로세스는 다음과 같습니다.
즉, 두 사람이 같은 행에 put ()을 보내려고하면 한 사람 만 성공하고 HBase는 다른 클라이언트에게 오류 메시지를 보냅니다.
두 클라이언트가 같은 행 키를 동시에 put ()하려고한다고 가정하십시오.
이전 질문의 IP 주소 및 로그인 시간 예에 따르면, 누군가 다른 IP 주소에서 동시에 두 번 로그인하면 하나의 IP 만 데이터베이스에 작성되지만 타임 스탬프는 작성된 IP와 일치합니다. .
나는 이것을 완전히 이해하지 못할 수도 있지만 이것이 나의 현재 이해입니다. 도움이 되길 바랍니다.
from https://stackoverflow.com/questions/14907762/row-locking-in-hbase-single-row-transaction-support by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hive2 & JDBC-필수 필드 'serverProtocolVersion'이 설정되지 않았습니다. (0) | 2019.09.09 |
---|---|
[HADOOP] 기본 디렉토리가 변경 될 때 Hive 테이블이 자동으로 업데이트 될 수 있습니까 (0) | 2019.09.09 |
[HADOOP] Pig에서 여러 맵의 튜플을 다른 행으로 분할하는 방법 (0) | 2019.09.09 |
[HADOOP] Windows 10에서 스파크 마스터를 시작하지 못했습니다. (0) | 2019.09.09 |
[HADOOP] 돼지를 사용하여 hdfs에서 트위터 데이터를로드하는 방법? (0) | 2019.09.09 |