Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
-
Reviewed
Description
bin/hbase assumes that all daemon types ( master, regionserver ), all use the same memory settings.. (HBASE_HEAPSIZE).
1) I propose adding daemon specific OPTS much like hadoop already has ( HBASE_MASTER_OPTS, HBASE_REGIONSERVER_OPTS ).
So in bin/hbase, we would merge in the daemon specific opts within the case statement as such:
elif [ "$COMMAND" = "master" ] ; then
CLASS='org.apache.hadoop.hbase.master.HMaster'
HBASE_OPTS="$HBASE_OPTS $HBASE_MASTER_OPTS"
elif [ "$COMMAND" = "regionserver" ] ; then
CLASS='org.apache.hadoop.hbase.regionserver.HRegionServer'
HBASE_OPTS="$HBASE_OPTS $HBASE_REGIONSERVER_OPTS"
the new environment variables can then be added to hbase-env.sh as empty:
export HBASE_MASTER_OPTS=""
export HBASE_REGIONSERVER=""
..etc
2) I propose changes to that script to allow overriding the default memory ( HBASE_HEAPSIZE ), with daemon specific OPTS (HBASE_MASTER_OPTS, etc ).
Basically at the bottom of the bin/hbase script, it will check to see if the user has already set "-Xmx" in the HBASE_OPTS variable.. if so, then it will ignore the JAVA_HEAP_SIZE variable..
as such:
- run it
if [[ $HBASE_OPTS == -Xmx ]]; then
exec "$JAVA" $HBASE_OPTS -classpath "$CLASSPATH" $CLASS "$@"
else
exec "$JAVA" $JAVA_HEAP_MAX $HBASE_OPTS -classpath "$CLASSPATH" $CLASS "$@"
fi
I will attach the file as I have modified it..