Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Josh Elser

Andrew Purtell wrote:

This is because the Accumulo shell is a custom built shell? If so, we had
one of those once and replaced it with the IRB based one. We didn't settle
on JRuby right away but, at the time, the consensus was we didn't want to
be in the business of maintaining yet another REPL when specialist open
source communities have already done that. Why has this changed? Has it?


Accumulo shell is just a Java program that uses JLine. It has no control 
flow structures, variables, or anything like that.



Why is the Accumulo shell easier to script with? Does it have control flow
constructs? Variable assignment? Or is it easier somehow because it does
not have those things? Even the system shell has those. Hmm... Are we
saying that any control flow or variables/substitution should be done by
calling our shell from a bash or sh script? Wouldn't that be super slow
given Java's startup time for every invocation of our shell? A bit like
trying to script the AWS command line utilities, which is excruciating.


This is what I was trying to get at: the lack of typical language 
constructs is both beneficial and irritating. I think it depends on what 
you really want to do. Does that mean trying to maintain two shells is 
worth it? I'm not sure, but I'm also not sure where the happy medium is.


If you exec the shell to just run one command at a time, yes. It is 
slow. You can redirect input or provide a file of commands to run at one 
time which don't suffer from the JVM startup problem.



I can see why a custom shell built with Java would easier to test where the
rest of the project is using Surefire/JUnit. That's a developer convenience
concern though, not a user convenience one.


That's only if you assume HBase users actually understand Ruby though, 
no? I would think that something which acts like your normal unix shell 
would be familiar to users w/o the need to understand some other language.




On Wed, May 13, 2015 at 10:41 AM, Sean Busbeybus...@cloudera.com  wrote:


Pros:

* It's easier to test and maintain
* it's easier to script with
* its interactive mode feels mode focused on the task of interacting with
a cluster to me (maybe this is just acting like a psql or mysql shell)

Cons

* adding custom commands requires knowing java

--
Sean
On May 13, 2015 12:31 PM, Andrew Purtellapurt...@apache.org  wrote:


Why is the Accumulo shell superior?

Is it scriptable?


On Wed, May 13, 2015 at 10:28 AM, Sean Busbeybus...@cloudera.com

wrote:

I would love to rip out the JRuby shell entirely and make something

closer

to the Accumulo shell, but I expect that will

1) be way more work

2) be even less compatible for those that rely on customizations.

I figured given time we could get a preview user shell (rather than
power shell via irb) together in 2.0 and aim for default in 3.0.

--
Sean
On May 13, 2015 12:19 PM, Stackst...@duboce.net  wrote:


Nice writeup Sean.

Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license

is

still amenable and hopefully jruby 9k will be slimmer than jruby

1.7+.

But if we are going to do a significant shell refactor for hbase 2.0,
should we consider doing something more radical; e.g. a new shell? If
interest, could start up a new thread so don't distract from this

one.

St.Ack




On Wed, May 13, 2015 at 9:22 AM, Sean Busbeybus...@cloudera.com

wrote:

Hi folks!

If you weren't aware, our current shell relies on Ruby,

specifically

the

REPL program IRB from JRuby. When we launched 1.0 we were on JRuby

1.6

with

defaults, which means we're stuck on Ruby 1.8.

For those that don't already know, Ruby 1.8 is super old and has

been

walking off into the sunset for a few years now. Most (but not

all!)

formal

support systems for running Ruby have EOLed 1.8 and there are

numerous

known issues with it.

Right now there's an open ticket to get us on JRuby 1.7 so that our

shell

can work on PPC systems[1]. That version of JRuby defaults to Ruby

1.9

but

can be run in Ruby 1.8 mode. There are some implementation details
outstanding, but I'm hoping that ticket can work out such that it

can

land

in branch-1.

For HBase 2.0, I'd like us to plan for a little farther out in the

future

than just updating to Ruby 1.9 (though that would be a fine

incremental

step with some non-trivial work attached). The current version of

Ruby

is

2.2. Much like the move from 1.8 -  1.9 it is not backwards

compatible.

JRuby's next major maintenance release line is version 9000[2]

and

it

will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is

in

its

second preview release. They still have a few feature complete

items

to

address before they hit their first GA release.

I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This

will

cause operator pain to folks with advanced scripts based on Ruby

1.8,

but

it should allow us to update versions to avoid e.g. perf,

correctness,

and

security issues much more easily over the 

Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Andrew Purtell
 That's only if you assume HBase users actually understand Ruby though, no?

Yes, and this is a fair point.

The language REPL in which we're embedding the shell DSL doesn't have to be
Ruby. JavaScript would work, maybe via Nashorn. Python would work, via
Jython. Or Scala's REPL, even.


On Wed, May 13, 2015 at 1:10 PM, Josh Elser josh.el...@gmail.com wrote:

 Andrew Purtell wrote:

 This is because the Accumulo shell is a custom built shell? If so, we had
 one of those once and replaced it with the IRB based one. We didn't settle
 on JRuby right away but, at the time, the consensus was we didn't want to
 be in the business of maintaining yet another REPL when specialist open
 source communities have already done that. Why has this changed? Has it?


 Accumulo shell is just a Java program that uses JLine. It has no control
 flow structures, variables, or anything like that.

  Why is the Accumulo shell easier to script with? Does it have control flow
 constructs? Variable assignment? Or is it easier somehow because it does
 not have those things? Even the system shell has those. Hmm... Are we
 saying that any control flow or variables/substitution should be done by
 calling our shell from a bash or sh script? Wouldn't that be super slow
 given Java's startup time for every invocation of our shell? A bit like
 trying to script the AWS command line utilities, which is excruciating.


 This is what I was trying to get at: the lack of typical language
 constructs is both beneficial and irritating. I think it depends on what
 you really want to do. Does that mean trying to maintain two shells is
 worth it? I'm not sure, but I'm also not sure where the happy medium is.

 If you exec the shell to just run one command at a time, yes. It is slow.
 You can redirect input or provide a file of commands to run at one time
 which don't suffer from the JVM startup problem.

  I can see why a custom shell built with Java would easier to test where
 the
 rest of the project is using Surefire/JUnit. That's a developer
 convenience
 concern though, not a user convenience one.


 That's only if you assume HBase users actually understand Ruby though, no?
 I would think that something which acts like your normal unix shell would
 be familiar to users w/o the need to understand some other language.



 On Wed, May 13, 2015 at 10:41 AM, Sean Busbeybus...@cloudera.com
 wrote:

  Pros:

 * It's easier to test and maintain
 * it's easier to script with
 * its interactive mode feels mode focused on the task of interacting
 with
 a cluster to me (maybe this is just acting like a psql or mysql shell)

 Cons

 * adding custom commands requires knowing java

 --
 Sean
 On May 13, 2015 12:31 PM, Andrew Purtellapurt...@apache.org  wrote:

  Why is the Accumulo shell superior?

 Is it scriptable?


 On Wed, May 13, 2015 at 10:28 AM, Sean Busbeybus...@cloudera.com

 wrote:

 I would love to rip out the JRuby shell entirely and make something

 closer

 to the Accumulo shell, but I expect that will

 1) be way more work

 2) be even less compatible for those that rely on customizations.

 I figured given time we could get a preview user shell (rather than
 power shell via irb) together in 2.0 and aim for default in 3.0.

 --
 Sean
 On May 13, 2015 12:19 PM, Stackst...@duboce.net  wrote:

  Nice writeup Sean.

 Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license

 is

 still amenable and hopefully jruby 9k will be slimmer than jruby

 1.7+.

 But if we are going to do a significant shell refactor for hbase 2.0,
 should we consider doing something more radical; e.g. a new shell? If
 interest, could start up a new thread so don't distract from this

 one.

 St.Ack




 On Wed, May 13, 2015 at 9:22 AM, Sean Busbeybus...@cloudera.com

 wrote:

 Hi folks!

 If you weren't aware, our current shell relies on Ruby,

 specifically

 the

 REPL program IRB from JRuby. When we launched 1.0 we were on JRuby

 1.6

 with

 defaults, which means we're stuck on Ruby 1.8.

 For those that don't already know, Ruby 1.8 is super old and has

 been

 walking off into the sunset for a few years now. Most (but not

 all!)

 formal

 support systems for running Ruby have EOLed 1.8 and there are

 numerous

 known issues with it.

 Right now there's an open ticket to get us on JRuby 1.7 so that our

 shell

 can work on PPC systems[1]. That version of JRuby defaults to Ruby

 1.9

 but

 can be run in Ruby 1.8 mode. There are some implementation details
 outstanding, but I'm hoping that ticket can work out such that it

 can

 land

 in branch-1.

 For HBase 2.0, I'd like us to plan for a little farther out in the

 future

 than just updating to Ruby 1.9 (though that would be a fine

 incremental

 step with some non-trivial work attached). The current version of

 Ruby

 is

 2.2. Much like the move from 1.8 -  1.9 it is not backwards

 compatible.

 JRuby's next major maintenance release line is version 9000[2]

 and

 it

 will start out *only* 

Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Andrew Purtell
 Only shell we could
