incubator-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Incubator Wiki] Update of "PinotProposal" by kishoreg
Date Tue, 13 Feb 2018 07:43:30 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Incubator Wiki" for change notification.

The "PinotProposal" page has been changed by kishoreg:
https://wiki.apache.org/incubator/PinotProposal

Comment:
Pinot Proposal

New page:
= Pinot Proposal =

== Abstract ==

Pinot is a distributed columnar storage engine that can ingest data in real-time and serve
analytical queries at low latency. There are two modes of data ingestion - batch and/or realtime.
Batch mode allows users to generate pinot segments externally using systems such as Hadoop.
These segments can be uploaded into Pinot via simple curl calls. Pinot can ingest data in
near real-time from streaming sources such as Kafka. Data ingested into Pinot is stored in
a columnar format. Pinot provides a SQL like interface (PQL) that supports filters, aggregations
and group by operations. It does not support joins by design, in order to guarantee predictable
latency. It leverages other Apache projects such as Zookeeper, Kafka, and Helix, along with
many libraries from the ASF.

== Proposal ==

Pinot was open sourced by LinkedIn and hosted on GitHub. Majority of the development happens
at LinkedIn with other contributions from Uber and Slack. We believe that being a part of
Apache Software Foundation will improve the diversity and help form a strong community around
the project.

LinkedIn submits this proposal to donate the code base to Apache Software Foundation. The
code is already under Apache License 2.0.  Code and the documentation is hosted on Github.
Code: http://github.com/linkedin/pinot
Documentation: https://github.com/linkedin/pinot/wiki


== Background ==

LinkedIn, similar to other companies, has many applications that provide rich real-time insights
to members and customers (internal and external). The workload characteristics for these applications
vary a lot. Some internal applications simply need ad hoc query capabilities with sub second
to multiple seconds latency. But external site facing applications require strong SLA even
very high workloads. Prior to Pinot, LinkedIn had multiple solutions depending on the workload
generated by the application and this was inefficient. Pinot was developed to be the one single
platform that addresses all classes of applications. Today at LinkedIn, Pinot powers more
than 50 site facing products with workload ranging from few queries per second to 1000’s
of queries per second while maintaining the 99th percentile latency which can be as low as
few milliseconds. All internal dashboards at LinkedIn are powered by Pinot.

== Rationale ==

We believe that requirement to develop rich real-time analytic applications is applicable
to other organizations. Both Pinot and the interested communities would benefit from this
work being openly available. 

== Current Status ==

Pinot is currently open sourced under the Apache License Version 2.0 and available at github.com/linkedin/pinot.
All the development is done using GitHub Pull Requests. We cut releases on a weekly basis
and deploy it at LinkedIn. mp-0.1.468 is the latest release tag that is deployed in production.

== Meritocracy ==

Following the Apache meritocracy model, we intend to build a open and diverse community around
Pinot. We will encourage the community to contribute in discussion and codebase.

== Community ==

Pinot is currently used extensively at LinkedIn and Uber. Several companies have expressed
interest in the project. We hope to extend the contributor base significantly by bringing
Pinot into Apache. 

== Core Developers ==

Pinot was started by engineers at LinkedIn, and now has committers from Uber. 

== Alignment ==

Apache is the most natural home for taking Pinot forward. Pinot leverages several existing
Apache Projects such as Kafka, Helix, Zookeeper, and Avro. As Pinot gains adoption, we plan
to add support for the ORC and Parquet formats, as well as adding integration with Yarn and
Mesos.

== Known Risks ==

=== Orphaned Products ===

The risk of the Pinot project being abandoned is minimal. The teams at LinkedIn and Uber are
highly incentivized to continue development of Pinot as it is a critical part of their infrastructure.


=== Inexperience with Open Source ===

