(한) 배경
맵리 듀스는 대용량 데이터를 신속 실시간 애드혹 쿼리 성능 요구 사항에 계산 Facebook2012年开发 2013 년 오픈 소스를 충족시킬 수 없다
무엇 (b)는
메모리 기반의 병렬 컴퓨팅, 페이스 북은 대화 형 SQL 분산 쿼리 엔진 파이프 라인은 여러 노드를 실행 출시
GB ~ PB의 모든 데이터 소스의 데이터 크기를 지원하기는 대규모 병렬 처리 (MPP) (대규모 병렬 처리) 모델 인
PB의 데이터 크기 메모리에 PB 데이터뿐만 아니라 계산에 던져, 메모리, 계산에 참가한 후하자
(C) 프레스토 기본적인 이해
1.1 정의
프레스토는 데이터를 저장하지 않는 분산 쿼리 엔진 자체,하지만 당신은 데이터 소스 쿼리에 걸쳐 계단식에 대한 데이터 소스의 다양성 및 지원에 액세스 할 수 있습니다. 프레스토는하여 OLAP 도구입니다 대용량 데이터의 복잡한 분석을 전문 있지만 OLTP 시나리오, 프레스토은 좋지 않다, 그래서 사용하는 데이터베이스로 프레스토를 넣지 마십시오.
와 MySQL에 비해 잘 알고 : MySQL은 저장 용량 및 전산 분석, 프레스토 만 전산 분석 기능을 먼저 데이터베이스이며, 둘째 데이터의 양 측면은, MySQL은 기존의 단일 지점으로 관계형 데이터베이스는 많은 양의 데이터의 현재 요구를 충족하지 않습니다, 이렇게 생성하는 대용량 데이터 저장 및 분석 도구의 다양한 있는데, 프레스토 데이터 분석 등 다량 공구의 컴퓨팅 요구 사항을 충족한다.
1.2 데이터 소스
프레스토 분석 동작을 수행하도록 다른 데이터 소스로부터의 데이터를 필요로이를 하이브, RDBMS (MySQL은, 오라클 포함한 데이터 다양한 소스에 접속 될 수 Tidb 추천 등) 카프카 MongoDB를, 레디 스
프레스토 복수 일 수 질의 데이터 소스 분석을 조합한다.
예를 들어 : B 조인 SELECT * ], a.id = b.id 하이브, B MySQL의 표로부터 유도 될 수있는 테이블로부터 유도 될 수있다.
1.3 장점
프레스토 하이브에 비해 낮은 레이턴시 높은 동시 메모리 컴퓨팅 엔진의 효율은 훨씬 더 높다.
예 :
선택 (SELECT) ID,
이름,
SOURCE_TYPE,
created_at
dw_dwb.dwb_user_day의 FROM
를 Where DT = '2018년 6월 3일'
AND created_at> '2018년 5월 20일';
하이브에서 수십 초에 1 초 미만의 SQL 프레스토 실행 위.
1.4 데이터 모델
프레스토 사용 카탈로그, 스키마 테이블 및 데이터를 관리하는 3 층 구조.
---- 카탈로그 : 데이터 소스입니다. 하이브 데이터 소스, 데이터 소스는 각각의 연결에 이름이 하이브 데이터 소스 타입이며, 복수의 MySQL 하이브 복수 연결될 수 MySQL은, MySQL은이다. 카탈로그는 당신이 쇼의 카탈로그 프레스토 명령을 통해 연결된 모든 데이터 소스를 볼 수있는 여러 스키마를 포함 할 수 있습니다.
---- 스키마 : 데이터베이스 인스턴스의 상응하는 스키마는 하나 이상의 데이터 테이블이 포함되어 있습니다. 'CATALOG_NAME'에서 쇼 스키마는 CATALOG_NAME 아래에있는 모든 스키마를 나열합니다.
---- 테이블 : 같은 일반적인 의미의 데이터 테이블 및 데이터베이스 테이블. 모든 테이블 아래에 'catalog_name.schema_name를'볼 'catalog_name.schema_name'에서 테이블을 보여줍니다.
테이블에 위치 프레스토, 그것은 예를 들어, 루트 카탈로그에 대한 공통 : 테이블 테스트 테이블에 test_data 하이브 (카탈로그) (스키마)에서 확인 된 hive.test_data.test을했다.
데이터 소스 카테고리 데이터베이스 테이블 : 제인은 이해 될 수있다.
2, 프레스토와 하이브
하이브 HDFS (분산 파일 시스템)에 기초하여 저장 데이터의 저장 및 조회 대용량을 지원하기위한 분석 컴퓨팅 능력 데이터베이스이다. 하이브 프레스토 분산 쿼리 엔진과 결합 된 데이터 소스로, 데이터 쿼리 연산 속도와 같은 다량 훨씬 빠르다.
프레스토 여기 하이브 데이터 소스를 사용하는 경우 테이블이 파티션 테이블 인 경우, 파티션 필터를 추가해야합니다 당신을 생각 나게 할 필요가 표준 SQL을 지원, 전체 테이블 스캔없이 파티션이 매우 폭력적인 동작, 낮은 효율과 많은 클러스터 자원을 가지고, 우리는 이러한 접근을 피하려고합니다.
하이브 구역은 내가 간단히 개념을 설명, 여기에 언급. 하이브 파티션은 대용량 데이터 세트는 비즈니스 요구에 따라 데이터의 미세한 세트로 구분되며, 하위 디렉토리입니다.
예 : 하루에 따라 데이터 세그먼트 데이터를 원하는 경우 데이터 테이블 / 사용자 / 샤오밍 / 테이블 / 디렉토리에 위치하는 경우가됩니다 / 사용자 / 샤오밍 / 테이블 / 2018년 6월 1일 /, / 사용자 / 샤오밍 / 테이블 / 2018년 6월 2일 / ...... 쿼리 데이터가 하루에 디렉토리 데이터에 직접 촬영 할 수있는 경우, 당신은 데이터의 다른 날, 절약 시간과 자원을 스캔 할 필요가 없습니다 일일.
사용 프레스토 :
. 3, 액세스 프레스토
프레스토 액세스 다양한 방법 : 프레스토 - CLI, pyhive, JDBC , HTTP, golang SQLAlchemy도, PHP 공식 프레스토 프레스토-CLI가 프레스토 - CLI에 아래에 제공되는 것을 특징으로하는 등, 예는 설명을 확장하기 위해 (다운로드).
하이브, 예를 들어, 입력 단자 컴퓨터 데이터 소스를 연결 ./ 프레스토-cli.jar --server presto.xxx-apps.com:9200 --catalog 하이브 --user --source XXXX 'PF = 애드혹; 클라이언트 = CLI는 '프레스토 단말기 인터페이스를 입력 할 수있다.
각 매개 변수의 의미를 설명하려면
, 프레스토 서비스 주소 --server
당신이 MySQL을 사용하는 MySQL의 데이터 소스, 데이터 소스 이름을 연결하려면 기본값을 사용하는 데이터 소스 --catalog, 당신은 다시 전환 할 수 있습니다;
--user 자명;
--source 소스 대표적인 = 키 값을 형성하기 위해 소스 포맷 (분할 세미콜론)되어, 클라이언트 = CLI; 예를 들어, 명령 라인 문의 사람들은 PF = 애드혹 설정되어야한다.
: 터미널 입력 한 후
, 쇼 카탈로그 :보기 데이터 소스
보기 데이터베이스 인스턴스 : 쇼 스키마를,
프레스토 수동 : HTTPS : //prestodb.io/docs/current/
Q & A :
1. 장면?
-Mysql 데이터베이스 간 쿼리 - 테이블 데이터웨어 하우스 쿼리 (데이터 분석) ...의 수를
빠르게 하이브 2보다 왜 프레스토 쿼리?
하이브 자원 스케줄링, 원사와 함께 할 필요가 쿼리 프로세스를 시작하기 위해 자원을 적용 할 필요가 받아들이고, 그 결과는 디스크의 중앙을 통과 것이다 프레스토 상주 작업은 요청 즉시 전체 메모리 병렬 컴퓨팅을 실행에 동의합니다.