​ ​
swap in w/o annoying users would be SQL (ducks);
​[...]
 You would
​ ​
also have to manage expectations: i.e. that the SQL would be extremely
​ ​
basic and that the REPL does not come with an idling 100 node  cluster
​ ​
ready to take up any involved queries.

If we are talking about adding a SQL shell, it doesn't have to be extremely
basic, we can revisit my proposal from the other month about embedding
Phoenix.


On Wed, May 13, 2015 at 4:50 PM, Stack st...@duboce.net wrote:

 On Wed, May 13, 2015 at 1:38 PM, Andrew Purtell apurt...@apache.org
 wrote:

   That's only if you assume HBase users actually understand Ruby though,
  no?
 
  Yes, and this is a fair point.
 
  The language REPL in which we're embedding the shell DSL doesn't have to
 be
  Ruby. JavaScript would work, maybe vi
 ​​
 a Nashorn. Python would work, via
  Jython. Or Scala's REPL, even.
 
 
 
 JRuby had best interpreter and the others considered had extra baggage
 doing a DSL (For history, see HBASE-487). Having to put tabs in your shell
 doing loops and no jline at the time made jython a non-runner though I
 wanted it to win (Has anything changed here?) JS is probably way better
 than when I looked at it back then?

 Regardless, whether jython, JS, scala, or custom, IMO, we'd just be pissing
 of users if we swap one idiosyncratic for another.  Only shell we could
 swap in w/o annoying users would be SQL (ducks); and even here you'd
 probably have to implement a bunch of operators on the other side of
 sqllines bang operator (or equivalent) to do the hbase specifics. You would
 also have to manage expectations: i.e. that the SQL would be extremely
 basic and that the REPL does not come with an idling 100 node  cluster
 ready to take up any involved queries.

 St.Ack




  On Wed, May 13, 2015 at 1:10 PM, Josh Elser josh.el...@gmail.com
 wrote:
 
   Andrew Purtell wrote:
  
   This is because the Accumulo shell is a custom built shell? If so, we
  had
   one of those once and replaced it with the IRB based one. We didn't
  settle
   on JRuby right away but, at the time, the consensus was we didn't want
  to
   be in the business of maintaining yet another REPL when specialist
 open
   source communities have already done that. Why has this changed? Has
 it?
  
  
   Accumulo shell is just a Java program that uses JLine. It has no
 control
   flow structures, variables, or anything like that.
  
Why is the Accumulo shell easier to script with? Does it have control
  flow
   constructs? Variable assignment? Or is it easier somehow because it
 does
   not have those things? Even the system shell has those. Hmm... Are we
   saying that any control flow or variables/substitution should be done
 by
   calling our shell from a bash or sh script? Wouldn't that be super
 slow
   given Java's startup time for every invocation of our shell? A bit
 like
   trying to script the AWS command line utilities, which is
 excruciating.
  
  
   This is what I was trying to get at: the lack of typical language
   constructs is both beneficial and irritating. I think it depends on
 what
   you really want to do. Does that mean trying to maintain two shells is
   worth it? I'm not sure, but I'm also not sure where the happy medium
 is.
  
   If you exec the shell to just run one command at a time, yes. It is
 slow.
   You can redirect input or provide a file of commands to run at one time
   which don't suffer from the JVM startup problem.
  
I can see why a custom shell built with Java would easier to test
 where
   the
   rest of the project is using Surefire/JUnit. That's a developer
   convenience
   concern though, not a user convenience one.
  
  
   That's only if you assume HBase users actually understand Ruby though,
  no?
   I would think that something which acts like your normal unix shell
 would
   be familiar to users w/o the need to understand some other language.
  
  
  
   On Wed, May 13, 2015 at 10:41 AM, Sean Busbeybus...@cloudera.com
   wrote:
  
Pros:
  
   * It's easier to test and maintain
   * it's easier to script with
   * its interactive mode feels mode focused on the task of
 interacting
   with
   a cluster to me (maybe this is just acting like a psql or mysql
 shell)
  
   Cons
  
   * adding custom commands requires knowing java
  
   --
   Sean
   On May 13, 2015 12:31 PM, Andrew Purtellapurt...@apache.org
  wrote:
  
Why is the Accumulo shell superior?
  
   Is it scriptable?
  
  
   On Wed, May 13, 2015 at 10:28 AM, Sean Busbeybus...@cloudera.com
  
   wrote:
  
   I would love to rip out the JRuby shell entirely and make something
  
   closer
  
   to the Accumulo shell, but I expect that will
  
   1) be way more work
  
   2) be even less compatible for those that rely on customizations.
  
   I figured given time we could get a preview user shell (rather
 than
   power shell via irb) together in 2.0 and aim for default in 3.0.
  
   --
   Sean
   On May 13, 2015 12:19 PM, 

Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Michael Segel
If you were going to replace Ruby, Python (Jython) and Scala would make more 
sense. 

