HBase之遠端除錯
阿新 • • 發佈:2018-12-15
既然要做分析,光肉眼執行肯定是不夠的,能單步斷點除錯就完美了,這裡就需要遠端除錯了。遠端除錯是JDWP提供的,通過Agent library的形式載入到JVM中,與編譯無關,所以無需重新編譯,只要執行Java程式時加入除錯引數即可。
我們通過IDE來建立除錯配置,以Intellij IDEA為例,選擇Edit Configurations,新增Remote,就可以看到IDE提供的除錯引數,把它加到Java的執行引數裡就可以了。
HBase的啟動指令碼start-hbase.sh,實際執行在bin/hbase檔案中。通過修改bin/hbase檔案,把除錯引數加進去,就可以遠端除錯了。只要在最終執行java之前加入就行,為了方便查詢,我加在了最後一段之前。除錯時如果配置了兩個程序都開啟除錯,會導致搶佔同一個埠,可以一次只調試一個程序或者修改埠號來避免衝突。
...
####################################################################
# masa's remote debugger
####################################################################
REMOTE_DEBUGGER="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:5005"
# 除錯Master
# if [ "$COMMAND" = "master" ] ; then
# if [ "$1" != "stop" ] && [ "$1" != "clear" ] ; then
# HBASE_OPTS="$HBASE_OPTS $REMOTE_DEBUGGER"
# fi
# fi
# 除錯RegionServer
if [ "$COMMAND" = "regionserver" ] ; then
if [ "$1" != "stop" ] ; then
HBASE_OPTS="$HBASE_OPTS $REMOTE_DEBUGGER"
fi
fi
################################# END ##############################
HEAP_SETTINGS="$JAVA_HEAP_MAX $JAVA_OFFHEAP_MAX"
# Exec unless HBASE_NOEXEC is set.
export CLASSPATH
if [ "${HBASE_NOEXEC}" != "" ]; then
"$JAVA" -Dproc_$COMMAND -XX:OnOutOfMemoryError="kill -9 %p" $HEAP_SETTINGS $HBASE_OPTS $CLASS "[email protected]"
else
exec "$JAVA" -Dproc_$COMMAND -XX:OnOutOfMemoryError="kill -9 %p" $HEAP_SETTINGS $HBASE_OPTS $CLASS "[email protected]"
fi
**除錯HBase時,還需要將hbase.zookeeper.property.tickTime、hbase.client.scanner.timeout.period等引數時間設的長一些,設成1800000(半小時)就差不多了,以免因為除錯時間過長導致連線超時斷開、Server關閉等問題。**修改conf/hbase-site.xml,增加這4個引數。
<configuration>
<property>
<name>hbase.zookeeper.property.tickTime</name>
<value>1800000</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>1800000</value>
</property>
<property>
<name>hbase.client.scanner.timeout.period</name>
<value>1800000</value>
</property>
<property>
<name>hbase.rpc.timeout</name>
<value>1800000</value>
</property>
<property>
<name>hbase.rpc.shortoperation.timeout</name>
<value>1800000</value>
</property>
</configuration>
-END-