HiveMetaStore에 연결하고 오픈 소스 빅 데이터 수용

이 기사는 Huawei Cloud 커뮤니티 " HiveMetaStore와 연결 및 오픈 소스 빅 데이터 수용 "에서 공유되었습니다. 작성자: Sleeping is a big deal.

1. 소개

  • 적용 가능한 버전: 9.1.0 이상

빅데이터 융합 분석 시대, 방대한 양의 데이터와 다양하고 복잡한 쿼리에 직면했을 때, 데이터 처리 엔진을 사용할 때 가장 중요한 고려 사항은 성능입니다. GaussDB(DWS) 서비스는 MRS 서비스의 하이브(hive)나 스파크(Spark)와 같은 컴퓨팅 엔진보다 강력한 컴퓨팅 엔진을 갖추고 있으며, 저렴한 비용으로 비즈니스의 높은 탄력성과 민첩성 요구를 충족할 수 있습니다. MRS와 연동하면 데이터를 이동할 필요가 없어 DWS의 고성능 컴퓨팅 엔진을 활용해 데이터 레이크의 대용량 데이터는 물론 다양한 복합 쿼리 서비스와 분석 서비스를 처리하는 것이 점점 주류 솔루션으로 자리잡고 있다. .

GaussDB(DWS)가 hive/spark 테이블을 직접 쿼리하거나 hive/spark 테이블에 데이터를 삽입할 수 있도록 외부 스키마를 생성하여 HiveMetaStore 메타데이터 서비스에 연결할 수 있습니다. 읽기 또는 쓰기 테이블을 생성할 필요가 없으며 GaussDB(DWS)가 hive/spark 테이블 정의가 변경될 때 테이블 정의를 제때 업데이트하지 않을까 걱정할 필요가 없습니다.

이 문서에서는 주로 GaussDB(DWS)와 hivememtastore 간의 연결 구성 및 지침을 설명합니다.

2. 원리에 대한 간략한 분석

2.1 HiveMetaStore란 무엇입니까?

HiveMeatStore는 Apache Hive의 핵심 구성요소로, Hive/Spark 테이블의 메타데이터 정보를 관리하는 데 사용되는 메타데이터 저장소입니다. HiveMeatStore는 테이블 이름, 열 이름, 데이터 유형, 파티션 정보 등을 포함하여 Hive 테이블의 구조 정보를 저장합니다. 또한 테이블의 위치 정보, 즉 테이블 데이터가 저장되는 위치 정보도 저장합니다. HiveMeatStore의 주요 기능은 Hive/Spark가 데이터를 쿼리하고 분석할 수 있도록 메타데이터 서비스를 제공하는 것입니다. 또한 개발자가 프로그래밍 방식으로 테이블 메타데이터에 액세스할 수 있는 API를 제공합니다. 간단히 말해서, HiveMeatStore는 메타데이터 관리 및 쿼리 서비스를 제공하는 Hive의 중요한 구성 요소입니다.

외부 스키마는 외부 스키마입니다. GaussDB(DWS)는 외부 스키마를 생성하여 HiveMeatStore 서비스에 연결하고 각 쿼리에 대한 hive/spark 테이블 개체의 메타데이터를 적극적으로 가져옵니다. 외부 테이블 생성을 통해 Hive/Spark 테이블의 메타데이터를 얻기 위해 GaussDB(DWS) 커널이 필요하지 않습니다.

2.2 외부 스키마와 스키마의 차이점

1 외부 스키마는 주로 HiveMeatStore와 연결을 설정하고 테이블 개체 메타데이터를 얻는 데 사용됩니다. 외부 스키마를 생성할 때 연결에 필요한 다양한 속성 값을 지정해야 합니다.

2 일반 스키마가 생성되면 pg_namespace에 스키마 정보가 기록됩니다. 외부 스키마가 생성되면 일반 스키마와 마찬가지로 pg_namespace에도 기록됩니다. 이를 통해 외부 스키마인지 일반 스키마인지 구분할 수 있습니다. pg_namespace의 nsptype 필드

설명하다

pg_namespace에 저장된 관련 정보 외에도 외부 스키마 연결과 관련된 구성 정보가 pg_external_namespace에 기록됩니다.

설명하다