Then you could go to play (the Scala GUI) for a GUI to HBase reusing the code. 


 On May 13, 2015, at 3:38 PM, Andrew Purtell apurt...@apache.org wrote:
 
 That's only if you assume HBase users actually understand Ruby though, no?
 
 Yes, and this is a fair point.
 
 The language REPL in which we're embedding the shell DSL doesn't have to be
 Ruby. JavaScript would work, maybe via Nashorn. Python would work, via
 Jython. Or Scala's REPL, even.
 
 
 On Wed, May 13, 2015 at 1:10 PM, Josh Elser josh.el...@gmail.com wrote:
 
 Andrew Purtell wrote:
 
 This is because the Accumulo shell is a custom built shell? If so, we had
 one of those once and replaced it with the IRB based one. We didn't settle
 on JRuby right away but, at the time, the consensus was we didn't want to
 be in the business of maintaining yet another REPL when specialist open
 source communities have already done that. Why has this changed? Has it?
 
 
 Accumulo shell is just a Java program that uses JLine. It has no control
 flow structures, variables, or anything like that.
 
 Why is the Accumulo shell easier to script with? Does it have control flow
 constructs? Variable assignment? Or is it easier somehow because it does
 not have those things? Even the system shell has those. Hmm... Are we
 saying that any control flow or variables/substitution should be done by
 calling our shell from a bash or sh script? Wouldn't that be super slow
 given Java's startup time for every invocation of our shell? A bit like
 trying to script the AWS command line utilities, which is excruciating.
 
 
 This is what I was trying to get at: the lack of typical language
 constructs is both beneficial and irritating. I think it depends on what
 you really want to do. Does that mean trying to maintain two shells is
 worth it? I'm not sure, but I'm also not sure where the happy medium is.
 
 If you exec the shell to just run one command at a time, yes. It is slow.
 You can redirect input or provide a file of commands to run at one time
 which don't suffer from the JVM startup problem.
 
 I can see why a custom shell built with Java would easier to test where
 the
 rest of the project is using Surefire/JUnit. That's a developer
 convenience
 concern though, not a user convenience one.
 
 
 That's only if you assume HBase users actually understand Ruby though, no?
 I would think that something which acts like your normal unix shell would
 be familiar to users w/o the need to understand some other language.
 
 
 
 On Wed, May 13, 2015 at 10:41 AM, Sean Busbeybus...@cloudera.com
 wrote:
 
 Pros:
 
 * It's easier to test and maintain
 * it's easier to script with
 * its interactive mode feels mode focused on the task of interacting
 with
 a cluster to me (maybe this is just acting like a psql or mysql shell)
 
 Cons
 
 * adding custom commands requires knowing java
 
 --
 Sean
 On May 13, 2015 12:31 PM, Andrew Purtellapurt...@apache.org  wrote:
 
 Why is the Accumulo shell superior?
 
 Is it scriptable?
 
 
 On Wed, May 13, 2015 at 10:28 AM, Sean Busbeybus...@cloudera.com
 
 wrote:
 
 I would love to rip out the JRuby shell entirely and make something
 
 closer
 
 to the Accumulo shell, but I expect that will
 
 1) be way more work
 
 2) be even less compatible for those that rely on customizations.
 
 I figured given time we could get a preview user shell (rather than
 power shell via irb) together in 2.0 and aim for default in 3.0.
 
 --
 Sean
 On May 13, 2015 12:19 PM, Stackst...@duboce.net  wrote:
 
 Nice writeup Sean.
 
 Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license
 
 is
 
 still amenable and hopefully jruby 9k will be slimmer than jruby
 
 1.7+.
 
 But if we are going to do a significant shell refactor for hbase 2.0,
 should we consider doing something more radical; e.g. a new shell? If
 interest, could start up a new thread so don't distract from this
 
 one.
 
 St.Ack
 
 
 
 
 On Wed, May 13, 2015 at 9:22 AM, Sean Busbeybus...@cloudera.com
 
 wrote:
 
 Hi folks!
 
 If you weren't aware, our current shell relies on Ruby,
 
 specifically
 
 the
 
 REPL program IRB from JRuby. When we launched 1.0 we were on JRuby
 
 1.6
 
 with
 
 defaults, which means we're stuck on Ruby 1.8.
 
 For those that don't already know, Ruby 1.8 is super old and has
 
 been
 
 walking off into the sunset for a few years now. Most (but not
 
 all!)
 
 formal
 
 support systems for running Ruby have EOLed 1.8 and there are
 
 numerous
 
 known issues with it.
 
 Right now there's an open ticket to get us on JRuby 1.7 so that our
 
 shell
 
 can work on PPC systems[1]. That version of JRuby defaults to Ruby
 
 1.9
 
 but
 
 can be run in Ruby 1.8 mode. There are some implementation details
 outstanding, but I'm hoping that ticket can work out such that it
 
 can
 
 land
 
 in branch-1.
 
 For HBase 2.0, I'd like us to plan for a little farther out in the
 
 future
 
 than just 

Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Lars Francke
I'm also in favor of a rewrite in another language (but it doesn't have to
be now). This is very subjective but I never got the hang of the Ruby
stuff, it's always annoying to use and I end up googling Ruby stuff almost
every time I want to do something that's not covered in the help command.
Scala would make way more sense to me. If no rewrite I have no problem
moving to Ruby 2.2.

I know it's at least a few years out but a Java REPL might be coming in
Java 9 (http://openjdk.java.net/projects/kulla/) so if we're still
discussing by the time we switch to JDK9 that might be an option ;-)


On Wed, May 13, 2015 at 10:38 PM, Andrew Purtell apurt...@apache.org
wrote:

  That's only if you assume HBase users actually understand Ruby though,
 no?

 Yes, and this is a fair point.

 The language REPL in which we're embedding the shell DSL doesn't have to be
 Ruby. JavaScript would work, maybe via Nashorn. Python would work, via
 Jython. Or Scala's REPL, even.


 On Wed, May 13, 2015 at 1:10 PM, Josh Elser josh.el...@gmail.com wrote:

  Andrew Purtell wrote:
 
  This is because the Accumulo shell is a custom built shell? If so, we
 had
  one of those once and replaced it with the IRB based one. We didn't
 settle
  on JRuby right away but, at the time, the consensus was we didn't want
 to
  be in the business of maintaining yet another REPL when specialist open
  source communities have already done that. Why has this changed? Has it?
 
 
  Accumulo shell is just a Java program that uses JLine. It has no control
  flow structures, variables, or anything like that.
 
   Why is the Accumulo shell easier to script with? Does it have control
 flow
  constructs? Variable assignment? Or is it easier somehow because it does
  not have those things? Even the system shell has those. Hmm... Are we
  saying that any control flow or variables/substitution should be done by
  calling our shell from a bash or sh script? Wouldn't that be super slow
  given Java's startup time for every invocation of our shell? A bit like
  trying to script the AWS command line utilities, which is excruciating.
 
 
  This is what I was trying to get at: the lack of typical language
  constructs is both beneficial and irritating. I think it depends on what
  you really want to do. Does that mean trying to maintain two shells is
  worth it? I'm not sure, but I'm also not sure where the happy medium is.
 
  If you exec the shell to just run one command at a time, yes. It is slow.
  You can redirect input or provide a file of commands to run at one time
  which don't suffer from the JVM startup problem.
 
   I can see why a custom shell built with Java would easier to test where
  the
  rest of the project is using Surefire/JUnit. That's a developer
  convenience
  concern though, not a user convenience one.
 
 
  That's only if you assume HBase users actually understand Ruby though,
 no?
  I would think that something which acts like your normal unix shell would
  be familiar to users w/o the need to understand some other language.
 
 
 
  On Wed, May 13, 2015 at 10:41 AM, Sean Busbeybus...@cloudera.com
  wrote:
 
   Pros:
 
  * It's easier to test and maintain
  * it's easier to script with
  * its interactive mode feels mode focused on the task of interacting
  with
  a cluster to me (maybe this is just acting like a psql or mysql shell)
 
  Cons
 
  * adding custom commands requires knowing java
 
  --
  Sean
  On May 13, 2015 12:31 PM, Andrew Purtellapurt...@apache.org
 wrote:
 
   Why is the Accumulo shell superior?
 
  Is it scriptable?
 
 
  On Wed, May 13, 2015 at 10:28 AM, Sean Busbeybus...@cloudera.com
 
  wrote:
 
  I would love to rip out the JRuby shell entirely and make something
 
  closer
 
  to the Accumulo shell, but I expect that will
 
  1) be way more work
 
  2) be even less compatible for those that rely on customizations.
 
  I figured given time we could get a preview user shell (rather than
  power shell via irb) together in 2.0 and aim for default in 3.0.
 
  --
  Sean
  On May 13, 2015 12:19 PM, Stackst...@duboce.net  wrote:
 
   Nice writeup Sean.
 
  Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license
 
  is
 
  still amenable and hopefully jruby 9k will be slimmer than jruby
 
  1.7+.
 
  But if we are going to do a significant shell refactor for hbase 2.0,
  should we consider doing something more radical; e.g. a new shell?
 If
  interest, could start up a new thread so don't distract from this
 
  one.
 
  St.Ack
 
 
 
 
  On Wed, May 13, 2015 at 9:22 AM, Sean Busbeybus...@cloudera.com
 
  wrote:
 
  Hi folks!
 
  If you weren't aware, our current shell relies on Ruby,
 
  specifically
 
  the
 
  REPL program IRB from JRuby. When we launched 1.0 we were on JRuby
 
  1.6
 
  with
 
  defaults, which means we're stuck on Ruby 1.8.
 
  For those that don't already know, Ruby 1.8 is super old and has
 
  been
 
  walking off into the sunset for a few years now. Most (but not
 
  all!)
 
  formal
 
  

Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Stack
On Wed, May 13, 2015 at 1:38 PM, Andrew Purtell apurt...@apache.org wrote:

  That's only if you assume HBase users actually understand Ruby though,
 no?

 Yes, and this is a fair point.

 The language REPL in which we're embedding the shell DSL doesn't have to be
 Ruby. JavaScript would work, maybe via Nashorn. Python would work, via
 Jython. Or Scala's REPL, even.



JRuby had best interpreter and the others considered had extra baggage
doing a DSL (For history, see HBASE-487). Having to put tabs in your shell
doing loops and no jline at the time made jython a non-runner though I
wanted it to win (Has anything changed here?) JS is probably way better
than when I looked at it back then?

Regardless, whether jython, JS, scala, or custom, IMO, we'd just be pissing
of users if we swap one idiosyncratic for another.  Only shell we could
swap in w/o annoying users would be SQL (ducks); and even here you'd
probably have to implement a bunch of operators on the other side of
sqllines bang operator (or equivalent) to do the hbase specifics. You would
also have to manage expectations: i.e. that the SQL would be extremely
basic and that the REPL does not come with an idling 100 node  cluster
ready to take up any involved queries.