Post open sourcing, Pinot was completely developed on GitHub. All the current developers on
Pinot are well aware of the open source development process. However, most of the developers
are new to the Apache process.  Kishore Gopalakrishna, one of the lead developers in Pinot,
is VP and committer of the Apache Helix project.

=== Homogenous Developers ===

The current core developers are all from LinkedIn and Uber. However, we hope to establish
a developer community that includes contributors from several corporations and we are actively
encouraging new contributors via the mailing lists and public presentations of Pinot.

=== Reliance on Salaried Developers ===

It is expected that Pinot development will occur on both salaried time and on volunteer time,
after hours. The majority of initial committers are paid by their employer to contribute to
this project. However, they are all passionate about the project, and we are confident that
the project will continue even if no salaried developers contribute to the project. We are
committed to recruiting additional committers including non-salaried developers.

=== Relationships with Other Apache Products ===

As mentioned earlier, Pinot uses several Apache Projects such as Kafka to ingest data in real-time,
Zookeeper and Helix for cluster management. Pinot also uses Maven for build and release. We
foresee adding support for the Parquet and ORC formats. Adding the ability to deploy on Yarn
and Mesos clusters is another interesting project we might pursue.

=== An Excessive Fascination with the Apache Brand ===

While we respect the reputation of the Apache brand and have no doubts that it will attract
contributors and users, we believe ASF is the right home for Pinot to foster a great community
that will lead to a better outcome in the long term.

== Documentation ==

Code: https://github.com/linkedin/pinot/
Documentation: https://github.com/linkedin/pinot/wiki
User group: https://groups.google.com/forum/#!forum/pinot_users

== Initial Source ==

The current Pinot codebase is hosted on Github and licensed under the Apache License V2. The
source tree is self contained and relies on Maven as its build and dependency resolution mechanism.

== External Dependencies ==

All dependencies in Pinot have licenses that are compatible with Apache License V2, except
for the org.json library, which will be removed prior to Apache incubation. The list below
summarizes the external dependencies of Pinot grouped by license and ASF license category.

Dependencies from the ASF Category A
=== Apache License 2.0 ===
com.101tec:zkclient:0.7
com.alibaba:fastjson:1.1.24
com.clearspring.analytics:stream:2.7.0
com.fasterxml.jackson.core:jackson-annotations:2.8.0
com.fasterxml.jackson.core:jackson-core:2.8.0
com.fasterxml.jackson.core:jackson-databind:2.8.0
com.google.code.findbugs:jsr305:3.0.0
com.google.guava:guava:19
com.ning:async-http-client:1.9.21
com.yammer.metrics:metrics-core:2.2.0
commons-beanutils:commons-beanutils:1.8.3
commons-cli:commons-cli:1.2
commons-codec:commons-codec:1.6
commons-configuration:commons-configuration:1.6
commons-fileupload:commons-fileupload:1.2.2
commons-httpclient:commons-httpclient:3.1
commons-io:commons-io:2.1
commons-validator:commons-validator:1.4.0
io.netty:netty-all:4.1.4.Final
io.swagger:swagger-jaxrs:1.5.10
io.swagger:swagger-jersey2-jaxrs:1.5.10
it.unimi.dsi:fastutil:6.5.16
joda-time:joda-time:2
log4j:log4j:1.2.17
me.lemire.integercompression:JavaFastPFOR:0.0.13
nl.jqno.equalsverifier:equalsverifier:1.7.2
org.apache.avro:avro:1.7.6
org.apache.commons:commons-compress:1.9
org.apache.commons:commons-lang3:3.5
org.apache.commons:commons-math:2.1
org.apache.hadoop:hadoop-client:2.7.0
org.apache.hadoop:hadoop-common:2.7.0
org.apache.helix:helix-core:0.6.8
org.apache.httpcomponents:httpclient:4.1.3
org.apache.httpcomponents:httpclient:4.2.5
org.apache.httpcomponents:httpcore:4.2.5
org.apache.httpcomponents:httpmime:4.2.5
org.apache.kafka:kafka_2.10:0.9.0.1
org.apache.thrift:libthrift:0.9.1
org.apache.zookeeper:zookeeper:3.4.9
org.codehaus.jackson:jackson-core-asl:1.9.6
org.codehaus.jackson:jackson-mapper-asl:1.9.6
org.json:json:20080701
org.roaringbitmap:RoaringBitmap:0.5.10
org.testng:testng:6.0.1
org.twitter4j:twitter4j-core:4.0.3
org.webjars:swagger-ui:2.2.2
org.xerial.larray:larray:0.2.1
org.yaml:snakeyaml:1.16
xml-apis:xml-apis:1.0.b2
=== Dual license (Apache License 2.0 + LGPL 2.1), using under the Apache License ===
org.codehaus.jackson:jackson-jaxrs:1.9.6
org.codehaus.jackson:jackson-xc:1.9.6
=== BSD ===
com.jcabi:jcabi-log:0.17.1
org.antlr:antlr4-annotations:4.3
org.antlr:antlr4-runtime:4.3
=== MIT ===
com.github.nkzawa:socket.io-client:0.5.1
org.mockito:mockito-core:2.10.0
org.slf4j:slf4j-api:1.7.7
org.slf4j:slf4j-log4j12:1.7.7

