Apache Pinot é um armazenamento de dados OLAP distribuído em tempo real, criado para fornecer análises escalonáveis em tempo real com baixa latência. Ele pode ingerir fontes de dados em lote (como Hadoop HDFS, Amazon S3, Azure ADLS, Google Cloud Storage), bem como fontes de dados de fluxo (como Apache Kafka).
Pinot foi desenvolvido por engenheiros do LinkedIn e Uber e foi projetado para ser ampliado e ampliado sem limites superiores. O desempenho sempre permanece constante com base no tamanho do cluster e em um limite esperado de consulta por segundo (QPS).
Para guias de introdução, receitas de implantação, tutoriais e muito mais, visite nossa documentação do projeto em https://docs.pinot.apache.org.
Pinot foi originalmente desenvolvido no LinkedIn para potencializar aplicativos analíticos interativos em tempo real, como Who Viewed Profile, Company Analytics, Talent Insights e muito mais. UberEats Restaurant Manager é outro exemplo de aplicativo Analytics voltado para o cliente. No LinkedIn, a Pinot fornece mais de 50 produtos voltados para o usuário, ingerindo milhões de eventos por segundo e atendendo mais de 100 mil consultas por segundo com latência de milissegundos.
Consultas rápidas : filtre e agregue conjuntos de dados de petabytes com latências P90 em dezenas de milissegundos – rápido o suficiente para retornar resultados ao vivo de forma interativa na interface do usuário.
Alta simultaneidade : com aplicativos voltados para o usuário consultando Pinot diretamente, ele pode atender centenas de milhares de consultas simultâneas por segundo.
Interface de consulta SQL : A interface de consulta SQL altamente padrão é acessível por meio de um editor de consulta integrado e uma API REST.
Junções versáteis : execute junções arbitrárias de fato/dimensão e fato/fato em conjuntos de dados de petabytes.
Orientado a colunas : um banco de dados orientado a colunas com vários esquemas de compactação, como Run Length, Fixed Bit Length.
Indexação conectável : tecnologias de indexação conectáveis, incluindo carimbo de data/hora, invertido, StarTree, filtro Bloom, intervalo, texto, JSON e opções geoespaciais.
Ingestão de fluxo e lote : Ingestão do Apache Kafka, Apache Pulsar e AWS Kinesis em tempo real. Ingestão em lote do Hadoop, Spark, AWS S3 e muito mais. Combine fontes de lote e streaming em uma única tabela para consulta.
Upsert durante a ingestão em tempo real : atualize os dados em escala com consistência
Multitenancy integrado : gerencie e proteja dados em namespaces lógicos isolados para gerenciamento de recursos amigável à nuvem.
Construído para escala : Pinot é horizontalmente escalável e tolerante a falhas, adaptável a cargas de trabalho em todo o espectro de armazenamento e taxa de transferência.
Nativo da nuvem no Kubernetes : o gráfico Helm fornece uma implantação em cluster horizontalmente escalonável e tolerante a falhas que é fácil de gerenciar usando o Kubernetes.
Pinot foi projetado para executar consultas OLAP em tempo real com baixa latência em grandes quantidades de dados e eventos. Além da ingestão de fluxo em tempo real, Pinot também oferece suporte a casos de uso em lote com as mesmas garantias de baixa latência. É adequado em contextos onde são necessárias análises rápidas, como agregações, em dados imutáveis, possivelmente com ingestão de dados em tempo real. Pinot funciona muito bem para consultar dados de séries temporais com muitas dimensões e métricas.
Consulta de exemplo:
SELECT sum (clicks), sum (impressions) FROM AdAnalyticsTable
WHERE
((daysSinceEpoch >= 17849 AND daysSinceEpoch <= 17856 )) AND
accountId IN ( 123456789 )
GROUP BY
daysSinceEpoch TOP 100
Quer contribuir com Apache/Pinot? ?
Quer se juntar às fileiras dos committers de código aberto do Apache Pinot? Então confira o Guia de Contribuição para saber como você pode se envolver no código.
Se você tiver um bug ou uma ideia para um novo recurso, navegue pelos problemas em aberto para ver no que já estamos trabalhando antes de abrir um novo.
Também marcamos alguns problemas para iniciantes que novos contribuidores podem resolver.
# Clone a repo
$ git clone https://github.com/apache/pinot.git
$ cd pinot
# Build Pinot
# -Pbin-dist is required to build the binary distribution
# -Pbuild-shaded-jar is required to build the shaded jar, which is necessary for some features like spark connectors
$ mvn clean install -DskipTests -Pbin-dist -Pbuild-shaded-jar
# Run the Quick Demo
$ cd build/
$ bin/quick-start-batch.sh
Para configuração de desenvolvimento de UI, consulte este documento.
As compilações normais do Pinot são feitas usando o comando mvn clean install
.
No entanto, este comando pode demorar muito para ser executado.
Para compilações mais rápidas, é recomendado usar mvn verify -Ppinot-fastdev
, que desativa alguns plugins que não são realmente necessários para o desenvolvimento.
Instruções mais detalhadas podem ser encontradas na seção Demonstração Rápida da documentação.
Consulte Executando Pinot no Kubernetes em nossa documentação do projeto. Pinot também fornece integrações do Kubernetes com o mecanismo de consulta interativo Trino Presto e a ferramenta de visualização de dados Apache Superset.
Confira a documentação do Pinot para uma descrição completa dos recursos do Pinot.
Apache Pinot está sob licença Apache, versão 2.0