Hive MetaStore 소스 분석

2982 단어 hive

1. 시작 스크립트


 $HIVE_HOME/bin/hive --service hivemetastore   --> $HIVE_HOME/bin/ext/metastore.sh --> 입구 클래스 org를 볼 수 있습니다.apache.hadoop.hive.metastore.HiveMetaStore

2. 입구류


(1) cli.parse 해석 매개 변수
(2) LogUtils.initHiveLog4j 설정 로그, hiveConf 만들기
(3) startMetaStore 시작 서비스
(4) 초기화thrift는 TBinaryProtocol
(5) HMShandler basehandler 만들기 --> newRetrying HMShandler를 통해 basehandler 초기화

3. HMShandler 초기화


(1)hive를 통해.metastore.rawstore.impl 로드된 메타데이터를 가져오는 객체 클래스 (이 클래스는 RawStore, 운영 데이터베이스 상속)
(2)hive를 통해.metastore.init.hooks 초기화 클래스 가져오기, HMShandler 추가 초기화에 사용
(3)hive를 통해.metastore.alter.impl HiveAlterHandler 가져오기 (이handler를 통해 sql에서alter 작업)
(4)createDefaultDB () 기본 DB 테이블 만들기 -> 기본 역할 만들기 admin 및public --> admin 추가 사용자
(5)hive를 통해.metastore.pre.event.listeners에서 미리 처리된 감청을 가져옵니다.이러한 방법은 onEvent 방법을 실현하고 일부thrift 인터페이스를 호출하기 전에 호출합니다. (예를 들어 롤과 권한을 부여받은 일부 인터페이스)
(6)hive를 통해.metastore.event.listeners에서 감청 클래스를 가져옵니다.(onCreateTable onDroptbale 등을 실현하여 sql 조작 후 터치하는 action을 실현한다
(7)hive를 통해.metastore.end.function.listeners 함수 감청 얻기 (sql 함수 호출 시 hook)
(8)handler를 통해 Processor 만들기
(9) TthreadPoolServer를 통해 서버를 만들고 서비스를 시작합니다

4.metastore 호출

    public HiveMetaPoolFactory(String metastoreUris, String jdoUrl, String jdoUser,
                               String jdoPassword, String jdoDriverName) {
        this.metastoreUris = metastoreUris;
        this.jdoUrl = jdoUrl;
        this.jdoUser = jdoUser;
        this.jdoPassword = jdoPassword;
        this.jdoDriverName = jdoDriverName;

        Configuration conf = new Configuration();
        if(StringUtils.isNotEmpty(metastoreUris)) {//uris  
            conf.set("hive.metastore.uris", metastoreUris);
        } else {
            conf.set("javax.jdo.option.ConnectionURL", jdoUrl);//jdbc 
            conf.set("javax.jdo.option.ConnectionUserName", jdoUser);
            conf.set("javax.jdo.option.ConnectionPassword", jdoPassword);
            conf.set("javax.jdo.option.ConnectionDriverName", jdoDriverName);
        }
        hConf = new HiveConf(conf, HiveConf.class);
    }

    @Override
    public Object makeObject() throws Exception {
        HiveMetaStoreClient hmsc = new HiveMetaStoreClient(hConf);// 
        return hmsc;
    }

5.thrift 인터페이스와client 연결 탱크 구현


metastore/if/hive_metastore.thrift 파일, 연결 탱크의 실현 뒤에 메타클라이언트와thrift2클라이언트를 설명하는 섹션을 전문적으로 씁니다.

좋은 웹페이지 즐겨찾기