=== Dependencies from the ASF Category B ===
Dual license (CDDL 1.1 + GPL 2 w/ CPE), using under the CDDL
com.sun.jersey:jersey-client:1.19.2
javax.servlet:javax.servlet-api:3.0.1
org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.23
org.glassfish.jersey.core:jersey-common:2.23
org.glassfish.jersey.core:jersey-server:2.23
org.glassfish.jersey.media:jersey-media-json-jackson:2.24
org.glassfish.jersey.media:jersey-media-multipart:2.23

=== Dependencies from the ASF Category X ===
JSON License
org.json:json:20080701 (to be removed before Apache incubation)


== Cryptography ==

None

== Required Resources ==

=== Mailing lists ===

pinot-private (with moderated subscriptions)
pinot-user
pinot-dev
pinot-commits

=== Git repository ===

git://git.apache.org/pinot
https://git-wip-us.apache.org/repos/asf/incubator-pinot.git

=== Issue Tracking ===

A JIRA Issue tracker (PINOT)

=== Other Resources ===

The existing code already has unit and integration tests and we use travis to test the patch
before committing it to master. We would like to have an instance of Jenkins to achieve similar
functionality.

== Initial Committers ==

* Kishore Gopalakrishna
* Ravi Aringunram
* Jean-François Im
* Mayank Shrivastava
* Subbu Subramaniam
* Adwait Tumbde
* Xiaotian Jiang
* Jennifer Dai
* Seunghyun Lee
* Xiang Fu
* Dhaval Patel
* Neha Pawar
* Alex Pucher
* Yen-Jung Chang



== Affiliations  ==

* Kishore Gopalakrishna (LinkedIn)
* Ravi Aringunram (LinkedIn)
* Jean-François Im (LinkedIn)
* Mayank Shrivastava (LinkedIn)
* Subbu Subramaniam (LinkedIn)
* Adwait Tumbde (LinkedIn)
* Xiaotian Jiang (LinkedIn)
* Jennifer Dai (LinkedIn)
* Seunghyun Lee (LinkedIn)
* Xiang Fu (Uber)
* Dhaval Patel (Uber)
* Neha Pawar (LinkedIn)
* Alex Pucher (LinkedIn)
* Yen-Jung Chang (LinkedIn)

== Sponsors ==

=== Champion ===

* Olivier Lamy < olamy at apache dot org>

=== Nominated Mentors ===

* Olivier Lamy <olamy at apache dot org>

=== Sponsoring Entity ===

The Apache Incubator

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@incubator.apache.org
For additional commands, e-mail: cvs-help@incubator.apache.org


Mime
View raw message