St.Ack




 On Wed, May 13, 2015 at 1:10 PM, Josh Elser josh.el...@gmail.com wrote:

  Andrew Purtell wrote:
 
  This is because the Accumulo shell is a custom built shell? If so, we
 had
  one of those once and replaced it with the IRB based one. We didn't
 settle
  on JRuby right away but, at the time, the consensus was we didn't want
 to
  be in the business of maintaining yet another REPL when specialist open
  source communities have already done that. Why has this changed? Has it?
 
 
  Accumulo shell is just a Java program that uses JLine. It has no control
  flow structures, variables, or anything like that.
 
   Why is the Accumulo shell easier to script with? Does it have control
 flow
  constructs? Variable assignment? Or is it easier somehow because it does
  not have those things? Even the system shell has those. Hmm... Are we
  saying that any control flow or variables/substitution should be done by
  calling our shell from a bash or sh script? Wouldn't that be super slow
  given Java's startup time for every invocation of our shell? A bit like
  trying to script the AWS command line utilities, which is excruciating.
 
 
  This is what I was trying to get at: the lack of typical language
  constructs is both beneficial and irritating. I think it depends on what
  you really want to do. Does that mean trying to maintain two shells is
  worth it? I'm not sure, but I'm also not sure where the happy medium is.
 
  If you exec the shell to just run one command at a time, yes. It is slow.
  You can redirect input or provide a file of commands to run at one time
  which don't suffer from the JVM startup problem.
 
   I can see why a custom shell built with Java would easier to test where
  the
  rest of the project is using Surefire/JUnit. That's a developer
  convenience
  concern though, not a user convenience one.
 
 
  That's only if you assume HBase users actually understand Ruby though,
 no?
  I would think that something which acts like your normal unix shell would
  be familiar to users w/o the need to understand some other language.
 
 
 
  On Wed, May 13, 2015 at 10:41 AM, Sean Busbeybus...@cloudera.com
  wrote:
 
   Pros:
 
  * It's easier to test and maintain
  * it's easier to script with
  * its interactive mode feels mode focused on the task of interacting
  with
  a cluster to me (maybe this is just acting like a psql or mysql shell)
 
  Cons
 
  * adding custom commands requires knowing java
 
  --
  Sean
  On May 13, 2015 12:31 PM, Andrew Purtellapurt...@apache.org
 wrote:
 
   Why is the Accumulo shell superior?
 
  Is it scriptable?
 
 
  On Wed, May 13, 2015 at 10:28 AM, Sean Busbeybus...@cloudera.com
 
  wrote:
 
  I would love to rip out the JRuby shell entirely and make something
 
  closer
 
  to the Accumulo shell, but I expect that will
 
  1) be way more work
 
  2) be even less compatible for those that rely on customizations.
 
  I figured given time we could get a preview user shell (rather than
  power shell via irb) together in 2.0 and aim for default in 3.0.
 
  --
  Sean
  On May 13, 2015 12:19 PM, Stackst...@duboce.net  wrote:
 
   Nice writeup Sean.
 
  Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license
 
  is
 
  still amenable and hopefully jruby 9k will be slimmer than jruby
 
  1.7+.
 
  But if we are going to do a significant shell refactor for hbase 2.0,
  should we consider doing something more radical; e.g. a new shell?
 If
  interest, could start up a new thread so don't distract from this
 
  one.
 
  St.Ack
 
 
 
 
  On Wed, May 13, 2015 at 9:22 AM, Sean Busbeybus...@cloudera.com
 
  wrote:
 
  Hi folks!
 
  If you weren't aware, our current shell relies on Ruby,
 
  specifically
 
  the
 
  REPL program IRB from 

Ruby shell versions for HBase 2.0

2015-05-13 Thread Sean Busbey
Hi folks!

If you weren't aware, our current shell relies on Ruby, specifically the
REPL program IRB from JRuby. When we launched 1.0 we were on JRuby 1.6 with
defaults, which means we're stuck on Ruby 1.8.

For those that don't already know, Ruby 1.8 is super old and has been
walking off into the sunset for a few years now. Most (but not all!) formal
support systems for running Ruby have EOLed 1.8 and there are numerous
known issues with it.

Right now there's an open ticket to get us on JRuby 1.7 so that our shell
can work on PPC systems[1]. That version of JRuby defaults to Ruby 1.9 but
can be run in Ruby 1.8 mode. There are some implementation details
outstanding, but I'm hoping that ticket can work out such that it can land
in branch-1.

For HBase 2.0, I'd like us to plan for a little farther out in the future
than just updating to Ruby 1.9 (though that would be a fine incremental
step with some non-trivial work attached). The current version of Ruby is
2.2. Much like the move from 1.8 - 1.9 it is not backwards compatible.

JRuby's next major maintenance release line is version 9000[2] and it
will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in its
second preview release. They still have a few feature complete items to
address before they hit their first GA release.

I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This will
cause operator pain to folks with advanced scripts based on Ruby 1.8, but
it should allow us to update versions to avoid e.g. perf, correctness, and
security issues much more easily over the lifetime of 2.0.

What do folks think? Would JRuby 9000 need to hit a GA release prior to
HBase 2.0 getting released for us to adopt it? Or would it only need enough
of Ruby 2.2 to run our current shell?