3 테이블 개체는 외부 스키마에서 지원되지 않습니다. 객체는 Hive 또는 Spark에서 생성되며 외부 스키마는 DML 작업을 수행하는 데만 사용됩니다.

2.3 원리 설명

GaussDB(DWS)가 HiveMetaStore와 도킹되는 과정은 아래 그림과 같습니다.

1. 서버, 외부 스키마, SQL 쿼리를 생성합니다.

이 기능을 사용하기 전에 사용자는 서버를 생성해야 합니다. 서버 생성 과정은 기존 서버와 동일합니다.

OBS 서버를 만드는 방법에는 두 가지가 있습니다. 하나는 영구 AK와 SK를 통해 만드는 것입니다. (이 방법의 전제는 영구적인 AK와 SK를 얻을 수 있다는 것이지만 이 방법은 안전하지 않습니다. AK/SK는 구성 파일에 직접 노출되며, 서비스 생성 시 AK와 SK를 일반 텍스트로 입력해야 합니다. 이런 방식으로 서비스를 생성하는 것은 권장되지 않습니다.

클라우드에서 DWS를 ECS에 바인딩하는 또 다른 방법은 OBS에 액세스하고 제어 플레인을 통해 OBS 서버를 생성하는 것입니다. 컨트롤 플레인을 통해 서버 생성을 위임하려면 외형 생성 시 OBS 서버 생성 방법을 참고하시기 바랍니다. https://support.huaweicloud.com/mgtg-dws/dws_01_1602.html

외부 스키마를 생성합니다.

외부 스키마 생성 구문은 다음과 같습니다.

외부 스키마 생성 ex
소스 하이브 포함
데이터베이스 '기본값'
서버 hdfs_server
메타주소 '10.254.159.121:9010'
구성 '/home/fengshuo/conf2';

SOURCE 필드는 외부 메타데이터 스토리지 엔진의 유형을 지정하고, DATABASE는 Hive에 해당하는 데이터베이스 이름, SERVER는 1단계에서 생성된 서버, METAADDRESS는 Hive에서 제공하는 주소 및 포트 정보, CONFIGURATION은 Hive 및 Kerberos에 대한 경로입니다. 관련 구성 파일.

외부 스키마의 목적은 아래 그림과 같이 DWS가 외부 메타데이터의 변화를 능동적으로 인식할 수 있도록 외부 메타데이터(Foreign Meta)에 연결하는 것입니다.

GaussDB(DWS)는 외부 스키마를 통해 HiveMetaStore에 연결하고 해당 테이블 메타데이터에 매핑한 후 테이블을 통해 Hadoop에 액세스합니다.

SQL 쿼리: 선택 쿼리 형식은 select * from ex.tbl입니다. 여기서 tbl은 외부 소스 테이블의 이름이고 ex는 생성된 외부 스키마입니다.

2. 문법 분석: 문법 분석 계층은 주로 구문 분석을 담당하며 주로 다음 내용을 담당합니다.

ex.tbl 테이블을 읽은 후 HMS에 연결하여 메타데이터 쿼리를 수행합니다.

3. 메타데이터 쿼리: HMS에서 메타데이터 정보를 쿼리합니다. 이 단계는 1단계에서 완료됩니다.

HMS에서 읽어오는 데이터에는 주로 컬럼 정보, 파티션 정보, 파티션 키 정보, 구분자 정보 등이 포함됩니다.

4. 데이터 조회(선택용): DFS 저장소에서 통계 정보 파일의 수와 파일 크기를 얻어 계획 생성의 기초를 제공합니다.

5. 쿼리 재작성, 쿼리 최적화, 쿼리 실행

6. 쿼리 전달: DN은 계획과 함께 메타데이터를 DN으로 보냅니다. DN은 계획을 수신한 후 메타데이터를 디코딩하여 SysCache에 삽입합니다.

7. 쿼리 실행: DN은 obs 해당 파일에 접근하여 쿼리를 실행합니다.

3. hivememtastore와의 연동 과정

3.1 환경 준비

DWS 3.0 클러스터 및 MRS 분석 클러스터가 생성되었습니다. 클러스터 네트워크 상호 운용성을 보장하려면 MRS 및 DWS 클러스터가 동일한 지역, 가용성 영역 및 VPC 서브넷에 있는지 확인해야 합니다.

AK, SK 획득

3.2 하이브 측에서 연결해야 할 테이블 생성

1. /opt/client 경로에서 환경 변수를 가져옵니다.
소스 빅데이터_env

2. Hive 클라이언트에 로그인합니다.

3. 다음 SQL 문을 순서대로 실행하여 데모 데이터베이스와 대상 테이블 product_info를 생성합니다.
데이터베이스 데모 만들기;
데모를 사용하세요.
DROP TABLE 제품_정보;
 
테이블 생성
(    
    product_price 정수,
    product_id 문자(30) ,
    제품_시간 날짜,
    product_level 문자(10) ,
    product_name varchar(200) ,
    product_type1 varchar(20) ,
    product_type2 문자(10) ,
    product_monthly_sales_cnt int ,
    product_comment_time 날짜,
    product_comment_num int ,
    product_comment_content varchar(200)                   
)
','로 끝나는 행 형식 구분 필드
오크로 저장됨;
4. insert를 통해 데이터를 Hive 테이블로 가져옵니다.

3.3 외부 서버 생성

Data Studio를 사용하여 생성된 DWS 클러스터에 연결합니다.

MRS 측에는 hdfs와 obs라는 두 가지 형식이 지원됩니다. 이 두 시나리오에서 하이브 도킹을 위한 외부 서버를 만드는 방법도 다릅니다.

다음 명령문을 실행하여 OBS 외부 서버를 생성합니다.

서버 생성 obs_servevr 외부 데이터 래퍼 DFS_FDW
옵션
(
주소 'obs.xxx.com:5443', //OBS 액세스 주소입니다.
'on'을 암호화하고,
access_key '{AK 값}',
secret_access_key '{SK 값}',
 'obs'를 입력하세요
);
다음 문을 실행하여 HDFS 외부 서버를 생성합니다.
서버 생성 hdfs_server 외부 데이터 래퍼 HDFS_FDW 옵션(
      유형 'hdfs',
      주소 '{기본 노드},{대기 노드}',
      HDFSCFGPATH '{hdfs 구성 파일 주소}');

인증에 사용되는 AK, SK를 코드에 하드코딩하거나 일반 텍스트로 저장하는 것은 보안상 위험이 큽니다. 구성 파일이나 환경 변수에 암호문으로 저장하고, 보안을 위해 사용할 때는 복호화하는 것이 좋습니다. 또한 dws는 sk를 내부적으로 암호화하므로 전송 중에 sk가 유출될 염려가 없습니다.

외부 서버를 확인하세요(예: obs).
SELECT * FROM pg_foreign_server WHERE srvname='obs_server';

반환 결과는 다음과 같으며 성공적으로 생성되었음을 나타냅니다.

서버 이름 | 서버 소유자 | srvfdw | 서비스 유형 | 서버 버전 | 서버클 | 서비스 옵션
------------------------------------- +----------+---------+---------+------------+------ ---+---------------------------------- ------------------------------------- -------
 obs_서버 | 16476 | 14337 | | | | {address=obs.xxx.com:5443,type=obs,encrypt=on,access_key=***,secret_access_key=***}
(1줄)

3.4 외부 스키마 생성

Hive 메타스토어 서비스의 내부 IP와 포트, 접근할 Hive 측 데이터베이스의 이름을 알아냅니다.

MRS 관리 콘솔에 로그인합니다.

"클러스터 목록 > 기존 클러스터"를 선택하고, 조회하려는 클러스터 이름을 클릭한 후 클러스터 기본 정보 페이지로 들어갑니다.

운영유지관리실에서 "관리자 바로가기"를 클릭 후, 사용자 이름과 비밀번호를 입력하여 FI 관리 페이지에 로그인하세요.

"Cluster", "Hive", "Configuration", "All Configurations", "MetaStore", "Port"를 순서대로 클릭하고 hive.metastore.port 매개변수에 해당하는 값을 기록합니다.

"Cluster", "Hive", "Instance"를 차례로 클릭하고 master1이 포함된 MetaStore에 해당하는 호스트 이름의 관리 IP를 기록합니다.

외부 스키마 생성

//Hive 도킹 OBS 시나리오: SERVER 이름은 2에서 생성된 외부 서버 이름을 채우고, DATABASE는 Hive 측에서 생성된 데이터베이스를 채우고, METAADDRESS는 1에서 기록된 Hive 측 Metastore 서비스의 주소와 포트를 채우고, CONFIGURATION은 MRS 데이터 원본의 기본 구성 경로이며 변경할 필요가 없습니다.
존재하는 경우 스키마 삭제 ex1;
 
외부 스키마 생성 ex1
    소스 하이브 포함
         데이터베이스 '데모'
         서버 obs_server
         메타주소 '***.***.***.***:***'
         구성 '/MRS/gaussdb/mrs_server'
 
//Hive 도킹 HDFS 시나리오: SERVER 이름은 MRS 데이터 소스 연결을 생성하여 생성된 데이터 소스 이름 mrs_server를 입력하고, METAADDRESS는 1에 기록된 하이브 측 메타스토어 서비스의 주소와 포트를 입력하며, CONFIGURATION은 기본 구성 경로입니다. MRS 데이터 소스는 변경할 필요가 없습니다.
존재하는 경우 스키마 삭제 ex1;
 
외부 스키마 생성 ex1
    소스 하이브 포함
         데이터베이스 '데모'
         서버 부인_서버
         메타주소 '***.***.***.***:***'
         구성 '/MRS/gaussdb/mrs_server'

생성된 외부 스키마 보기

SELECT * FROM pg_namespace WHERE nspname='ex1';
SELECT * FROM pg_external_namespace WHERE nspid = (SELECT oid FROM pg_namespace WHERE nspname = 'ex1');
                     NSpid | 서버 이름 | 출처 | 주소 | 데이터베이스 | 컨패스 | 옵션 | 목록
------------------------------------- +----------+---------+---------+------------+------ ---+---------------------------------- ------------------------------------- -------
                  16393 | obs_서버 | 하이브 | ***.***.***.***:*** | 데모 | *** | |
(1줄)

3.5 하이브 테이블로 데이터 가져오기 실행

로컬 데이터 소스 테이블을 생성합니다. 테이블 구조는 하이브와 일치합니다.
존재하는 경우 테이블 삭제 product_info_export;
테이블 생성
(
    product_price 정수,
    product_id 문자(30) ,
    제품_시간 날짜,
    product_level 문자(10) ,
    product_name varchar(200) ,
    product_type1 varchar(20) ,
    product_type2 문자(10) ,
    product_monthly_sales_cnt 정수,
    product_comment_time 날짜,
    product_comment_num 정수,
    product_comment_content varchar(200)                   
) ;

데이터 가져오기

로컬 소스 테이블에서 Hive 테이블을 가져옵니다.

ex1.product_info에 삽입 SELECT * FROM product_info_export;

3.6 실행 데이터를 hive에서 dws 테이블로 가져옵니다.

데이터 가져오기

로컬 소스 테이블에서 Hive 테이블을 가져옵니다.

product_info_orc_export에 삽입 SELECT * FROM ex1.product_info;

4 요약

이 글에서는 GaussDB(DWS)와 hiveMetaStore의 도킹 원리와 방법을 주로 설명합니다.

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

Linus는 커널 개발자가 탭을 공백으로 대체하는 것을 막기 위해 문제를 직접 해결했습니다. 그의 아버지는 코드를 작성할 수 있는 몇 안 되는 리더 중 한 명이고, 둘째 아들은 오픈 소스 기술 부서의 책임자이며, 막내 아들은 핵심입니다. Huawei: 일반적으로 사용되는 모바일 애플리케이션 5,000개를 변환하는 데 1년이 걸렸습니다. Hongmeng으로의 포괄적인 마이그레이션 Java는 타사 취약점에 가장 취약한 언어입니다. Hongmeng의 아버지인 Wang Chenglu: 오픈 소스 Hongmeng은 유일한 아키텍처 혁신입니다. 중국 기초 소프트웨어 분야의 마화텅(Ma Huateng)과 저우홍이(Zhou Hongyi)가 악수를 하며 "원한을 풀다" 전 마이크로소프트 개발자: 윈도우 11 성능은 "터무니없을 정도로 나쁘다" 라오샹지가 오픈소스인 것은 코드는 아니지만 그 이유는 다음과 같다. Google이 대규모 구조 조정을 발표 했습니다 .
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11054552