hbase - admin 표 조작 소스 추적

3016 단어 빅 데이터
간단 한 소개
habse 표 관련 작업, 네 임 스페이스 작업, region 작업 등 메타 정보 수정 과 관련 된 dl 작업 은 모두 HMaster 역할 을 통 해 이 루어 집 니 다.우 리 는 자바 hbase - client 모듈 이나 Liux hbase - shell 을 통 해 HMaster 와 접촉 하여 관련 dl 작업 을 할 수 있 습 니 다.
통신 원리
hbase client (hbase - shell) 와 HMaster (HRegionServer) 간 에 rpc 를 사용 하여 통신 을 하고 관련 인터페이스 통신 프로 토 콜 은 hbase - protocol 모듈 src/main/protobuf.proto 파일 에 정의 합 니 다.우 리 는 그 중의 service ** rpc 키 워드 를 주목 해 야 한다.우리 가 흔히 볼 수 있 는 ddl 과 dql 작업 은 주로 Master.proto service MasterServiceClient.proto service ClientService 에 분포 한다.
rpc 와 protobuf 에 대하 여
grpc 입문 을 추천 합 니 다.
몇 가지 핵심 개념:
  • 주의: hbase rpc 는 google protobuf 문법 정의 프로 토 콜 을 사용 하고 thrift 프레임 워 크 를 사용 하여 통신 바 텀 을 실현 하 며 grpc 프레임 워 크 를 바 텀 으로 사용 하지 않 았 습 니 다
  • .
  • 일반적인 proto 에서 하나의 service 정의 만 있 고 rpc 가 정의 하 는 방법 은 하나의 인터페이스 방법 을 표시 합 니 다.
  • protobuf 프로 토 콜 파일 .proto 은 컴 파일 할 때 해당 자바 소스 파일 을 생 성 합 니 다.서비스 정 의 는 블록 인터페이스 인터페이스 와 같은 원본 파일 에 해당 하 는 인 터 페 이 스 를 생 성 합 니 다.
  • Blocking Interface 는 동기 화 차단 인터페이스 이다.

  • 서버 서비스
    Master. proto 의 service MasterService 정 의 는 컴 파일 할 때 자동 으로 MasterProtos.MasterService.BlockingInterface 인터페이스 와 원본 파일 을 생 성 합 니 다.Client. proto 의 service ClientService 정 의 는 컴 파일 할 때 자동 으로 ClientProtos.ClientService.BlockingInterface 인 터 페 이 스 를 생 성 합 니 다.
    Master Protos. Master Service. Blocking 인터페이스 클래스 구현 클래스 는 Master Rpc Services 하나 입 니 다.모든 HMaster 에 대한 rpc 호출 은 MasterRpcServices 처 리 됩 니 다.Client Protos. Client Service. Blocking 인터페이스 인터페이스의 실현 클래스 는 RSRpcServices 입 니 다.데이터 와 관련 된 모든 조작.
    호출 체인 분석 - 메타 데이터 조작
    hbase 의 모든 dl 작업 은 Admin 인터페이스 에 정의 되 어 있 습 니 다.이 인 터 페 이 스 는 유일한 구현 클래스 인 HBaseAdmin 만 있 습 니 다.createtable 작업 을 예 로 들 면 클 라 이언 트 코드 는 다음 과 같 습 니 다.
            try (Admin admin = connection.getAdmin()) {
                HTableDescriptor hbaseTable = new HTableDescriptor(TableName.valueOf(table));
                for (HColumnDescriptor family : familys) {
                    hbaseTable.addFamily(family);
                }
                admin.createTable(hbaseTable);
            }
    

    클 라 이언 트 바 텀 전체 호출 과정 은 다음 과 같 습 니 다. Admin (HBaseAdmin). createTable (...) - > HBaseAdmin. createTableasyncV 2 (...) - > executCallable (call - > {master. createTable () 여기 master 는 MasterProtos. MasterService. BlockingInterface}) - > new CreateTableFuture - > - > waitOperation Result 동기 화 차단 검사 - > waitForTableEnabled (isTableAvailable 호출)대기 표 활성화 - > waitForAllRegions Online 은 모든 Region 이 출시 되 기 를 기다 리 고 있 습 니 다 - > MetaScanner. metaScan 은 scan 스 캔 표 메타 데 이 터 를 통 해 모든 Region 이 출시 되 었 는 지 여 부 를 판단 합 니 다.
    서버 쪽: MasterRpc Services (MasterProtos. MasterService. BlockingInterface) 는 Controller 와 상당히 요청 을 받 습 니 다.요청 한 데 이 터 는 다음 과 같이 봉 인 됩 니 다: CreateTableRequest 에 권한 관련 내용 이 나타 나 지 않 습 니 다.MasterRpcServices.createTable -> HMaster.createTable->

    좋은 웹페이지 즐겨찾기