[1]: https://issues.apache.org/jira/browse/HBASE-13338
[2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015

-- 
Sean


Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Michael Segel
So… 
Silly question… 
Do you really need to worry about backward’s compatibility? 

How many people have customized HBaseShell ? 

What are the common customizations and if you port HBase shell, how much work 
would filter through to the custom code? 


 On May 13, 2015, at 11:22 AM, Sean Busbey bus...@cloudera.com wrote:
 
 Hi folks!
 
 If you weren't aware, our current shell relies on Ruby, specifically the
 REPL program IRB from JRuby. When we launched 1.0 we were on JRuby 1.6 with
 defaults, which means we're stuck on Ruby 1.8.
 
 For those that don't already know, Ruby 1.8 is super old and has been
 walking off into the sunset for a few years now. Most (but not all!) formal
 support systems for running Ruby have EOLed 1.8 and there are numerous
 known issues with it.
 
 Right now there's an open ticket to get us on JRuby 1.7 so that our shell
 can work on PPC systems[1]. That version of JRuby defaults to Ruby 1.9 but
 can be run in Ruby 1.8 mode. There are some implementation details
 outstanding, but I'm hoping that ticket can work out such that it can land
 in branch-1.
 
 For HBase 2.0, I'd like us to plan for a little farther out in the future
 than just updating to Ruby 1.9 (though that would be a fine incremental
 step with some non-trivial work attached). The current version of Ruby is
 2.2. Much like the move from 1.8 - 1.9 it is not backwards compatible.
 
 JRuby's next major maintenance release line is version 9000[2] and it
 will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in its
 second preview release. They still have a few feature complete items to
 address before they hit their first GA release.
 
 I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This will
 cause operator pain to folks with advanced scripts based on Ruby 1.8, but
 it should allow us to update versions to avoid e.g. perf, correctness, and
 security issues much more easily over the lifetime of 2.0.
 
 What do folks think? Would JRuby 9000 need to hit a GA release prior to
 HBase 2.0 getting released for us to adopt it? Or would it only need enough
 of Ruby 2.2 to run our current shell?
 
 
 [1]: https://issues.apache.org/jira/browse/HBASE-13338
 [2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015
 
 -- 
 Sean



Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Stack
Nice writeup Sean.

Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license is
still amenable and hopefully jruby 9k will be slimmer than jruby 1.7+.

But if we are going to do a significant shell refactor for hbase 2.0,
should we consider doing something more radical; e.g. a new shell? If
interest, could start up a new thread so don't distract from this one.

St.Ack




On Wed, May 13, 2015 at 9:22 AM, Sean Busbey bus...@cloudera.com wrote:

 Hi folks!

 If you weren't aware, our current shell relies on Ruby, specifically the
 REPL program IRB from JRuby. When we launched 1.0 we were on JRuby 1.6 with
 defaults, which means we're stuck on Ruby 1.8.

 For those that don't already know, Ruby 1.8 is super old and has been
 walking off into the sunset for a few years now. Most (but not all!) formal
 support systems for running Ruby have EOLed 1.8 and there are numerous
 known issues with it.

 Right now there's an open ticket to get us on JRuby 1.7 so that our shell
 can work on PPC systems[1]. That version of JRuby defaults to Ruby 1.9 but
 can be run in Ruby 1.8 mode. There are some implementation details
 outstanding, but I'm hoping that ticket can work out such that it can land
 in branch-1.

 For HBase 2.0, I'd like us to plan for a little farther out in the future
 than just updating to Ruby 1.9 (though that would be a fine incremental
 step with some non-trivial work attached). The current version of Ruby is
 2.2. Much like the move from 1.8 - 1.9 it is not backwards compatible.

 JRuby's next major maintenance release line is version 9000[2] and it
 will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in its
 second preview release. They still have a few feature complete items to
 address before they hit their first GA release.

 I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This will
 cause operator pain to folks with advanced scripts based on Ruby 1.8, but
 it should allow us to update versions to avoid e.g. perf, correctness, and
 security issues much more easily over the lifetime of 2.0.

 What do folks think? Would JRuby 9000 need to hit a GA release prior to
 HBase 2.0 getting released for us to adopt it? Or would it only need enough
 of Ruby 2.2 to run our current shell?


 [1]: https://issues.apache.org/jira/browse/HBASE-13338
 [2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015

 --
 Sean



Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Andrew Purtell
I'd be curious to hear proposals for a new shell. Wondering what the
arguments in favor would be and arguments against current.

JRuby has served us well. Recently it personally saved me hassle by
allowing scripted surgery (advanced ops) rather than dev of a one off Java
utility. OTOH, if what we had available for scripting was the Nashorn JS
engine (Java 8+) instead, that would have worked well also.

And if we're talking about new shells, what about a SQL shell? /me ducks
and runs for cover


On Wed, May 13, 2015 at 10:19 AM, Stack st...@duboce.net wrote:

 Nice writeup Sean.

 Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license is
 still amenable and hopefully jruby 9k will be slimmer than jruby 1.7+.

 But if we are going to do a significant shell refactor for hbase 2.0,
 should we consider doing something more radical; e.g. a new shell? If
 interest, could start up a new thread so don't distract from this one.

 St.Ack




 On Wed, May 13, 2015 at 9:22 AM, Sean Busbey bus...@cloudera.com wrote:

  Hi folks!
 
  If you weren't aware, our current shell relies on Ruby, specifically the
  REPL program IRB from JRuby. When we launched 1.0 we were on JRuby 1.6
 with
  defaults, which means we're stuck on Ruby 1.8.
 
  For those that don't already know, Ruby 1.8 is super old and has been
  walking off into the sunset for a few years now. Most (but not all!)
 formal
  support systems for running Ruby have EOLed 1.8 and there are numerous
  known issues with it.
 
  Right now there's an open ticket to get us on JRuby 1.7 so that our shell
  can work on PPC systems[1]. That version of JRuby defaults to Ruby 1.9
 but
  can be run in Ruby 1.8 mode. There are some implementation details
  outstanding, but I'm hoping that ticket can work out such that it can
 land
  in branch-1.
 
  For HBase 2.0, I'd like us to plan for a little farther out in the future
  than just updating to Ruby 1.9 (though that would be a fine incremental
  step with some non-trivial work attached). The current version of Ruby
 is
  2.2. Much like the move from 1.8 - 1.9 it is not backwards compatible.
 
  JRuby's next major maintenance release line is version 9000[2] and it
  will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in its
  second preview release. They still have a few feature complete items to
  address before they hit their first GA release.
 
  I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This will
  cause operator pain to folks with advanced scripts based on Ruby 1.8, but
  it should allow us to update versions to avoid e.g. perf, correctness,
 and
  security issues much more easily over the lifetime of 2.0.
 
  What do folks think? Would JRuby 9000 need to hit a GA release prior to
  HBase 2.0 getting released for us to adopt it? Or would it only need
 enough
  of Ruby 2.2 to run our current shell?
 
 
  [1]: https://issues.apache.org/jira/browse/HBASE-13338
  [2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015
 
  --
  Sean
 




-- 
Best regards,

   - Andy

Problems worthy of attack prove their worth by hitting back. - Piet Hein
(via Tom White)


Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Sean Busbey
I would love to rip out the JRuby shell entirely and make something closer
to the Accumulo shell, but I expect that will

1) be way more work

2) be even less compatible for those that rely on customizations.

I figured given time we could get a preview user shell (rather than
power shell via irb) together in 2.0 and aim for default in 3.0.

-- 
Sean
On May 13, 2015 12:19 PM, Stack st...@duboce.net wrote:

 Nice writeup Sean.

 Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license is
 still amenable and hopefully jruby 9k will be slimmer than jruby 1.7+.

 But if we are going to do a significant shell refactor for hbase 2.0,
 should we consider doing something more radical; e.g. a new shell? If
 interest, could start up a new thread so don't distract from this one.

 St.Ack




 On Wed, May 13, 2015 at 9:22 AM, Sean Busbey bus...@cloudera.com wrote:

  Hi folks!
 
  If you weren't aware, our current shell relies on Ruby, specifically the
  REPL program IRB from JRuby. When we launched 1.0 we were on JRuby 1.6
 with
  defaults, which means we're stuck on Ruby 1.8.
 
  For those that don't already know, Ruby 1.8 is super old and has been
  walking off into the sunset for a few years now. Most (but not all!)
 formal
  support systems for running Ruby have EOLed 1.8 and there are numerous
  known issues with it.
 
  Right now there's an open ticket to get us on JRuby 1.7 so that our shell
  can work on PPC systems[1]. That version of JRuby defaults to Ruby 1.9
 but
  can be run in Ruby 1.8 mode. There are some implementation details
  outstanding, but I'm hoping that ticket can work out such that it can
 land
  in branch-1.
 
  For HBase 2.0, I'd like us to plan for a little farther out in the future
  than just updating to Ruby 1.9 (though that would be a fine incremental
  step with some non-trivial work attached). The current version of Ruby
 is
  2.2. Much like the move from 1.8 - 1.9 it is not backwards compatible.
 
  JRuby's next major maintenance release line is version 9000[2] and it
  will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in its
  second preview release. They still have a few feature complete items to
  address before they hit their first GA release.
 
  I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This will
  cause operator pain to folks with advanced scripts based on Ruby 1.8, but
  it should allow us to update versions to avoid e.g. perf, correctness,
 and
  security issues much more easily over the lifetime of 2.0.
 
  What do folks think? Would JRuby 9000 need to hit a GA release prior to
  HBase 2.0 getting released for us to adopt it? Or would it only need
 enough
  of Ruby 2.2 to run our current shell?
 
 
  [1]: https://issues.apache.org/jira/browse/HBASE-13338
  [2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015
 
  --
  Sean
 



Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Sean Busbey
On May 13, 2015 12:06 PM, Michael Segel michael_se...@hotmail.com wrote:

 So…
 Silly question…
 Do you really need to worry about backward’s compatibility?

 How many people have customized HBaseShell ?

 What are the common customizations and if you port HBase shell, how much
work would filter through to the custom code?



These are excellent questions to which I have poor answers.

The mechanics of the interactive repl via IRB will probably not be that
different. However, the ref guide calls out the ability to customize things
via hooking in your own ruby script so there's little bound on what we've
set for expectations. Given ruby 1.8's age, I'm not even sure there are 1.8
to 2.2 guides; likely folks would need to follow 1.8 to 1.9 and 1.9 to 2.2
guides (or we could work to provide some combined guidance).

Customizations are just as likely to be call this sequence of commands
(little to no work for update) as a daemon that does health and recovery
checks (lots of work, approaching rewrite).

Personally, I avoid customizations at least in part because it's ruby 1.8.
I've also discouraged those who ask me. Instead I rely on the
non-interactive flag and bash.  But given the ref guide positioning, it's
likely we'll break a nontrivial number of folks.


Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Darion Yaphet
sorry to say I don't good at Ruby .
HBase Shell may should upgrade :)

2015-05-14 1:06 GMT+08:00 Michael Segel michael_se...@hotmail.com:

 So…
 Silly question…
 Do you really need to worry about backward’s compatibility?

 How many people have customized HBaseShell ?

 What are the common customizations and if you port HBase shell, how much
 work would filter through to the custom code?


  On May 13, 2015, at 11:22 AM, Sean Busbey bus...@cloudera.com wrote:
 
  Hi folks!
 
  If you weren't aware, our current shell relies on Ruby, specifically the
  REPL program IRB from JRuby. When we launched 1.0 we were on JRuby 1.6
 with
  defaults, which means we're stuck on Ruby 1.8.
 
  For those that don't already know, Ruby 1.8 is super old and has been
  walking off into the sunset for a few years now. Most (but not all!)
 formal
  support systems for running Ruby have EOLed 1.8 and there are numerous
  known issues with it.
 
  Right now there's an open ticket to get us on JRuby 1.7 so that our shell
  can work on PPC systems[1]. That version of JRuby defaults to Ruby 1.9
 but
  can be run in Ruby 1.8 mode. There are some implementation details
  outstanding, but I'm hoping that ticket can work out such that it can
 land
  in branch-1.
 
  For HBase 2.0, I'd like us to plan for a little farther out in the future
  than just updating to Ruby 1.9 (though that would be a fine incremental
  step with some non-trivial work attached). The current version of Ruby
 is
  2.2. Much like the move from 1.8 - 1.9 it is not backwards compatible.
 
  JRuby's next major maintenance release line is version 9000[2] and it
  will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in its
  second preview release. They still have a few feature complete items to
  address before they hit their first GA release.
 
  I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This will
  cause operator pain to folks with advanced scripts based on Ruby 1.8, but
  it should allow us to update versions to avoid e.g. perf, correctness,
 and
  security issues much more easily over the lifetime of 2.0.
 
  What do folks think? Would JRuby 9000 need to hit a GA release prior to
  HBase 2.0 getting released for us to adopt it? Or would it only need
 enough
  of Ruby 2.2 to run our current shell?
 
 
  [1]: https://issues.apache.org/jira/browse/HBASE-13338
  [2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015
 
  --
  Sean




-- 

long is the way and hard  that out of Hell leads up to light


Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Andrew Purtell
Why is the Accumulo shell superior?

Is it scriptable?


On Wed, May 13, 2015 at 10:28 AM, Sean Busbey bus...@cloudera.com wrote:

 I would love to rip out the JRuby shell entirely and make something closer
 to the Accumulo shell, but I expect that will

 1) be way more work

 2) be even less compatible for those that rely on customizations.

 I figured given time we could get a preview user shell (rather than
 power shell via irb) together in 2.0 and aim for default in 3.0.

 --
 Sean
 On May 13, 2015 12:19 PM, Stack st...@duboce.net wrote:

  Nice writeup Sean.
 
  Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license is
  still amenable and hopefully jruby 9k will be slimmer than jruby 1.7+.
 
  But if we are going to do a significant shell refactor for hbase 2.0,
  should we consider doing something more radical; e.g. a new shell? If
  interest, could start up a new thread so don't distract from this one.
 
  St.Ack
 
 
 
 
  On Wed, May 13, 2015 at 9:22 AM, Sean Busbey bus...@cloudera.com
 wrote:
 
   Hi folks!
  
   If you weren't aware, our current shell relies on Ruby, specifically
 the
   REPL program IRB from JRuby. When we launched 1.0 we were on JRuby 1.6
  with
   defaults, which means we're stuck on Ruby 1.8.
  
   For those that don't already know, Ruby 1.8 is super old and has been
   walking off into the sunset for a few years now. Most (but not all!)
  formal
   support systems for running Ruby have EOLed 1.8 and there are numerous
   known issues with it.
  
   Right now there's an open ticket to get us on JRuby 1.7 so that our
 shell
   can work on PPC systems[1]. That version of JRuby defaults to Ruby 1.9
  but
   can be run in Ruby 1.8 mode. There are some implementation details
   outstanding, but I'm hoping that ticket can work out such that it can
  land
   in branch-1.
  
   For HBase 2.0, I'd like us to plan for a little farther out in the
 future
   than just updating to Ruby 1.9 (though that would be a fine incremental
   step with some non-trivial work attached). The current version of
 Ruby
  is
   2.2. Much like the move from 1.8 - 1.9 it is not backwards compatible.
  
   JRuby's next major maintenance release line is version 9000[2] and it
   will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in
 its
   second preview release. They still have a few feature complete items
 to
   address before they hit their first GA release.
  
   I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This
 will
   cause operator pain to folks with advanced scripts based on Ruby 1.8,
 but
   it should allow us to update versions to avoid e.g. perf, correctness,
  and
   security issues much more easily over the lifetime of 2.0.
  
   What do folks think? Would JRuby 9000 need to hit a GA release prior to
   HBase 2.0 getting released for us to adopt it? Or would it only need
  enough
   of Ruby 2.2 to run our current shell?
  
  
   [1]: https://issues.apache.org/jira/browse/HBASE-13338
   [2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015
  
   --
   Sean
  
 




-- 
Best regards,

   - Andy

Problems worthy of attack prove their worth by hitting back. - Piet Hein
(via Tom White)


Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Sean Busbey
Pros:

* It's easier to test and maintain
* it's easier to script with
* its interactive mode feels mode focused on the task of interacting with
a cluster to me (maybe this is just acting like a psql or mysql shell)

Cons

* adding custom commands requires knowing java

-- 
Sean
On May 13, 2015 12:31 PM, Andrew Purtell apurt...@apache.org wrote:

 Why is the Accumulo shell superior?

 Is it scriptable?


 On Wed, May 13, 2015 at 10:28 AM, Sean Busbey bus...@cloudera.com wrote:

  I would love to rip out the JRuby shell entirely and make something
 closer
  to the Accumulo shell, but I expect that will
 
  1) be way more work
 
  2) be even less compatible for those that rely on customizations.
 
  I figured given time we could get a preview user shell (rather than
  power shell via irb) together in 2.0 and aim for default in 3.0.
 
  --
  Sean
  On May 13, 2015 12:19 PM, Stack st...@duboce.net wrote:
 
   Nice writeup Sean.
  
   Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license is
   still amenable and hopefully jruby 9k will be slimmer than jruby 1.7+.
  
   But if we are going to do a significant shell refactor for hbase 2.0,
   should we consider doing something more radical; e.g. a new shell? If
   interest, could start up a new thread so don't distract from this one.
  
   St.Ack
  
  
  
  
   On Wed, May 13, 2015 at 9:22 AM, Sean Busbey bus...@cloudera.com
  wrote:
  
