Return-Path: X-Original-To: apmail-hbase-user-archive@www.apache.org Delivered-To: apmail-hbase-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 3876417DA3 for ; Tue, 10 Mar 2015 22:56:45 +0000 (UTC) Received: (qmail 44962 invoked by uid 500); 10 Mar 2015 22:56:42 -0000 Delivered-To: apmail-hbase-user-archive@hbase.apache.org Received: (qmail 44889 invoked by uid 500); 10 Mar 2015 22:56:42 -0000 Mailing-List: contact user-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@hbase.apache.org Delivered-To: mailing list user@hbase.apache.org Received: (qmail 44877 invoked by uid 99); 10 Mar 2015 22:56:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Mar 2015 22:56:42 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of alex.baranov.v@gmail.com designates 209.85.215.50 as permitted sender) Received: from [209.85.215.50] (HELO mail-la0-f50.google.com) (209.85.215.50) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Mar 2015 22:56:38 +0000 Received: by labge10 with SMTP id ge10so5070020lab.7 for ; Tue, 10 Mar 2015 15:56:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=exSQPBpz7FEm5IJRHF5fpi0t7zuy3XgrPdQawYZF+ds=; b=mb3w4bj8rzaw5qEgbzbZY7g1QwgTFfT5UO9wtRgpx5ctR7TBjcee1W5nA0W1FVO36R lIMvrCtj0C3/ZKfFsIvQ9KXS+VHGbqU2Z49fEYeMMDKioKoCS9aMFDX7xo9/uRGG6eH9 0bSch0xedZMvb9/eNqFoNUK5YFrFysQHgSjmXx3cn4yIKxk2/ld7DNW4HE8OFJO1TY+y 8e94vbXNh8K2i4PgMmd7cgDqiMEFmnNqeDQmcGJVkP2xu7j7aIDkYi0agFD6oDT8VKqM AVVQ0v/uRnVn075d0sZYeNf29UNAVE3aU3bZB4GaqEXR/JHsfB7mBn+ilchmCCKZJnc5 txqA== MIME-Version: 1.0 X-Received: by 10.152.87.115 with SMTP id w19mr27136673laz.66.1426028177507; Tue, 10 Mar 2015 15:56:17 -0700 (PDT) Received: by 10.25.140.77 with HTTP; Tue, 10 Mar 2015 15:56:17 -0700 (PDT) In-Reply-To: References: <54FA078B.90009@gmail.com> Date: Tue, 10 Mar 2015 15:56:17 -0700 Message-ID: Subject: Re: Standalone == Dev Only? From: Alex Baranau To: user@hbase.apache.org Content-Type: multipart/alternative; boundary=001a11c34c54f5cd780510f70e18 X-Virus-Checked: Checked by ClamAV on apache.org --001a11c34c54f5cd780510f70e18 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On: - Future investment in a design that scales better Indeed, designing against key value store is different from designing against RDBMs. I wonder if you explored an option to abstract the storage layer and using "single node purposed" store until you grow enough to switch to another one= ? E.g. you could use LevelDB [1] that is pretty fast (and there's java rewrite of it, if you need java APIs [2]). We use it in CDAP [3] in a standalone version to make the development environment (SDK) lighter. We swap it with HBase in distributed mode without changing the application code. It doesn't have coprocessors and other specific to HBase features you are talking about, though. But you can figure out how to bridge client APIs with an abstraction layer (e.g. we have common Table interface [4]). You can even add versions on cells (see [5] for example of how we do it). Also, you could use RDBMs behind key-value abstraction, to start with, while keeping your app design clean out of RDBMs specifics. Alex Baranau [1] https://github.com/google/leveldb [2] https://github.com/dain/leveldb [3] http://cdap.io [4] https://github.com/caskdata/cdap/blob/develop/cdap-api/src/main/java/co/cas= k/cdap/api/dataset/table/Table.java [5] https://github.com/caskdata/cdap/blob/develop/cdap-data-fabric/src/main/jav= a/co/cask/cdap/data2/dataset2/lib/table/leveldb/LevelDBTableCore.java -- http://cdap.io - open source framework to build and run data applications on Hadoop & HBase On Tue, Mar 10, 2015 at 8:42 AM, Rose, Joseph < Joseph.Rose@childrens.harvard.edu> wrote: > Sorry, never answered your question about versions. I have 1.0.0 version > of hbase, which has hadoop-common 2.5.1 in its lib folder. > > > -j > > > On 3/10/15, 11:36 AM, "Rose, Joseph" > wrote: > > >I tried it and it does work now. It looks like the interface for > >hadoop.fs.Syncable changed in March, 2012 to remove the deprecated sync(= ) > >method and define only hsync() instead. The same committer did the right > >thing and removed sync() from FSDataOutputStream at the same time. The > >remaining hsync() method calls flush() if the underlying stream doesn't > >implement Syncable. > > > > > >-j > > > > > >On 3/6/15, 5:24 PM, "Stack" wrote: > > > >>On Fri, Mar 6, 2015 at 1:50 PM, Rose, Joseph < > >>Joseph.Rose@childrens.harvard.edu> wrote: > >> > >>> I think the final issue with hadoop-common (re: unimplemented sync fo= r > >>> local filesystems) is the one showstopper for us. We have to have > >>>assured > >>> durability. I=B9m willing to devote some cycles to get it done, so ma= ybe > >>>I=B9m > >>> the one that says this problem is worthwhile. > >>> > >>> > >>I remember that was once the case but looking in codebase now, sync cal= ls > >>through to ProtobufLogWriter which does a 'flush' on output (though > >>comment > >>says this is a noop). The output stream is an instance of > >>FSDataOutputStream made with a RawLOS. The flush should come out here: > >> > >>220 public void flush() throws IOException { fos.flush(); } > >> > >>... where fos is an instance of FileOutputStream. > >> > >>In sync we go on to call hflush which looks like it calls flush again. > >> > >>What hadoop/hbase versions we talking about? HADOOP-8861 added the abov= e > >>behavior for hadoop 1.2. > >> > >>Try it I'd say. > >> > >>St.Ack > > > > --001a11c34c54f5cd780510f70e18--