# Pinot File System

File System is a set of plugins devoted to storage purpose.

Currently supported file systems are:

* ADLS (Azure Data Lake Storage)
* GCS (Google Cloud Storage)

  * To configure the GcsPinotFS filesystem, the server and controller must be configured as shown below. The account associated with the `GCP_KEY_FILE` must be able to create and drop objects in the gcs bucket, for example if the account has the `Storage Admin` and `Storage Object Admin` roles for the bucket that will be sufficient. The data directory on the controller will point to gcs.
  * Jvm options should include the gcs plugin:

  ```
  -Dplugins.dir=/opt/pinot/plugins -Dplugins.include=pinot-gcs
  ```

  �

  * Controller config:

  ```
  controller.data.dir=gs://<bucket>/<directory>/
  pinot.controller.storage.factory.class.gs=org.apache.pinot.plugin.filesystem.GcsPinotFS
  pinot.controller.storage.factory.gs.projectId=<project id>
  pinot.controller.storage.factory.gs.gcpKey=<location of gcp json key>
  pinot.controller.segment.fetcher.protocols=file,http,gs
  pinot.controller.segment.fetcher.gs.class=org.apache.pinot.common.utils.fetcher.PinotFSSegmentFetcher�
  ```

  * Server config:

  ```
  pinot.server.storage.factory.class.gs=org.apache.pinot.plugin.filesystem.GcsPinotFS
  pinot.server.storage.factory.gs.projectId=<project id>
  pinot.server.storage.factory.gs.gcpKey=<location of gcp json key>
  pinot.server.segment.fetcher.protocols=file,http,gs
  pinot.server.segment.fetcher.gs.class=org.apache.pinot.common.utils.fetcher.PinotFSSegmentFetcher
  ```

  �
* HDFS