Hi folks!
   
If you weren't aware, our current shell relies on Ruby, specifically
  the
REPL program IRB from JRuby. When we launched 1.0 we were on JRuby
 1.6
   with
defaults, which means we're stuck on Ruby 1.8.
   
For those that don't already know, Ruby 1.8 is super old and has been
walking off into the sunset for a few years now. Most (but not all!)
   formal
support systems for running Ruby have EOLed 1.8 and there are
 numerous
known issues with it.
   
Right now there's an open ticket to get us on JRuby 1.7 so that our
  shell
can work on PPC systems[1]. That version of JRuby defaults to Ruby
 1.9
   but
can be run in Ruby 1.8 mode. There are some implementation details
outstanding, but I'm hoping that ticket can work out such that it can
   land
in branch-1.
   
For HBase 2.0, I'd like us to plan for a little farther out in the
  future
than just updating to Ruby 1.9 (though that would be a fine
 incremental
step with some non-trivial work attached). The current version of
  Ruby
   is
2.2. Much like the move from 1.8 - 1.9 it is not backwards
 compatible.
   
JRuby's next major maintenance release line is version 9000[2] and
 it
will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in
  its
second preview release. They still have a few feature complete
 items
  to
address before they hit their first GA release.
   
I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This
  will
cause operator pain to folks with advanced scripts based on Ruby 1.8,
  but
it should allow us to update versions to avoid e.g. perf,
 correctness,
   and
security issues much more easily over the lifetime of 2.0.
   
What do folks think? Would JRuby 9000 need to hit a GA release prior
 to
