What about topic-level metrics? Are we going to report metrics at all level now? Or maybe just at partition-level and use the monitoring app to aggregate them in different levels (i.e. remove topic metrics completely)?
On Wed, Oct 21, 2015 at 3:47 PM, Ashish Singh <asi...@cloudera.com> wrote: > On Wed, Oct 21, 2015 at 2:22 PM, Jay Kreps <j...@confluent.io> wrote: > >> Gwen, It's a good question of what the producer semantics are--would we >> only allow you to produce to a partition or first level directory or would >> we hash over whatever subtree you supply? Actually not sure which makes >> more sense... >> >> Ashish, here are some thoughts: >> 1. I think we can do this online. There is a question of what happens to >> readers and writers but presumably it would the same thing as if that topic >> weren't there. There would be no guarantee this would happen atomic over >> different brokers or clients, though. >> 2. ACLs should work like unix perms, right? > > > Are you suggesting we should move allowed operations to R, W, X model of > unix. Currently, we support these operations > <https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/security/auth/Operation.scala#L25> > . > > I think configs would overide >> hierarchically, so we would have a full set of configs for each partition >> computed by walking up the tree from the root and taking the first >> override). I think this is what you're describing, right? >> > > Yes. > > 3. Totally agree no reason to have an arbitrary limit. >> 4. I actually don't think the physical layout on disk should be at all >> connected to the logical directory hierarchy we present. > > > I think it will be useful to have that connection as that will enable users > to encrypt different namespaces with different keys. Thus, one more step > towards a completely multi tenant system. > > >> That is, whether >> you use RAID or not shouldn't impact the location of a topic in your >> directory structure. > > > Even if we make physical layout on disk representative of directory > hierarchy, I think this will not be a concern. Correct me, if I am missing > something. > > Not sure if this is what you are saying or not. This >> does raise the question of how to do the disk layout. The simplest thing >> would be to keep the flat data directories but make the names of the >> partitions on disk just be logical inode numbers and then have a separate >> mapping of these inodes to logical names stored in ZK with a cache. I think >> this would make things like rename fast and atomic. The downside of this is >> that the 'ls' command will no longer tell you much about the data on a >> broker. >> > > Enabling renaming of topics is definitely something that will be nice to > have, however with the flat structure we won't be able to enable encrypting > different directories/ namespaces with different keys. However, with > directory hierarchy on disk can be achieved with logical names, each dir > will need a logical name though. > > >> -Jay >> >> On Wed, Oct 21, 2015 at 12:43 PM, Ashish Singh <asi...@cloudera.com> >> wrote: >> >> > In last KIP hangout following questions were raised. >> > >> > 1. >> > >> > *Whether or not to support move command? If yes, how do we support >> it.* >> > I think *move* command will be essential, once we start supporting >> > directories. However, implementation might be a bit convoluted. A few >> > things required for it will be, ability to mark a topic unavailable >> > during >> > the move, update brokers’ metadata cache to reflect the move. >> > 2. >> > >> > *How will acls/ configs inheritance work?* >> > Say we have /dc/ns/topic. >> > dc has dc_acl and dc_config. Similarly for ns and topic. >> > For being able to perform an action on /dc/ns/topic, the user must >> have >> > required perms on dc, ns and topic for that operation. For example, >> > User1 >> > will need DESCRIBE permissions on dc, ns and topic to be able to >> > describe >> > /dc/ns/topic. >> > For configs, configs for /dc/ns/topic will be topic_config + >> ns_config + >> > dc_config, in that order. So, if a config is specified for topic then >> > that >> > will be used, else it’s parent (ns) will be checked for that config, >> and >> > this goes on. >> > 3. >> > >> > *Will supporting n-deep hierarchy be a concern?* >> > This can be a performance concern, however it sounds more of a >> misusage >> > of the functionality or bad organization of topics. We can have a >> depth >> > limit, but I am not sure if it is required. >> > 4. >> > >> > *Will we continue to support multi-directory on disk, that was >> proposed >> > in KAFKA-188?* >> > Yes, we should be able to support that. It is within those >> directories, >> > namespaces will be created. The heuristics for choosing least loaded >> > disc/dir will remain same. >> > 5. >> > >> > *Will it be required to move existing topics from default directory/ >> > namespace to a particular directory/ namespace to enable mirror-maker >> > replicate topics in that directory/namespace?* >> > I do not think it will be required, as one can simple add /*/* to >> > mirror-maker’s blacklist and this will only capture topics that exist >> in >> > default namespace. @Joel, does this answer your question? >> > >> > >> > >> > On Fri, Oct 16, 2015 at 6:33 PM, Ashish Singh <asi...@cloudera.com> >> wrote: >> > >> > > On Thu, Oct 15, 2015 at 1:30 PM, Jiangjie Qin >> <j...@linkedin.com.invalid >> > > >> > > wrote: >> > > >> > >> Hey Jay, >> > >> >> > >> If we allow consumer to subscribe to /*/my-event, does that mean we >> > allow >> > >> consumer to consume cross namespaces? >> > > >> > > That is the idea. If a user has permissions then yes, he should be able >> > to >> > > consume from as many namespaces as he wants. >> > > >> > > >> > >> In that case it seems not >> > >> "hierarchical" but more like a name field filtering. i.e. user can >> > choose >> > >> to consume from topic where datacenter={x,y}, >> > >> topic_name={my-topic1,mytopic2}. Am I understanding right? >> > >> >> > > I think it is still hierarchical, however with possible filtering (as >> you >> > > said). >> > > >> > >> >> > >> Thanks, >> > >> >> > >> Jiangjie (Becket) Qin >> > >> >> > >> On Wed, Oct 14, 2015 at 12:49 PM, Jay Kreps <j...@confluent.io> wrote: >> > >> >> > >> > Hey Jason, >> > >> > >> > >> > I actually think this is one of the advantages. The problem we have >> > >> today >> > >> > is that you can't really do bidirectional replication between >> clusters >> > >> > because it would actually be a feedback loop. >> > >> > >> > >> > So the intended use would be that you would have a structure where >> the >> > >> > top-level directory was DIFFERENT but the topic names were the same, >> > so >> > >> if >> > >> > you maintain >> > >> > /chicago-datacenter/actual-topics >> > >> > /oregon-datacenter/actual topics >> > >> > etc. >> > >> > Then you replicate >> > >> > /chicago-datacenter/* => /oregon-datacenter >> > >> > and >> > >> > /oregon-datacenter/* => /chicago-datacenter >> > >> > >> > >> > People who want the aggregate feed subscribe to /*/my-event. >> > >> > >> > >> > The nice thing about this is it gives a unified namespace across all >> > >> > locations. >> > >> > >> > >> > Basically exactly what we do now but you no longer need to add new >> > >> clusters >> > >> > to get the namespacing. >> > >> > >> > >> > -Jay >> > >> > >> > >> > >> > >> > On Wed, Oct 14, 2015 at 11:24 AM, Jason Gustafson < >> ja...@confluent.io >> > > >> > >> > wrote: >> > >> > >> > >> > > Hey Ashish, thanks for the write-up. I think having a namespace >> > >> > capability >> > >> > > is a useful feature for Kafka, in particular with the addition of >> > the >> > >> > > authorization layer. I probably prefer Jay's hierarchical approach >> > if >> > >> > we're >> > >> > > going to embed the namespace in the topic name since it seems more >> > >> > general. >> > >> > > That said, one advantage of having a namespace independent of the >> > >> topic >> > >> > > name is that it simplifies replication between namespaces a bit >> > since >> > >> you >> > >> > > don't have to parse and rewrite topic names. Assuming that >> > >> hierarchical >> > >> > > topics will happen eventually anyway, I imagine a common pattern >> > >> would be >> > >> > > to preserve the same directory structure in multiple namespaces, >> so >> > >> > having >> > >> > > an easy mechanism for applications to switch between them would be >> > >> nice. >> > >> > > The namespace is kind of analogous to a chroot in this case. Of >> > course >> > >> > you >> > >> > > can achieve the same thing by having a configurable topic prefix, >> > just >> > >> > you >> > >> > > have to do all the topic rewriting, which I'm guessing will be a >> > >> little >> > >> > > annoying to implement in all of the clients and tools. However, >> the >> > >> > > tradeoff (as you mention in the KIP) is that all request schemas >> > have >> > >> to >> > >> > be >> > >> > > updated, which is also annoying. >> > >> > > >> > >> > > -Jason >> > >> > > >> > >> > > On Wed, Oct 14, 2015 at 12:03 AM, Ashish Singh < >> asi...@cloudera.com >> > > >> > >> > > wrote: >> > >> > > >> > >> > > > On Mon, Oct 12, 2015 at 7:37 PM, Gwen Shapira < >> g...@confluent.io> >> > >> > wrote: >> > >> > > > >> > >> > > > > This works really nicely from the consumer side, but what >> about >> > >> the >> > >> > > > > producer? If there are no more topics,do we allow producing >> to a >> > >> > > > directory >> > >> > > > > and have the Partitioner hash-partition messages between all >> > >> > partitions >> > >> > > > in >> > >> > > > > the multiple levels in a directory? >> > >> > > > > >> > >> > > > Good point. >> > >> > > > >> > >> > > > I am personally in favor of maintaining current behavior for >> > >> producer, >> > >> > > > i.e., letting users to only produce to a topic. This is >> different >> > >> for >> > >> > > > consumers, the suggested behavior is inline with current >> behavior. >> > >> One >> > >> > > can >> > >> > > > use regex subscription to achieve the same even today. >> > >> > > > >> > >> > > > > >> > >> > > > > Also, I think we want to preserve the consumer terminology of >> > >> > > "subscribe" >> > >> > > > > to topics / directories, but "assign" partitions - since the >> > >> consumer >> > >> > > > > behavior is different in those cases. >> > >> > > > > >> > >> > > > > On Mon, Oct 12, 2015 at 7:16 PM, Jay Kreps <j...@confluent.io> >> > >> wrote: >> > >> > > > > >> > >> > > > > > Okay this is similar to what I think we have talked about >> > >> before. >> > >> > Let >> > >> > > > me >> > >> > > > > > elaborate on the idea that I think has been floating >> > >> around--it's >> > >> > > > pretty >> > >> > > > > > similar with a few differences. >> > >> > > > > > >> > >> > > > > > I think what you are calling the "default namespace" is >> > >> basically >> > >> > > what >> > >> > > > I >> > >> > > > > > would call the "current working directory" with paths not >> > >> beginning >> > >> > > > with >> > >> > > > > > '/' being interpreted relative to this directory as in the >> fs. >> > >> > > > > > >> > >> > > > > > One thing you have to work out is what levels in this >> > hierarchy >> > >> you >> > >> > > can >> > >> > > > > > actually subscribe to. I think you are assuming only what we >> > >> > > currently >> > >> > > > > > consider a "topic", i.e. the first level of directories but >> > not >> > >> the >> > >> > > > > > partitions or parent dirs, would be subscribable. If you >> think >> > >> > about >> > >> > > > it, >> > >> > > > > > though, that constraint is a bit arbitrary. >> > >> > > > > > >> > >> > > > > > I'd propose instead the semantics that: >> > >> > > > > > - Subscribing to /a/b/c/0 means subscribing to the 0th >> > >> partition of >> > >> > > > topic >> > >> > > > > > "c" in directory /a/b >> > >> > > > > > - Subscribing to /a/b/c means subscribing to all partitions >> in >> > >> > > > > > topic/directory "c" >> > >> > > > > > - Subscribing to /a/b means subscribing to all partitions in >> > all >> > >> > > > > > topics/subdirectories under a/b recursively >> > >> > > > > > >> > >> > > > > > Effectively the concept of topics goes away entirely--you >> just >> > >> have >> > >> > > > > > partitions/logs and directories. In this respect rather than >> > >> adding >> > >> > > new >> > >> > > > > > concepts this new feature would actually just generalizes >> what >> > >> we >> > >> > > have >> > >> > > > > > (which I think is a good thing). >> > >> > > > > > >> > >> > > > > > -Jay >> > >> > > > > > >> > >> > > > > > On Mon, Oct 12, 2015 at 6:24 PM, Ashish Singh < >> > >> asi...@cloudera.com >> > >> > > >> > >> > > > > wrote: >> > >> > > > > > >> > >> > > > > > > On Mon, Oct 12, 2015 at 5:42 PM, Jay Kreps < >> > j...@confluent.io> >> > >> > > wrote: >> > >> > > > > > > >> > >> > > > > > > > Great. I definitely would strongly favor carrying over >> > >> user's >> > >> > > > > intuition >> > >> > > > > > > > from FS unless we think we need a very different model. >> > The >> > >> > minor >> > >> > > > > > details >> > >> > > > > > > > like the seperator and namespace term will help with >> that. >> > >> > > > > > > > >> > >> > > > > > > > Follow-up question, say I have a layout like >> > >> > > > > > > > /chicago-datacenter/user-events/pageviews >> > >> > > > > > > > Can I subscribe to >> > >> > > > > > > > /chicago-datacenter/user-events >> > >> > > > > > > > >> > >> > > > > > > Yes, however they will have need a regex like >> > >> > > > > > > /chicago-datacenter/user-events/* >> > >> > > > > > > >> > >> > > > > > > > to get the full firehose of user events from chicago? >> Can >> > I >> > >> > > > subscribe >> > >> > > > > > to >> > >> > > > > > > > /*/user-events >> > >> > > > > > > > to get user events originating from all datacenters? >> > >> > > > > > > > >> > >> > > > > > > Yes, however they will have need a regex like >> > >> > > > > > > /chicago-datacenter/user-events/* >> > >> > > > > > > Yes >> > >> > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > (Assuming, for now, that these are all in the same >> > >> cluster...) >> > >> > > > > > > > >> > >> > > > > > > > Also, just to confirm, it sounds from the proposal like >> > >> config >> > >> > > > > > overrides >> > >> > > > > > > > would become fully hierarchical so you can override >> config >> > >> at >> > >> > any >> > >> > > > > > > directory >> > >> > > > > > > > point. This will add complexity in implementation but I >> > >> think >> > >> > > will >> > >> > > > > > likely >> > >> > > > > > > > be much more operator friendly. >> > >> > > > > > > > >> > >> > > > > > > Yes, that is the idea. >> > >> > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > There are about a thousand details to discuss in terms >> of >> > >> how >> > >> > > this >> > >> > > > > > would >> > >> > > > > > > > impact the metadata request, various zk entries, and >> > various >> > >> > > other >> > >> > > > > > > aspects, >> > >> > > > > > > > but probably it makes sense to first agree on how we >> would >> > >> want >> > >> > > it >> > >> > > > to >> > >> > > > > > > work >> > >> > > > > > > > and then start to dive into how to implement that. >> > >> > > > > > > > >> > >> > > > > > > Agreed. >> > >> > > > > > > >> > >> > > > > > > > >> > >> > > > > > > > -Jay >> > >> > > > > > > > >> > >> > > > > > > > On Mon, Oct 12, 2015 at 5:28 PM, Ashish Singh < >> > >> > > asi...@cloudera.com >> > >> > > > > >> > >> > > > > > > wrote: >> > >> > > > > > > > >> > >> > > > > > > > > Hey Jay, thanks for reviewing the proposal. Answers >> > >> inline. >> > >> > > > > > > > > >> > >> > > > > > > > > On Mon, Oct 12, 2015 at 10:53 AM, Jay Kreps < >> > >> > j...@confluent.io> >> > >> > > > > > wrote: >> > >> > > > > > > > > >> > >> > > > > > > > > > Hey guys, >> > >> > > > > > > > > > >> > >> > > > > > > > > > I think this is an important feature and one we've >> > >> talked >> > >> > > about >> > >> > > > > > for a >> > >> > > > > > > > > > while. I really think trying to invent a new >> > >> nomenclature >> > >> > is >> > >> > > > > going >> > >> > > > > > to >> > >> > > > > > > > > make >> > >> > > > > > > > > > it hard for people to understand, though. As such I >> > >> > recommend >> > >> > > > we >> > >> > > > > > call >> > >> > > > > > > > > > namespaces "directories" and denote them with >> > '/'--this >> > >> > will >> > >> > > > make >> > >> > > > > > the >> > >> > > > > > > > > > feature 1000x more understandable to people. >> > >> > > > > > > > > >> > >> > > > > > > > > Essentially you are suggesting two things here. >> > >> > > > > > > > > 1. Use "Directory" instead of "Namespace" as it is >> more >> > >> > > > intuitive. >> > >> > > > > I >> > >> > > > > > > > agree. >> > >> > > > > > > > > 2. Make '/' as delimiter instead of ':'. Fine with me >> > and >> > >> I >> > >> > > agree >> > >> > > > > if >> > >> > > > > > we >> > >> > > > > > > > > call these directories, '/' is the way to go. >> > >> > > > > > > > > >> > >> > > > > > > > > I think we should inheret the >> > >> > > > > > > > > > semantics of normal unix fs in so far as it makes >> > sense. >> > >> > > > > > > > > > >> > >> > > > > > > > > > In this approach we get rid of topics entirely, >> > instead >> > >> we >> > >> > > > really >> > >> > > > > > > just >> > >> > > > > > > > > have >> > >> > > > > > > > > > partitions which are the equivalent of a file and >> > retain >> > >> > > their >> > >> > > > > > > numeric >> > >> > > > > > > > > > names, and the existing topic concept is just the >> > first >> > >> > > > directory >> > >> > > > > > > level >> > >> > > > > > > > > but >> > >> > > > > > > > > > we generalize to allow arbitrarily many more levels >> of >> > >> > > nesting. >> > >> > > > > > This >> > >> > > > > > > > > allows >> > >> > > > > > > > > > categorization of data, such as >> > >> > > > > > /datacenter1/user-events/page-views/3 >> > >> > > > > > > > and >> > >> > > > > > > > > > you can subscribe, apply configs or permissions at >> any >> > >> > level >> > >> > > of >> > >> > > > > the >> > >> > > > > > > > > > hierarchy. >> > >> > > > > > > > > > >> > >> > > > > > > > > +1. This actually requires just a minor change to >> > existing >> > >> > > > > proposal, >> > >> > > > > > > > i.e., >> > >> > > > > > > > > "some:namespace:topic" becomes "some/namespace/topic". >> > >> > > > > > > > > >> > >> > > > > > > > > > >> > >> > > > > > > > > > I'm actually not 100% such what the semantics of >> > >> accessing >> > >> > > data >> > >> > > > > in >> > >> > > > > > > > > > differing namespaces is in the current proposal, >> maybe >> > >> you >> > >> > > can >> > >> > > > > > > clarify >> > >> > > > > > > > > > Ashish? >> > >> > > > > > > > > >> > >> > > > > > > > > I will add more info to KIP on this, however I think a >> > >> client >> > >> > > > > should >> > >> > > > > > be >> > >> > > > > > > > > able to access data in any namespace as long as >> > following >> > >> > > > > conditions >> > >> > > > > > > are >> > >> > > > > > > > > satisfied. >> > >> > > > > > > > > >> > >> > > > > > > > > 1. Namespace, the client is trying to access, exists. >> > >> > > > > > > > > 2. The client has sufficient permissions on the >> > namespace >> > >> for >> > >> > > > type >> > >> > > > > of >> > >> > > > > > > > > operation the client is trying to perform on a topic >> > >> within >> > >> > > that >> > >> > > > > > > > namespace. >> > >> > > > > > > > > 3. The client has sufficient permissions on the topic >> > for >> > >> > type >> > >> > > of >> > >> > > > > > > > operation >> > >> > > > > > > > > the client is trying to perform on that topic. >> > >> > > > > > > > > >> > >> > > > > > > > > If we choose to go with what you suggested earlier >> that >> > >> just >> > >> > > have >> > >> > > > > > > > hierarchy >> > >> > > > > > > > > of directories, then step 3 will actually be covered >> in >> > >> step >> > >> > 2. >> > >> > > > > > > > > >> > >> > > > > > > > > In the current proposal, consumers will subscribe to a >> > >> topic >> > >> > > in a >> > >> > > > > > > > namespace >> > >> > > > > > > > > by specifying <namespace>:<topic> as the topic name. >> > They >> > >> can >> > >> > > > > > subscribe >> > >> > > > > > > > to >> > >> > > > > > > > > topics from multiple namespaces. >> > >> > > > > > > > > >> > >> > > > > > > > > Let me know if I totally missed your question. >> > >> > > > > > > > > >> > >> > > > > > > > > Since the point of Kafka is sharing data I think it is >> > >> really >> > >> > > > > > > > > > important that the grouping be just for >> > >> > > > > > > > > convenience/permissions/config/etc >> > >> > > > > > > > > > and that it remain possible to access multiple >> > >> > > > > > directories/namespaces >> > >> > > > > > > > > from >> > >> > > > > > > > > > the same client. >> > >> > > > > > > > > > >> > >> > > > > > > > > Totally agree with you. >> > >> > > > > > > > > >> > >> > > > > > > > > > >> > >> > > > > > > > > > -Jay >> > >> > > > > > > > > > >> > >> > > > > > > > > > On Fri, Oct 9, 2015 at 6:32 PM, Ashish Singh < >> > >> > > > > asi...@cloudera.com> >> > >> > > > > > > > > wrote: >> > >> > > > > > > > > > >> > >> > > > > > > > > > > Hey Guys, >> > >> > > > > > > > > > > >> > >> > > > > > > > > > > I just created KIP-37 for adding namespaces to >> > Kafka. >> > >> > > > > > > > > > > >> > >> > > > > > > > > > > KIP-37 >> > >> > > > > > > > > > > < >> > >> > > > > > > > > > > >> > >> > > > > > > > > > >> > >> > > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > >> > >> > > > > > >> > >> > > > > >> > >> > > > >> > >> > > >> > >> > >> > >> >> > >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-37+-+Add+Namespaces+to+Kafka >> > >> > > > > > > > > > > > >> > >> > > > > > > > > > > tracks the proposal. >> > >> > > > > > > > > > > >> > >> > > > > > > > > > > The idea is to make Kafka support multi-tenancy >> via >> > >> > > > namespaces. >> > >> > > > > > > > > > > >> > >> > > > > > > > > > > Feedback and comments are welcome. >> > >> > > > > > > > > > > >> > >> > > > > > > > > > > -- >> > >> > > > > > > > > > > >> > >> > > > > > > > > > > Regards, >> > >> > > > > > > > > > > Ashish >> > >> > > > > > > > > > > >> > >> > > > > > > > > > >> > >> > > > > > > > > >> > >> > > > > > > > > >> > >> > > > > > > > > >> > >> > > > > > > > > -- >> > >> > > > > > > > > >> > >> > > > > > > > > Regards, >> > >> > > > > > > > > Ashish >> > >> > > > > > > > > >> > >> > > > > > > > >> > >> > > > > > > >> > >> > > > > > > >> > >> > > > > > > >> > >> > > > > > > -- >> > >> > > > > > > >> > >> > > > > > > Regards, >> > >> > > > > > > Ashish >> > >> > > > > > > >> > >> > > > > > >> > >> > > > > >> > >> > > > >> > >> > > > >> > >> > > > >> > >> > > > -- >> > >> > > > >> > >> > > > Regards, >> > >> > > > Ashish >> > >> > > > >> > >> > > >> > >> > >> > >> >> > > >> > > >> > > >> > > -- >> > > >> > > Regards, >> > > Ashish >> > > >> > >> > >> > >> > -- >> > >> > Regards, >> > Ashish >> > >> > > > > -- > > Regards, > Ashish