0.7.1

0.7.1

Apache Pinot 0.7.1 릴리스 노트 문서예요. 이 릴리스는 JSON 인덱스, lookup 기반 조인 지원, 지리공간(geospatial) 지원, Pinot 연결의 TLS 지원, 다양한 성능 최적화 등 훌륭한 새 기능을 도입했어요.

출처: 문서

본문

요약 (Summary)

이 릴리스는 JSON 인덱스, lookup 기반 조인 지원, 지리공간 지원, Pinot 연결의 TLS 지원, 다양한 성능 최적화와 개선 등 훌륭한 새 기능을 도입했어요.

또한 세그먼트를 더 잘 관리하고 오프라인 테이블에 데이터를 업로드하기 위한 여러 새 API도 추가했어요. 많은 중요한 버그 수정도 포함되어 있어요. 자세한 내용은 아래를 참고해 주세요.

릴리스는 다음 커밋에서 생성되었어요: 78152cd

그리고 다음 cherry-pick들:

주요 새 기능 (Notable New Features)

  • 쿼리 비활성화 여부를 확인하는 서버 메트릭 queriesDisabled 추가 (#6586)
  • group key의 ser/de 오버헤드를 줄이기 위한 GroupKey 최적화 (#6593) (#6559)
  • jsonExtractKey와 jsonExtractScalar 함수 검증 지원 (#6246) (#6594)
  • 실제 세그먼트 대신 데이터 특성을 입력으로 받도록 Real Time Provisioning Helper 도구 개선 (#6546)
  • 트랜잭션으로 커밋된 메시지만 수집하도록 Kafka consumer(2.0)에 격리 수준 구성 isolation.level 추가 (#6580)
  • 여러 트리를 지원하도록 StarTreeIndexViewer 강화 (#6569)
  • ADLSGen2PinotFS를 service principal 기반 인증으로 개선, 초기 실행 시 컨테이너 자동 생성. 키 기반 인증과 이전 버전 호환됨 (#6531)
  • minion 태스크 상태 메트릭 추가 (#6549)
  • 디렉터리가 항상 정리되도록 SegmentGenerationAndPushTask의 tmp 디렉터리로 minion 데이터 디렉터리 사용 (#6560)
  • 들어오는 쿼리의 사용자·테이블 수준 인증을 활성화하는 선택적 HTTP basic auth를 pinot broker에 추가 (#6552)
  • Controller의 REST 엔드포인트에 대한 Access Control 추가 (#6507)
  • 수집 중 date_trunc을 지원하도록 스칼라 함수에 date_trunc 추가 (#6538)
  • 8gb보다 큰 tar gz 허용 (#6533)
  • Lookup UDF Join 지원 추가 (#6530), (#6465), (#6383) (#6286)
  • cron 스케줄러 메트릭스 보고 추가 (#6502)
  • 세그먼트 로드 중 파생 컬럼 생성 지원 — 파생 컬럼을 즉시 추가 가능 (#6494)
  • 연쇄(chained) 변환 함수 지원 (#6495)
  • json에서 배열을 추출하는 스칼라 함수 JsonPathArray 추가 (#6490)
  • 같은 파티션에 대한 여러 consuming 세그먼트 방지 가드 추가 (#6483)
  • 폐기된 범위 구분자 사용 제거 (#6475)
  • 비활성화된 경우 적절한 응답으로 스케줄러 호출 처리 (#6474)
  • 스키마와 테이블 구성 취득을 단순화하도록 SegmentGenerationAndPushTask 처리 (#6469)
  • minion 태스크 SegmentGenerationAndPushTaskGenerator의 인스턴스당 동시 태스크 수를 구성하는 클러스터 구성 추가 (#6468)
  • PinotQuery도 최적화하도록 BrokerRequestOptimizer를 QueryOptimizer로 대체 (#6423)
  • 추가 문자열 스칼라 함수 추가 (#6458)
  • 배열 타입의 추가 스칼라 함수 추가 (#6446)
  • Pinot 태스크용 CRON 스케줄러 추가 (#6451)
  • Add Schema UI 다이얼로그에서 타입 설정 시 기본 데이터 타입 설정 (#6452)
  • pinot admin에 ImportData 하위 명령 추가 (#6396)
  • H3 기반 지리공간 인덱스 (#6409) (#6306)
  • JSON 인덱스 지원 추가 (#6408) (#6216) (#6346)
  • 리플렉션으로 minion 태스크를 플러그 가능하게 변경 (#6395)
  • 세그먼트 작업 upload와 delete의 호환성 테스트 추가 (#6382)
  • 세그먼트를 비활성화했다가 다시 활성화하는 세그먼트 리셋 API 추가 (#6336)
  • Pinot minion 세그먼트 생성 및 push 태스크 추가 (#6340)
  • 모든 컴포넌트 버전을 표시하는 버전 옵션을 pinot admin에 추가 (#6380)
  • 텍스트에서 REGEXP_LIKE 연산자를 가속화하는 lucene lib 기반 FST 인덱스 추가 (#6120)
  • 오프라인 테이블에 데이터를 업로드하는 API 추가 (#6354)
  • 스트림 구성에서 환경 변수 사용 허용 (#6373)
  • 단일 타입/테이블 지원을 위한 태스크 스케줄 api 강화 (#6352)
  • 라우팅용 브로커 시간 범위 기반 pruner 추가. 쿼리 연산자: RANGE, =, <, <=, >, >=, AND, OR (#6259)
  • json 개체에서 값을 추출하는 json path 함수 추가 (#6347)
  • Table config tuner용 플러그 가능 인터페이스 생성 (#6255)
  • 테이블 생성 시간을 반환하는 Controller 엔드포인트 추가 (#6331)
  • 테이블 상태 활성화-비활성화 기능과 tooltips를 UI에 추가 (#6327)
  • Pinot Minion 클라이언트 추가 (#6339)
  • OnHeapBitmapInvertedIndexCreator와 OffHeapBitmapInvertedIndexCreator에서 RoaringBitmap을 더 효율적으로 사용 (#6320)
  • decimal percentile 지원 추가 (#6323)
  • 테이블의 consumption 상태를 가져오는 API 추가 (#6322)
  • 오프라인·실시간 테이블 추가 지원, UI에서 스키마 추가와 스키마 목록을 개별적으로 허용 (#6296)
  • distinct 쿼리 성능 개선 (#6285)
  • 세그먼트 생성 단계에서 커스텀 구성 추가 허용 (#6299)
  • 사전 인코딩된 컬럼에 대해서만 정렬 인덱스 기반 필터링 사용 (#6288)
  • 더 나은 성능을 위한 forward index 리더 강화 (#6262)
  • raw 없이 텍스트 인덱스 지원 (#6284)
  • 클러스터 매니저가 테이블 상태를 가져오는 api 추가 (#6211)
  • SQL GROUP BY ORDER BY의 성능 최적화 (#6225)
  • Pinot 테이블 구성에서 ${VAR_NAME:DEFAULT_VALUE} 형식의 환경 변수 사용 지원 추가 (#6271)

특별 참고 사항 (Special notes)

  • Pinot controller 메트릭스 접두사에 누락된 점을 추가하도록 수정 (#6499). 컨트롤러 메트릭스의 JMX 쿼리를 업데이트해야 하는 이전 버전 비호환 변경이에요.
  • 레거시 group key 구분자(\t)를 0.5.0 릴리스와 호환되도록 제거 (#6589)
  • ZOOKEEPER-2184(연결 시도 실패 시 Zookeeper Client가 호스트를 다시 확인해야 함)를 해결하기 위해 zookeeper 버전을 3.5.8로 업그레이드 (#6558)
  • client-pinot과 pinot-internode 연결에 TLS 지원 추가 (#6418) TLS 지원 클러스터로의 업그레이드는 무중단으로 안전하게 수행할 수 있어요. 라이브 업그레이드를 위해 다음 단계를 따르세요:
    • 먼저, 브로커, 컨트롤러, 서버에 https/netty-tls용 대체 인그레스 포트를 구성하세요. 클러스터 다운타임을 피하기 위해 롤링 전략으로 컴포넌트를 재시작하세요.
    • 둘째, 컨트롤러와 브로커의 https 접근이 살아있는지 수동으로 확인하세요. 그런 다음 모든 컴포넌트가 (비보안 접근도 여전히 허용하면서) TLS 지원 연결을 선호하도록 구성하세요. 개별 컴포넌트를 재시작하세요.
    • 셋째, 구성을 통해 비보안 연결을 비활성화하세요. controller.vip.protocol과 controller.vip.port를 설정하고 수집 작업의 구성 파일을 업데이트해야 할 수도 있어요. 컴포넌트를 마지막으로 재시작하고 http를 통한 비보안 인그레스가 더 이상 사용 불가능한지 확인하세요.
  • Broker의 PQL 엔드포인트가 폐기됨 (#6607)
    • Apache Pinot은 SQL 문법과 의미를 채택했어요. 레거시 PQL(Pinot Query Language)은 폐기되어 더 이상 지원되지 않아요. broker 엔드포인트 /query/sql과 controller 엔드포인트 /sql에서 SQL 문법으로 Pinot을 쿼리하세요.

주요 버그 수정 (Major Bug fixes)

  • 큰 인덱스의 SIGSEGV 수정 (#6577)
  • 데이터 소스에 0행이 있더라도 세그먼트 생성을 실패하지 않도록 0행 세그먼트 생성 처리 (#6466)
  • 여러 번 실행에 대한 QueryRunner 도구 수정 (#6582)
  • URI로 파싱할 수 없는 문자를 처리하기 위해 생성된 세그먼트 tar 이름에 URL 인코딩 사용 (#6571)
  • StarTreeIndexViewer에서 상위 노드 오집계 버그 수정 (#6569)
  • 실시간 세그먼트의 raw bytes 컬럼 수정 (#6574)
  • SQL 쿼리에서 JSON_MATCH 프레디킷을 허용하는 버그 수정 (#6535)
  • 큰 사전을 버퍼에 로드할 때의 오버플로 문제 수정 (#6476)
  • distinct 쿼리의 빈 데이터 테이블 수정 (#6363)
  • DictionaryBasedGroupKeyGenerator의 기본 map 반환 값 수정 (#6712)
  • ControllerPeriodicTask의 로그 메시지 수정 (#6709)
  • 버그 #6671 수정: RealtimeTableDataManager가 호스트의 모든 테이블에 대해 SegmentBuildTimeLeaseExtender를 종료함 (#6682)
  • 라이선스 헤더와 플러그인 체크 수정

더 알아보기 (Learn more)