HBase 2.0 getting released for us to adopt it? Or would it only need
   enough
of Ruby 2.2 to run our current shell?
   
   
[1]: https://issues.apache.org/jira/browse/HBASE-13338
[2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015
   
--
Sean
   
  
 



 --
 Best regards,

- Andy

 Problems worthy of attack prove their worth by hitting back. - Piet Hein
 (via Tom White)



Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Josh Elser
Agreed on these points, Sean. Having used both, I think both approaches 
have their value and their drawbacks.


The ruby shell is _wonderful_ from having a full programming language to 
interact with. Accumulo's shell would force you to use your standard 
unix-toolbelt if you want to do any extra parsing/logic.


OTOH, general introspection and interaction with the system feels much 
more natural to me w/ Accumulo's shell. I know that's not a good way to 
quantify my feelings. I think it's mostly due to not having to write 
Ruby when I'm not actually scripting things. Another point is that 
Accumulo uses JLine under the hood which always comes with its own 
burden (things like C^c nuked the entire shell for the longest time 
because JLine didn't support it -- we sometimes have to fix JLine to get 
the functionality we want).


I also caught wind of someone actually using JavaScript via JSR-223 w/ 
the Accumulo shell, but it's not widely advertised at this point.


Finding a the right mix between ease of scripting and simplicity of 
administrative interactions is key if we want to move beyond what the 
HBase shell is now. My $0.02.


(and, to not completely derail the original conversation, moving to Ruby 
2.2 + JRuby 9000 would be what I think the right move to make is)


Sean Busbey wrote:

Pros:

* It's easier to test and maintain
* it's easier to script with
* its interactive mode feels mode focused on the task of interacting with
a cluster to me (maybe this is just acting like a psql or mysql shell)

Cons

* adding custom commands requires knowing java



Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Andrew Purtell
Having two shells - a simple user shell for tinkering and an advanced one
for real ops and developers - would be fine, as long as one is not
deprecated. Can't trust something deprecated for tooling.


On Wed, May 13, 2015 at 10:52 AM, Esteban Gutierrez este...@cloudera.com
wrote:

 +1 for new JRuby for now and having a JIRA to discuss what features should
 this shell have would be great.

 However, I think that during the last few years many of us have used the
 hbase shell for major surgery as Andrew said and it has added some
 confusion to users about what the hbase shell is used for and I think that
 functionality shouldn't be longer exposed to regular users. One way we
 could probably do this is to have a user facing CLI that will be more for
 DDL, permissions and data interaction for users (sort of psql or phoenix
 /me runs too) and deprecate/update the old shell just leaving table/region
 management functionality for admins, also since most of advanced scripting
 is done by interacting with Admin directly (see region_mover.rb or
 copy_tables_desc.rb) I don't think we should worry too much about backwards
 compatibility if that gets properly documented.

 thanks,
 esteban.



 --
 Cloudera, Inc.


 On Wed, May 13, 2015 at 10:25 AM, Andrew Purtell apurt...@apache.org
 wrote:

  I'd be curious to hear proposals for a new shell. Wondering what the
  arguments in favor would be and arguments against current.
 
  JRuby has served us well. Recently it personally saved me hassle by
  allowing scripted surgery (advanced ops) rather than dev of a one off
 Java
  utility. OTOH, if what we had available for scripting was the Nashorn JS
  engine (Java 8+) instead, that would have worked well also.
 
  And if we're talking about new shells, what about a SQL shell? /me ducks
  and runs for cover
 
 
  On Wed, May 13, 2015 at 10:19 AM, Stack st...@duboce.net wrote:
 
   Nice writeup Sean.
  
   Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license is
   still amenable and hopefully jruby 9k will be slimmer than jruby 1.7+.
  
   But if we are going to do a significant shell refactor for hbase 2.0,
   should we consider doing something more radical; e.g. a new shell? If
   interest, could start up a new thread so don't distract from this one.
  
   St.Ack
  
  
  
  
   On Wed, May 13, 2015 at 9:22 AM, Sean Busbey bus...@cloudera.com
  wrote:
  
Hi folks!
   
If you weren't aware, our current shell relies on Ruby, specifically
  the
REPL program IRB from JRuby. When we launched 1.0 we were on JRuby
 1.6
   with
defaults, which means we're stuck on Ruby 1.8.
   
For those that don't already know, Ruby 1.8 is super old and has been
walking off into the sunset for a few years now. Most (but not all!)
   formal
support systems for running Ruby have EOLed 1.8 and there are
 numerous
known issues with it.
   
Right now there's an open ticket to get us on JRuby 1.7 so that our
  shell
can work on PPC systems[1]. That version of JRuby defaults to Ruby
 1.9
   but
can be run in Ruby 1.8 mode. There are some implementation details
outstanding, but I'm hoping that ticket can work out such that it can
   land
in branch-1.
   
For HBase 2.0, I'd like us to plan for a little farther out in the
  future
than just updating to Ruby 1.9 (though that would be a fine
 incremental
step with some non-trivial work attached). The current version of
  Ruby
   is
2.2. Much like the move from 1.8 - 1.9 it is not backwards
 compatible.
   
JRuby's next major maintenance release line is version 9000[2] and
 it
will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in
  its
second preview release. They still have a few feature complete
 items
  to
address before they hit their first GA release.
   
I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This
  will
cause operator pain to folks with advanced scripts based on Ruby 1.8,
  but
it should allow us to update versions to avoid e.g. perf,
 correctness,
   and
security issues much more easily over the lifetime of 2.0.
   
What do folks think? Would JRuby 9000 need to hit a GA release prior
 to
HBase 2.0 getting released for us to adopt it? Or would it only need
   enough
of Ruby 2.2 to run our current shell?
   
   
[1]: https://issues.apache.org/jira/browse/HBASE-13338
[2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015
   
--
Sean
   
  
 
 
 
  --
  Best regards,
 
 - Andy
 
  Problems worthy of attack prove their worth by hitting back. - Piet Hein
  (via Tom White)
 




-- 
Best regards,

   - Andy

Problems worthy of attack prove their worth by hitting back. - Piet Hein
(via Tom White)


Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Esteban Gutierrez
+1 for new JRuby for now and having a JIRA to discuss what features should
this shell have would be great.

However, I think that during the last few years many of us have used the
hbase shell for major surgery as Andrew said and it has added some
confusion to users about what the hbase shell is used for and I think that
functionality shouldn't be longer exposed to regular users. One way we
could probably do this is to have a user facing CLI that will be more for
DDL, permissions and data interaction for users (sort of psql or phoenix
/me runs too) and deprecate/update the old shell just leaving table/region
management functionality for admins, also since most of advanced scripting
is done by interacting with Admin directly (see region_mover.rb or
copy_tables_desc.rb) I don't think we should worry too much about backwards
compatibility if that gets properly documented.

thanks,
esteban.



--
Cloudera, Inc.


On Wed, May 13, 2015 at 10:25 AM, Andrew Purtell apurt...@apache.org
wrote:

 I'd be curious to hear proposals for a new shell. Wondering what the
 arguments in favor would be and arguments against current.

 JRuby has served us well. Recently it personally saved me hassle by
 allowing scripted surgery (advanced ops) rather than dev of a one off Java
 utility. OTOH, if what we had available for scripting was the Nashorn JS
 engine (Java 8+) instead, that would have worked well also.

 And if we're talking about new shells, what about a SQL shell? /me ducks
 and runs for cover


 On Wed, May 13, 2015 at 10:19 AM, Stack st...@duboce.net wrote:

  Nice writeup Sean.
 
  Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license is
  still amenable and hopefully jruby 9k will be slimmer than jruby 1.7+.
 
  But if we are going to do a significant shell refactor for hbase 2.0,
  should we consider doing something more radical; e.g. a new shell? If
  interest, could start up a new thread so don't distract from this one.
 
  St.Ack
 
 
 
 
  On Wed, May 13, 2015 at 9:22 AM, Sean Busbey bus...@cloudera.com
 wrote:
 
   Hi folks!
  
   If you weren't aware, our current shell relies on Ruby, specifically
 the
   REPL program IRB from JRuby. When we launched 1.0 we were on JRuby 1.6
  with
   defaults, which means we're stuck on Ruby 1.8.
  
   For those that don't already know, Ruby 1.8 is super old and has been
   walking off into the sunset for a few years now. Most (but not all!)
  formal
   support systems for running Ruby have EOLed 1.8 and there are numerous
   known issues with it.
  
   Right now there's an open ticket to get us on JRuby 1.7 so that our
 shell
   can work on PPC systems[1]. That version of JRuby defaults to Ruby 1.9
  but
   can be run in Ruby 1.8 mode. There are some implementation details
   outstanding, but I'm hoping that ticket can work out such that it can
  land
   in branch-1.
  
   For HBase 2.0, I'd like us to plan for a little farther out in the
 future
   than just updating to Ruby 1.9 (though that would be a fine incremental
   step with some non-trivial work attached). The current version of
 Ruby
  is
   2.2. Much like the move from 1.8 - 1.9 it is not backwards compatible.
  
   JRuby's next major maintenance release line is version 9000[2] and it
   will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is in
 its
   second preview release. They still have a few feature complete items
 to
   address before they hit their first GA release.
  
   I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This
 will
   cause operator pain to folks with advanced scripts based on Ruby 1.8,
 but
   it should allow us to update versions to avoid e.g. perf, correctness,
  and
   security issues much more easily over the lifetime of 2.0.
  
   What do folks think? Would JRuby 9000 need to hit a GA release prior to
   HBase 2.0 getting released for us to adopt it? Or would it only need
  enough
   of Ruby 2.2 to run our current shell?
  
  
   [1]: https://issues.apache.org/jira/browse/HBASE-13338
   [2]: http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015
  
   --
   Sean
  
 



 --
 Best regards,

- Andy

 Problems worthy of attack prove their worth by hitting back. - Piet Hein
 (via Tom White)



Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Andrew Purtell
This is because the Accumulo shell is a custom built shell? If so, we had
one of those once and replaced it with the IRB based one. We didn't settle
on JRuby right away but, at the time, the consensus was we didn't want to
be in the business of maintaining yet another REPL when specialist open
source communities have already done that. Why has this changed? Has it?

Why is the Accumulo shell easier to script with? Does it have control flow
constructs? Variable assignment? Or is it easier somehow because it does
not have those things? Even the system shell has those. Hmm... Are we
saying that any control flow or variables/substitution should be done by
calling our shell from a bash or sh script? Wouldn't that be super slow
given Java's startup time for every invocation of our shell? A bit like
trying to script the AWS command line utilities, which is excruciating.

I can see why a custom shell built with Java would easier to test where the
rest of the project is using Surefire/JUnit. That's a developer convenience
concern though, not a user convenience one.


On Wed, May 13, 2015 at 10:41 AM, Sean Busbey bus...@cloudera.com wrote:

 Pros:

 * It's easier to test and maintain
 * it's easier to script with
 * its interactive mode feels mode focused on the task of interacting with
 a cluster to me (maybe this is just acting like a psql or mysql shell)

 Cons

 * adding custom commands requires knowing java

 --
 Sean
 On May 13, 2015 12:31 PM, Andrew Purtell apurt...@apache.org wrote:

  Why is the Accumulo shell superior?
 
  Is it scriptable?
 
 
  On Wed, May 13, 2015 at 10:28 AM, Sean Busbey bus...@cloudera.com
 wrote:
 
   I would love to rip out the JRuby shell entirely and make something
  closer
   to the Accumulo shell, but I expect that will
  
   1) be way more work
  
   2) be even less compatible for those that rely on customizations.
  
   I figured given time we could get a preview user shell (rather than
   power shell via irb) together in 2.0 and aim for default in 3.0.
  
   --
   Sean
   On May 13, 2015 12:19 PM, Stack st...@duboce.net wrote:
  
