文档章节

Hadoop/HBase Remote Debug (远程调试) 设置

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 921
阅读 44
收藏 0

本地是windows开发环境,程序部署在远程的hadoop或hbase集群下,进行remote debug需要进行如下配置:


1. 事前准备


hadoop和hbase都是分布式集群,你不可能在同一时刻监听所有的节点,你需要引选择好一个节点,而这个节点的所承载的角色必须能执行到你需要debug的代码。比如:如果你要调试一个RegionObserver的某些代码,那么你需要选择一个region server作为remote debug的对象,而且region最好要balancer一下,然后根据你输入的数据来预判哪一个region server将会处理这个请求,一种更方便的做法是:关闭除调试节点之外的所有的region server,只建立一个region,这样调试起来会更加方便。然后再在该server上开启remote debug.


另外,为了避免在调试过程中由于请求超时而导致地调试中断,可以适当的延长请求的超时时间,以HBase为例,你需要修改hbase-site.xml文件中的zookeeper.session.timeout和hbase.zookeeper.property.tickTime的参数值,其中,timeout应该取2-20倍tickTime之间的值。生产环境上timeout最好不要超过1分钟,此处为了调试,我们设置为1个小时。


<property>
    <name>zookeeper.session.timeout</name>
    <value>3600000</value>
</property>
<property>
    <name>hbase.zookeeper.property.tickTime</name>
    <value>180000</value>
</property>


2. Client端(IDE)设置


这个不同的IDE都大同小异,没有需要特别说明的,本文以intellij为例,使用如下配置:



3. Server端设置


Server端的设置就是要找到启动相应服务的shell脚本,在脚本里把
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

这样一段jvm参数配置写到启动服务的命令行中去,我们以hbase regionserver为例,启动的这个服务的脚本是HBASE_HOME下的bin/hbase文件,打开该文件找到启动regionserver的命令行,在设置HBASE_OPTS的地方把我们的remote debug相关的jvm参数加进去,如下图:


如果想要调试hbase master或datanode,tasktracker等服务也是到相应的启动脚本里去这样追加,本文不再赘述, 但是需要注意的是:由于一个节点可能兼任多种角色,一定在恰当的位置添加调试参数,如果位置不当,后续的服务在启动时如果也重复要求占用调试端口,而该端口已经被前面启动的服务所占用,这就会导致后续的服务无法启动。比如:当一个node既是hbase master又是hbase regionserver时,如果你在hbase脚本的不正确的位置上加入调试参数,如果hbase master先启动,并且占用了调试端口,那么后续的hbase regionserver服务无法启动了,反过来如果是hbase regionserver服务先启动,那么hbase master就无法启动了


4. 代理问题


如果我们的远程主机是通过代理访问的话,会有一个小麻烦,那就是java的remote debug不支持代理设置,这样本地就无法连接到远程server上,解决方法就是使用ssh的tunnel功能建立一个正向隧道(方向是:Local),把远程主机的调试端口5005映射到本地,这样就可以像调试本地应用一样方便了。要特别提醒的是:为了避免不必要的麻烦,最好不要在该ssh连接上执行任何命令,需要操作远程主机应该再开一个新的无tunnel的ssh连接!以 putty为例,配合上述配置,设定如下:



本文转载自:http://blog.csdn.net/bluishglc/article/details/18089751

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
win环境下 hbase 数据库搭建流程

Hbase单机版安装使用教程 Hbase介绍请参考技术支持文档,这里只说明Hbase 的安装和使用 第一步:下载安装Hbase数据库 链接:链接:https://pan.baidu.com/s/1si6Nokvz8xkUsmefsRlntQ 密码:k...

lijiaweizuishuai
05/28
0
0
HBase 常用Shell命令

1.进入hbase shell console $HBASE_HOME/bin/hbase shell 如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbase shell进入可以使用whoami命...

zlfwmm
06/26
0
0
Hadoop2.x下安装HBase

环境:CentOS6.5 Hadoop2.5.2 HBase1.0.0 1.安装好 hadoop 集群,并启动 [grid@hadoop4 ~]$ sh hadoop-2.5.2/sbin/start-dfs.sh [grid@hadoop4 ~]$ sh hadoop-2.5.2/sbin/start-yarn.sh 查看......

张超
2015/03/19
0
3
KYLIN访问远程hive和hbase环境

KYLIN访问远程hive和hbase环境 思路:在kylin服务器上配置所需环境的client;包括hadoop,hive,hbase 准备远程hadoop集群,hive环境,hbase环境的配置文件,替换掉对应客户端的配置文件。 ...

仔仔1993
09/11
0
0
记录一次生产环境hadoop集群优化以及pid文件缺失处理

一、优化准备 优化需要根据实际情况综合分析 1、关闭系统swap分区(如果未关闭的话) 在Hadoop中,如果使用系统默认设置,会导致swap分区被频繁使用,集群会不断发出警告。 对于每个作业处理...

断臂人
06/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

解析高可用分布式键值存储 etcd 的原理

这篇文章将会介绍 etcd 的实现原理,其中包括 Raft 协议、存储两大模块,在最后我们也会简单介绍 etcd 一些具体应用场景。 etcd 的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整...

小刀爱编程
19分钟前
1
0
在ubuntun虚拟机里安装goLang语言编程环境

Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 北京时间201...

JerryWang_SAP
19分钟前
5
0
c++builder导出函数export function DLL

__stdcall __export 即可,如: ulong __stdcall __export od_disasm(char *src,ulong srcsize,ulong srcip, t_disasm *disasm,int disasmmode){ return Disasm(src,srcsiz......

simpower
21分钟前
2
0
KDC服务安装及配置

阿伦哥-
24分钟前
1
0
mybatis-plus公共字段操作以及springboot2整合mybatis-plus

1、公共实体 对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),表示排除User类中的属性 所有新增公共字段加注解 并指定 @TableField(value = "corp_code",fi...

glen_xu
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部