Description
After upgrading HBase to 1.1.9 in BIGTOP-2740, the HMaster and RegionServer processes look good on ppc64le. This is a significant improvement, as the previous version (1.1.3) did not work at all.
However, hbase shell still fails like this with 1.1.9:
$ hbase shell OpenJDK 64-Bit Server VM warning: Using incremental CMS is deprecated and will likely be removed in a future release include_class is deprecated. Use java_import. include_class is deprecated. Use java_import. include_class is deprecated. Use java_import. NoMethodError: undefined method `getTerminal' for Java::Jline::Terminal:Module refresh_width at /usr/lib/hbase/lib/ruby/shell/formatter.rb:34 initialize at /usr/lib/hbase/lib/ruby/shell/formatter.rb:48 (root) at /usr/lib/hbase/bin/hirb.rb:116
This stems from an incompatibility in the JLine version that ships with the updated JRuby lib (which is required for ppc64le). See HBASE-13338 and jruby issue for details.
You can work around this by patching formatter.rb:
--- /usr/lib/hbase/lib/ruby/shell/formatter.rb.old 2017-04-17 23:28:49.339383104 +0000 +++ /usr/lib/hbase/lib/ruby/shell/formatter.rb 2017-04-17 23:30:46.749288423 +0000 @@ -31,8 +31,7 @@ def refresh_width() require 'readline' if $stdout.tty? - @max_width = Java::jline.Terminal.getTerminal().getTerminalWidth() + @max_width = 0
It's not ideal, but it's a simple enough workaround for anyone needing hbase shell on ppc64le.
I'm opening this jira to determine how best to apply this workaround, or where to document this as a limitation of HBase 1.1.x on ppc64le.
Attachments
Attachments
Issue Links
- relates to
-
BIGTOP-2740 hbase 1.1.3 does not work on ppc64le
- Resolved