Nice writeup Sean.
   
Yeah, +1 to new jruby in hbase 2.0. We'd need to be careful license
 is
still amenable and hopefully jruby 9k will be slimmer than jruby
 1.7+.
   
But if we are going to do a significant shell refactor for hbase 2.0,
should we consider doing something more radical; e.g. a new shell? If
interest, could start up a new thread so don't distract from this
 one.
   
St.Ack
   
   
   
   
On Wed, May 13, 2015 at 9:22 AM, Sean Busbey bus...@cloudera.com
   wrote:
   
 Hi folks!

 If you weren't aware, our current shell relies on Ruby,
 specifically
   the
 REPL program IRB from JRuby. When we launched 1.0 we were on JRuby
  1.6
with
 defaults, which means we're stuck on Ruby 1.8.

 For those that don't already know, Ruby 1.8 is super old and has
 been
 walking off into the sunset for a few years now. Most (but not
 all!)
formal
 support systems for running Ruby have EOLed 1.8 and there are
  numerous
 known issues with it.

 Right now there's an open ticket to get us on JRuby 1.7 so that our
   shell
 can work on PPC systems[1]. That version of JRuby defaults to Ruby
  1.9
but
 can be run in Ruby 1.8 mode. There are some implementation details
 outstanding, but I'm hoping that ticket can work out such that it
 can
land
 in branch-1.

 For HBase 2.0, I'd like us to plan for a little farther out in the
   future
 than just updating to Ruby 1.9 (though that would be a fine
  incremental
 step with some non-trivial work attached). The current version of
   Ruby
is
 2.2. Much like the move from 1.8 - 1.9 it is not backwards
  compatible.

 JRuby's next major maintenance release line is version 9000[2]
 and
  it
 will start out *only* supporting Ruby 2.2. Right now JRuby 9000 is
 in
   its
 second preview release. They still have a few feature complete
  items
   to
 address before they hit their first GA release.

 I'd like us to move to Ruby 2.2 via JRuby 9000 for HBase 2.0.  This
   will
 cause operator pain to folks with advanced scripts based on Ruby
 1.8,
   but
 it should allow us to update versions to avoid e.g. perf,
  correctness,
and
 security issues much more easily over the lifetime of 2.0.

 What do folks think? Would JRuby 9000 need to hit a GA release
 prior
  to
 HBase 2.0 getting released for us to adopt it? Or would it only
 need
enough
 of Ruby 2.2 to run our current shell?


 [1]: https://issues.apache.org/jira/browse/HBASE-13338
 [2]:
 http://www.slideshare.net/CharlesNutter/over-9000-jruby-in-2015

 --
 Sean

   
  
 
 
 
  --
  Best regards,
 
 - Andy
 
  Problems worthy of attack prove their worth by hitting back. - Piet Hein
  (via Tom White)
 




-- 
Best regards,

   - Andy


Re: Ruby shell versions for HBase 2.0

2015-05-13 Thread Michael Segel
Hmmm. 

So if we move to a different tech, the modifications / customizations people 
have done are going to be useless. 
If we upgrade to a new version of JRuby, some scripts may not have issues, 
others may have some , and a third group would have major rewrites. 

The interesting / downside to JRuby is that within the entire eco system… no 
other use of JRuby. 

If you were going to switch… maybe Python? (Jython) 



 On May 13, 2015, at 12:37 PM, Sean Busbey bus...@cloudera.com wrote:
 
 On May 13, 2015 12:06 PM, Michael Segel michael_se...@hotmail.com wrote:
 
 So…
 Silly question…
 Do you really need to worry about backward’s compatibility?
 
 How many people have customized HBaseShell ?
 
 What are the common customizations and if you port HBase shell, how much
 work would filter through to the custom code?
 
 
 
 These are excellent questions to which I have poor answers.


 The mechanics of the interactive repl via IRB will probably not be that
 different. However, the ref guide calls out the ability to customize things
 via hooking in your own ruby script so there's little bound on what we've
 set for expectations. Given ruby 1.8's age, I'm not even sure there are 1.8
 to 2.2 guides; likely folks would need to follow 1.8 to 1.9 and 1.9 to 2.2
 guides (or we could work to provide some combined guidance).
 
 Customizations are just as likely to be call this sequence of commands
 (little to no work for update) as a daemon that does health and recovery
 checks (lots of work, approaching rewrite).
 
 Personally, I avoid customizations at least in part because it's ruby 1.8.
 I've also discouraged those who ask me. Instead I rely on the
 non-interactive flag and bash.  But given the ref guide positioning, it's
 likely we'll break a nontrivial number of folks.