0.2.0

0.2.0

Apache Pinot 0.2.0 릴리스 노트 문서예요. 초기 릴리스 이후 첫 번째 릴리스로, 여러 가지 개선을 포함해요.

출처: 문서

본문

새 기능 및 버그 수정 (New Features and Bug Fixes)

  • Kafka 2.0 지원 추가
  • 테이블 리밸런서가 리밸런스 중 최소 서빙 레플리카 수를 지원
  • 필터 프레디킷과 selection에서 UDF 지원 추가
  • 쿼리에서 바이트 배열 표현으로 16진 문자열(hex string) 사용 지원 (PR #4041)
  • parquet 리더 지원 추가 (PR #3852)
  • 인터페이스 안정성과 분류(audience) 애노테이션 도입 (PR #4063)
  • HelixBrokerStarter를 생성자와 start() 분리로 리팩터링 — 이전 버전과 호환되지 않음 (PR #4100)
  • 오프라인 테이블에서 잘못된 구간(interval)을 가진 세그먼트를 나열하는 관리 도구
  • log4j2로 마이그레이션 (PR #4139)
  • 간단한 avro 메시지 디코더 추가
  • Pinot 클라이언트에서 헤더 전달 지원
  • 테이블 리밸런서가 리밸런스 중 최소 서빙 레플리카 수를 지원
  • AVG 집계 함수와 함께 변환(transform) 함수 지원 (PR #4557)
  • 구성 추가/변경
    • 커스텀 메트릭스 접두사 허용 (PR #4392)
    • Controller.enable.batch.message.mode 기본값을 false로 변경 (PR #3928)
    • RetentionManager와 OfflineSegmentIntervalChecker의 초기 지연을 설정 가능하게 함 (PR #3946)
    • kafka fetcher 크기를 제어하는 구성 추가 및 기본값 증가 (PR #3869)
    • 서비스 시작 고려를 위한 백분율 임계값 추가 (PR #4011)
    • SingleConnectionBrokerRequestHandler를 기본값으로 설정 (PR #4048)
    • 기본 컬럼(default column) 기능을 항상 활성화하고 구성 제거 (PR #4074)
    • 중복되는 기본 브로커 구성을 제거 (PR #4106)
    • 서버의 일부 구성 키 제거 (PR #4222)
    • HLC 실시간 세그먼트를 비활성화하는 구성 추가 (PR #4235)
    • RetentionManager와 OfflineSegmentIntervalChecker의 초기 지연을 설정 가능하게 함 (PR #3946)
    • 다음 구성 변수는 폐기(deprecated)되었으며 다음 릴리스에서 제거될 예정:
      • pinot.broker.requestHandlerType는 제거될 예정이며, 이를 대신해 "singleConnection" 브로커 요청 핸들러를 사용할 것을 권장해요. 이 구성을 설정했다면 제거하고 기본 타입("singleConnection")을 사용해 주세요.

진행 중인 작업 (Work in Progress)

  • Helix 컨트롤러와 Pinot 컨트롤러를 분리하여 관리자가 독립적인 Helix 컨트롤러와 Pinot 컨트롤러를 실행할 수 있도록 하는 작업 진행 중
  • SQL 쿼리 형식과 결과를 지원하는 방향으로 작업 진행 중
  • 인스턴스 풀(instance pools)을 사용해 인스턴스와 세그먼트 할당을 분리하여, 수천 개의 테이블을 가진 Pinot 클러스터에서 Helix 상태 전환 수를 최적화하는 작업 진행 중

기타 참고 (Other Notes)

  • 이 릴리스에서는 Helix의 버그로 인해 태스크 관리가 올바르게 동작하지 않아요. 이를 고치기 위해 Helix 0.9.2(또는 이후) 버전으로 업그레이드할 예정이에요.

  • 이후 버전으로 이동하기 전에 반드시 이 릴리스로 업그레이드해야 해요. Pinot-broker와 Pinot-server 사이의 프로토콜이 변경되었으며, 이 릴리스에는 향후 호환성을 유지하기 위한 코드가 포함되어 있어요. 이 릴리스를 건너뛰면(환경에 따라) 브로커가 업그레이드되고 서버가 업그레이드 중일 때 쿼리 오류가 발생할 수 있어요.

  • 언제나 그렇듯, 운영 클러스터에서 무중단(zero downtime)을 위해 컨트롤러를 먼저 업그레이드하고, 그다음 브로커, 마지막으로 서버 순서로 업그레이드하는 것을 권장해요.

  • Pull Request #4100은 Pinot 브로커에 이전 버전과 호환되지 않는 변경을 도입해요. HelixBrokerStarter 클래스의 Java 생성자를 사용한다면 이 버전에서 컴파일 오류가 발생해요. 객체를 생성한 뒤 브로커를 시작하기 위해 start() 메서드를 호출해야 해요.

  • Pull Request #4139는 log4j 구성에 이전 버전과 호환되지 않는 변경을 도입해요. 커스텀 log4j 구성(log4j.xml)을 사용했다면 새로운 log4j2 구성(log4j2.xml)을 작성해야 해요. 또한 Pinot 컴포넌트를 시작하기 위한 명령줄 인수를 변경해야 할 수 있어요.

    Pinot-admin 명령으로 Pinot 컴포넌트를 시작했다면 변경이 필요 없어요. 그러나 자체 명령으로 Pinot 컴포넌트를 시작한다면 jvm 인자로 새 log4j2 구성을 전달해야 해요 (즉, -Dlog4j.configuration 또는 -Dlog4j.configurationFile 인자를 -Dlog4j2.configurationFile=log4j2.xml로 대체).

더 알아보기 (Learn more)