Sorry I missed the rest of this conversation. Cool so this Thrift 'server' really seems the best way to go, I guess I wasn't really understanding much about it before.
Any ideas when we should start seeing development on this? -- Thiago 2007/12/9 edward yoon <[EMAIL PROTECTED]>: > > Good idea, chad. > Isn't it so much better when we discuss like this, rather than unilateral > condemn one another? :) > > ------------------------------ > > B. Regards, > > Edward yoon @ NHN, corp. > Home : http://www.udanax.org > > > > From: [EMAIL PROTECTED] > > To: hadoop-user@lucene.apache.org > > Date: Sat, 8 Dec 2007 10:58:21 -0800 > > Subject: Re: Talking to HBase via tcp/socket > > > > > > I think we might be talking past each other a little bit here. Here is my > > attempt to clarify my suggestion and some of my thinking - hopefully it > > will help. > > > > First, let me state that I fully support the notion of a socket based > > interface to Hbase. > > The REST API is a great starter API - low barrier to entry for many > > developers to start playing with Hbase but probably not what you want for > > heavy lifting. > > > > Also, let me clear up one possible misunderstanding: Thrift does provide a > > traditional socket transport. > > > > The key thing is that Thrift provides a nice object-based interface on top > > of that socket transport and it will generate client bindings for a whole > > host of languages (C++, Java, Ruby, PHP, Python, Perl, Erlang, Haskell, > > Ocaml so far). This will allow better programming abstractions for clients > > in those languages - they will work with native objects and Thrift will > > handle all the marshalling and unmarshalling and the details of the > > transport mechanism. > > > > So basically, I think I am supporting the thinking behind the work that > > Edward has done on the socket server - I am just suggesting that the > > implementation would be more full-featured, support more languages, and be > > developer-friendly if we do it using Thrift. I also don't think it is a > > tremendous amount of work - like I said the heavy lifting is probably in > > designing the APIs (Bryan, thanks for setting up the Wiki page for that). > > > > The current notion that we are kicking around is to wrap the Java Hbase > > client in a server that exposes Thrift interfaces to do all the things the > > Hbase client can do. That becomes a gateway that can be communicated with > > over standard sockets by making use of the Thrift client bindings. The > > reason I think this is the way to go, at least for now, is because I expect > > the Java Hbase client will become more and more full-featured soon (various > > kinds of caching, scanner read-ahead buffers, etc.) and I think we should > > avoid having to implement those features in multiple languages until the > > project becomes a lot more mature. Also, if there are multiple Hbase client > > processes on a single machine, the gateway will allow any caching or > > buffering to be shared across those processes. Eventually, all the Hbase > > RPC could be converted over to Thrift and then those who really wanted to > > could port the Hbase client to other languages - although I'd recommend > > that we hold off on that for quite some time. > > > > It seems to me that the HQL issue is actually orthogonal to this one. I > > think there is room for an RPC interface that executes direct Hbase calls > > and one that allows for executing HQL. HQL also provides a nice > > implementation-independent compatibility mechanism for other Hbase-like > > systems - for example, we have talked with the Hypertable folks and they > > are planning to adopt HQL syntax as well. We probably need to build some > > kind of standard around HQL as well. > > > > WRT to Bryan concerns about fresh client libraries for each language, I > > think the gateway notion can take care of that: the HQL translation into > > lower-level Hbase commands can simply be implemented there, either inside > > the Java Hbase client or as an add-on jar. > > > > I do share Bryan's concerns about HQL in terms of whether it truly exploits > > the full parallelism of Hbase, especially if one is expecting to issue a > > single query and return data from across the entire key space. Perhaps I am > > missing something but I think this area needs a little more exploration. > > I'll try to put together some thoughts on this if I get the time. > > > > Chad > > > > > > > On 12/8/07 9:43 AM, "Bryan Duxbury" wrote: > > > > Except, there is NO traditional interface for HBase. We have the > > choice to build whatever interface we want. > > > > I think the fundamental difference between Thrift/REST and an HQL > > socket server would be the TYPE of the interface. Thrift/REST mostly > > matches the existing underlying API (Thrift more so than REST), but > > HQL requires us to develop and maintain a whole SQL-like syntax, and > > to redefine our operations in terms of SQL, and figure out good ways > > to manage bulk of data that can be returned, and it wouldn't even be > > aligned with any known standard, so completely fresh client libraries > > for every language. It just seems like a lot more effort for what > > results in a more complex interface than we get with our other efforts. > > > > On Dec 8, 2007, at 3:36 AM, edward yoon wrote: > > > >> > >> My notebook have both USB port and PS/2 port. > >> But, the maker didn't say PS/2 port is a unnecessary thing. > >> > >> Premature withdrawal of traditional interface will guarantee failure. > >> > >> Thanks, > >> Edward. > >> ------------------------------ > >> B. Regards, > >> > >> Edward yoon @ NHN, corp. > >> Home : http://www.udanax.org > >> > >>> From: [EMAIL PROTECTED] > >>> To: hadoop-user@lucene.apache.org > >>> Date: Fri, 7 Dec 2007 22:44:51 -0800 > >>> Subject: Re: Talking to HBase via tcp/socket > >>> > >>> > >>> The heavy lifting in this exercise is mainly in designing the RPC > >>> calls themselves - after that, it is probably a simple matter of > >>> programming. > >>> > >>> Anyone want to take a crack at it? > >>> > >>> Chad > >>> > >>> > >>> On 12/7/07 11:52 AM, "Bryan Duxbury" wrote: > >>> > >>> There's nothing stopping us from creating REST "methods" for > >>> creating/ > >>> deleting tables. That's mostly a question of whether or not we want > >>> to expose the functionality elsewhere than the shell. You could > >>> create a ticket for that and we can discuss it. > >>> > >>> I agree that XML can be heavy, which is why we are implementing the > >>> ability to use the "Accept: multipart/related" header to get back the > >>> data as pure binary with boundaries. This should alleviate the > >>> overhead of using XML for the most part. > >>> > >>> Hey, I hardly know Java, and I'm hacking all sorts of stuff! > >>> Seriously though, I think that as far as performant cross-platform > >>> access goes, the future is a Thrift servlet. I don't have a timeline > >>> on that at all yet. > >>> > >>> -Bryan > >>> > >>> On Dec 7, 2007, at 11:44 AM, Thiago Jackiw wrote: > >>> > >>>> The are a few reasons why I wanted to go with Socket instead of > >>>> REST, > >>>> to name a couple: > >>>> > >>>> - By applying Edward's patch I was able to gain access to the > >>>> 'entire' > >>>> HBase interface, from creating to deleting tables, etc, which I > >>>> couldn't do with REST. Is this flexibility something sought for > >>>> future > >>>> development? > >>>> - Performance gain. Working with xml can sometimes be problematic > >>>> and 'heavy'. > >>>> > >>>>> I would suggest exploring building a Thrift servlet that mimics > >>>>> the structure of the REST servlet > >>>> That could work if I knew Java :P > >>>> > >>>> Anyhow, despite HBase being pretty new, it sure kicks ass. Kudos to > >>>> you guys. > >>>> > >>>> -- > >>>> Thiago > >>>> > >>>> > >>>> On Dec 7, 2007 10:42 AM, Bryan Duxbury wrote: > >>>>> What's the motivation for using straight a straight TCP socket > >>>>> rather > >>>>> than REST? The motivation behind producing a REST interface in the > >>>>> first place is that since the client still lives in Java, then > >>>>> we get > >>>>> to take advantage of all the built-in Java client work that's been > >>>>> done. If you're looking for a more lightweight way to interact with > >>>>> HBase (since REST can be a little heavy at times), then rather than > >>>>> go the HQL route, I would suggest exploring building a Thrift > >>>>> servlet > >>>>> that mimics the structure of the REST servlet. This is something > >>>>> that's been discussed as a next step for HBase interoperability. > >>>>> > >>>>> -Bryan > >>>>> > >>>>> > >>>>> On Dec 6, 2007, at 8:25 PM, Thiago Jackiw wrote: > >>>>> > >>>>>> Is there a way to interact with HBase via TCP/socket connection > >>>>>> directly instead of just using the REST api? > >>>>>> > >>>>>> Thanks > >>>>> > >>>>> > >>> > >>> > >>> > >> > >> _________________________________________________________________ > >> You keep typing, we keep giving. Download Messenger and join the > >> i'm Initiative now. > >> http://im.live.com/messenger/im/home/?source=TAGLM > > > > > > > > _________________________________________________________________ > You keep typing, we keep giving. Download Messenger and join the i'm > Initiative now. > http://im.live.com/messenger/im/home/?source=TAGLM