文档章节

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

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 921
阅读 127
收藏 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为例,配合上述配置,设定如下:



猪刚烈

猪刚烈

粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
私信 提问
加载中
请先登录后再评论。
CDH5: 使用parcels配置lzo

一、Parcel 部署步骤 1 下载: 首先需要下载 Parcel。下载完成后,Parcel 将驻留在 Cloudera Manager 主机的本地目录中。 2 分配: Parcel 下载后,将分配到群集中的所有主机上并解压缩。 3 激...

cloud-coder
2014/07/01
6.8K
1
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
6
Go-node

Go-node 是一个用 Go 语言实现的 Erlang/OTP node 已支持的功能: Publish listen port via EPMD Handle incoming connection from other node using Erlang Distribution Protocol Spawn E......

匿名
2013/01/25
1.5K
1
Web 的 SSH 控制台--KeyBox

KeyBox 是一个基于 Web 的 SSH 控制台,用于同步管理多个系统并且可执行远程命令。允许你共享终端命令并上传文件到所有系统。但连接会话打开时你可选择在其中一个终端或者多个终端上执行命令...

匿名
2013/02/28
8.3K
0
OpenDolphin

Open Dolphin 是一个免费开源的库,用来保护您的业务应用程序应对不确定性的可视化技术变化。 Dolphin严格分离业务逻辑和可视化效果,通过可插入式的架构将业务逻辑放在远程服务器端,可自由...

匿名
2013/03/05
648
0

没有更多内容

加载失败,请刷新页面

加载更多

Java基础—List集合的概念及使用方法

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继...

afreon
2018/08/01
7
0
MP3 tag编辑器-puddletag

puddletag是一款Linux平台下开源的音频标签编辑器。遵守GPL v3开源协议。类似于Windows平台下的Mp3tag软件,表格的界面更适合批量修改音乐tag。支持从文件名里提取为tag信息,或者根据Tag信息...

osc_tnexgcb8
25分钟前
0
0
java实现淘宝模拟登陆

java实现淘宝模拟登陆 目录 java实现淘宝模拟登陆 一、前期准备 1. 工具 2. 下载浏览器驱动 3. 导入Maven依赖 二、具体代码 三、参考: 一、前期准备 1. 工具 IDE(笔者使用IDEA ) Maven 浏览...

osc_m53xdida
26分钟前
0
0
PHP+Redis链表解决高并发下商品超卖问题

目录 实现原理 实现步骤 上一篇文章聊了一下使用Redis事务来解决高并发商品超卖问题,今天我们来聊一下使用Redis链表来解决高并发商品超卖问题。 实现原理 使用redis链表来做,因为pop操作是...

osc_urkxdqms
27分钟前
9
0
Unity 用ml-agents机器学习造个游戏AI吧(2) (深度强化学习入门DEMO)

目录 本次示例:训练一个追踪红球的白球AI 1. 新建Unity项目,导入package 2. 编写Agent脚本 void OnEpisodeBegin() void CollectObservations(VectorSensor sensor) void OnActionReceived(......

osc_wxsc35it
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部