Apache Pinot – це розподілене OLAP-сховище даних, що працює в режимі реального часу та призначене для виконання OLAP-запитів із низькою затримкою. Воно часто використовується в поєднанні з Apache Kafka для отримання та аналізу даних у реальному часі.
У цьому посібнику ми розглянемо кроки, необхідні для встановлення Apache Pinot у системі Linux. Ми розглянемо попередні умови, завантаження та вилучення програмного забезпечення, налаштування конфігурації та запуск служб.
Попередні умови
Перед встановленням Apache Pinot переконайтеся, що ваша система відповідає таким попереднім умовам:
- Для роботи Apache Pinot потрібен Java Development Kit (JDK) 8 або вище.
 - Apache Pinot використовує Apache Zookeeper для керування кластером.
 - Переконайтеся, що налаштування вашого брандмауера дозволяють використовувати необхідні порти для зв’язку Pinot і Zookeeper.
 
Крок 1: Встановлення Java в Linux
Якщо у вашій системі не встановлено Java, ви можете завантажити та встановити її з офіційного сайту Oracle.
У більшості дистрибутивів Linux ви можете використовувати менеджер пакетів для встановлення Java. Наприклад, у системах на базі Debian ви можете використовувати таку команду.
sudo apt-get install default-jdk
У системах на базі Red Hat можна використовувати таку команду.
sudo dnf install java-21-openjdk -y
Після завершення встановлення ви можете перевірити версію Java, виконавши таку команду.
java -version

Крок 2: Встановлення Zookeeper у Linux
Zookeeper необхідний Apache Pinot для управління кластером, тому встановіть його за допомогою наступної команди.
sudo apt install zookeeperd         [On Debian-based Systems]
sudo dnf install zookeeperd         [On RHEL-based Systems]
Після встановлення запустіть, увімкніть і перевірте стан служби Zookeeper.
sudo systemctl start zookeeper
sudo systemctl enable zookeeper
sudo systemctl status zookeeper

Крок 3: Встановлення Apache Pinot у Linux
Завантажте останню версію Apache Pinot з офіційного сайту Apache Pinot або скористайтеся наступною командою wget, щоб завантажити її безпосередньо.
wget https://downloads.apache.org/pinot/apache-pinot-1.1.0/apache-pinot-1.1.0-bin.tar.gz
Примітка: За необхідності замініть apache-pinot-1.1.0-bin.tar.gz на останню доступну версію.
Потім розпакуйте скачаний tarball у потрібне місце і налаштуйте змінні оточення для полегшення доступу до двійкових файлів Pinot у файлі .bashrc або .profile.
sudo tar -xvzf apache-pinot-1.1.0-bin.tar.gz -C /opt
echo 'export PINOT_HOME=/opt/apache-pinot-1.1.0-bin' >> ~/.bashrc
echo 'export PATH=$PINOT_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Крок 4: Запуск служб Apache Pinot
Apache Pinot складається з декількох компонентів, кожен з яких працює як окремий сервіс:
- Controller: Управляє кластером Pinot і обробляє створення схем і таблиць.
 - Broker: Займається маршрутизацією запитів.
 - Server (сервер): Зберігає та обслуговує дані.
 - Minion: Виконує фонові завдання, такі як ущільнення і згортання даних.
 
Запустіть кожну службу в окремих вікнах терміналу або як фоновий процес:
Запустіть контролер:
cd $PINOT_HOME
bin/pinot-admin.sh StartController -configFileName conf/pinot-controller.conf
Запустіть брокер:
cd $PINOT_HOME
bin/pinot-admin.sh StartBroker -configFilePath conf/pinot-broker.conf
Запустіть сервер:
cd $PINOT_HOME
bin/pinot-admin.sh StartServer -configFilePath conf/pinot-server.conf
Запустіть міньйона:
cd $PINOT_HOME
bin/pinot-admin.sh StartMinion -configFilePath conf/pinot-minion.conf
Переконайтеся, що всі служби запущені, перевіривши відповідні журнали в каталозі журналів у PINOT_HOME.
Крок 5: Налаштування Apache Pinot
Щоб почати отримувати і запитувати дані, Apache Pinot необхідно налаштувати схему і таблиці.
Створіть каталог для зберігання файлів конфігурації:
sudo mkdir $PINOT_HOME/configs
Створіть файл схеми, наприклад my_schema.json, у каталозі configs.
sudo nano $PINOT_HOME/configs/my_schema.json
Додайте таку конфігурацію схеми.
{
  "schemaName": "mySchema",
  "dimensionFieldSpecs": [
    {
      "name": "myDimension",
      "dataType": "STRING"
    }
  ],
  "metricFieldSpecs": [
    {
      "name": "myMetric",
      "dataType": "LONG"
    }
  ],
  "dateTimeFieldSpecs": [
    {
      "name": "myDateTime",
      "dataType": "LONG",
      "format": "1:MILLISECONDS:EPOCH",
      "granularity": "1:MILLISECONDS"
    }
  ]
}
Потім створіть файл конфігурації таблиці, наприклад my_table.json, у каталозі configs.
sudo nano $PINOT_HOME/configs/my_table.json
Додайте таку конфігурацію таблиці.
{
  "tableName": "myTable",
  "tableType": "REALTIME",
  "segmentsConfig": {
    "timeColumnName": "myDateTime",
    "schemaName": "mySchema",
    "replication": "1"
  },
  "tableIndexConfig": {
    "loadMode": "MMAP"
  },
  "tenants": {},
  "tableRetentionConfig": {},
  "ingestionConfig": {
    "streamIngestionConfig": {
      "type": "kafka",
      "streamConfigMaps": {
        "streamType": "kafka",
        "stream.kafka.topic.name": "myKafkaTopic",
        "stream.kafka.broker.list": "localhost:9092",
        "stream.kafka.consumer.type": "simple",
        "stream.kafka.consumer.prop.auto.offset.reset": "smallest",
        "realtime.segment.flush.threshold.size": "50000"
      }
    }
  },
  "metadata": {}
}
Тепер скористайтеся інструментом адміністратора Pinot, щоб додати конфігурації схеми і таблиць:
bin/pinot-admin.sh AddSchema -schemaFile $PINOT_HOME/configs/my_schema.json -exec
bin/pinot-admin.sh AddTable -tableConfigFile $PINOT_HOME/configs/my_table.json -exec
Крок 6: Перевірка налаштування Apache Pinot
Відкрийте веб-браузер і перейдіть до користувацького інтерфейсу контролера Pinot, щоб переконатися, що вашу схему і таблицю було успішно додано.
http://localhost:9000

Ви можете запитувати дані за допомогою консолі Pinot Query Console, доступної в користувацькому інтерфейсі контролера, або за допомогою інструменту командного рядка Pinot query:
bin/pinot-admin.sh Query -brokerHost localhost -brokerPort 8099 -query "SELECT * FROM myTable LIMIT 10"
Висновок
Встановлення Apache Pinot у системі Linux включає кілька етапів, зокрема встановлення Java і Zookeeper, завантаження і витяг двійкових файлів Pinot, запуск служб Pinot, а також налаштування схеми і таблиць.
Дотримуючись цієї інструкції, ви повинні отримати працюючий екземпляр Apache Pinot, готовий до обробки OLAP-запитів у реальному часі. Для подальшого налаштування та оптимізації зверніться до офіційної документації Apache Pinot.


