2017-11-20 3 views
0

하이브 성능에 대해 몇 가지 질문이 있습니다.데이터를 하이브로 압축 데이터, 데이터 및 성능별로 클러스터

온라인으로 압축 된 데이터 (특히 ORC, Snappy)를 읽으면 데이터를 읽는 동안 성능이 향상 될 것입니다.
또한 주문 데이터를 사용하여 테이블에 데이터를로드하면 큰 파일이 1 개가되어 읽기 가용성이 떨어질 수 있습니다.
따라서 다른 순서로 동일한 효과를 얻으려면 클러스터를 사용하여 여러 개의 작은 파일을 만들어야합니다.

압축 된 데이터에 대한 실험을 데이터별로 수행하고 데이터로 정렬하여 성능을 확인했습니다.
현재 5 개의 데이터 노드와 1 개의 이름 노드가 있습니다. 각 테이블에로드 데이터 파일 19기가바이트 + 주변 (200 만 개 + 기록)이었다

나는 다음과 같은 쿼리 내 오크 물어 압축 테이블을 생성

: 내가봤을 때

CREATE EXTERNAL TABLE orc_t (....) 
STORED AS ORC 
LOCATION '...' 
TBLPROPERTIES(orc.compress="SNAPPY") 

내가 매우 손실과 혼란 스러웠 각 테이블의 성능 내가 달릴 쿼리이었다

SELECT * FROM orc_t WHERE date_format(st_time, 'yyyy-MM-dd') = '2017-05-20' 
  • 압축 데이터가 데이터가 압축 데이터를했다 보인다처럼

데이터를 43 초에서 43 초

  • 주문했다가 2m 45 초
  • 클러스터했다 데이터에 의한 가장 길고 클러스터는 데이터에 의한 주문보다 현저한 성능을 보이지 않습니다.

    내 5 개 데이터 노드에서 압축 해제 성능이 실제로 느려지는 읽기 기능이 충분합니까?
    샘플 데이터가 충분하지 않습니까?
    나는 뭔가를 놓치고 있습니까?

    전문가가 위의 사항을 알려 주시기 바랍니다.

  • +0

    사용한다? 그런데 Zlib 압축을 사용하여 ORC를 시도하십시오 –

    +0

    안녕하세요 cricket_007, 다시 만나서 반가워요! 내 st_time (timestamp)을 지정된 날짜 (yyyy-MM-dd 형식)와 비교하는 샘플 쿼리를 수행하고 있습니다. – James

    +0

    클러스터 별 데이터 (여러 파일 데이터)가 데이터별로 정렬 (단일 대형 파일 데이터)보다 중요한 성능을 내지 못하는 이유를 묻습니다. 성능에 영향을 미치는 데이터 노드 때문입니까? – James

    답변

    0

    왜 하나의 큰 데이터 파일에 비해 상당한 성능이없는 여러 작은 데이터 파일 (256MB 정도의 크기) (19기가바이트 + 주위의 크기) 내가 샘플 쿼리를 수행 할 때 (t SELECT * FROM WHERE DATE_FORMAT (st_time, 'yyyy-MM-dd') = '2017-05-20';

    데이터 내에서 단일 값에 대한 모든 데이터를 계속 스캔하고 있기 때문에 압축을 풀어야합니다. 또한 모든 열을 선택하므로 ORC를 사용하면 분명한 이점이 없습니다.

    여러 개의 작은 데이터 파일은 하나의 큰 데이터 파일에 비해 약간의 성능 우위를 가지고 있습니까?

    이 경우가 아니라면, 초기 입력 파일이 mapreduce 입력 분할로 적절히 채워질 수 있었고 디스크 IO가 차단 요인이 아닌 것 같습니다.

    스 니피 또는 Zlib 압축은 속도를 최적화하지 않고 공간 만 절약합니다.

    당신이 속도를 향상 당신이 가고있는 쿼리 패턴에 대한 데이터를 분할하려는 경우

    은 자주에 대한 귀하의 숫자를 비교하는 무엇