知识点
相关文章
更多最近更新
更多远程调试Hadoop
2019-03-28 13:46|来源: 网络
在调研JobTracker等异常问题时经常需要远程debug以实现单步跟踪。相对于打印日志,远程调试更方面更快捷,信息也更全面。这里列出远程调试的基本步骤。
1、配置jvm选项启用远程debug
Hadoop的所有deamon启动都是bin/hadoop脚本实现的,该脚本最后一行会执行java命令来启动JVM进程。因此要启用远程debug,只需要修改该脚本最后一行即可。
修改前最后一行如下:
exec "$JAVA" $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
修改之后最后一行如下:
exec "$JAVA" -Xdebug -Xrunjdwp:transport=dt_socket,address=50010,server=y,suspend=n $HADOOP_OPTS -classpath "$CLASSPATH" $CLASS "$@"
这里新增的jvm参数为:
-Xdebug -Xrunjdwp:transport=dt_socket,address=50010,server=y,suspend=n
这些参数的含义是在端口50070启动一个server socket并通过Java Debug Wire Protocol (jdwp)传递调试信息。suspend=n表示客户端(eclipse)没有连上时不需要挂起,即没有开始调试时该进程照常运行。
需要注意的是这里的端口号一定要是空闲的且对外开放的。通常生产机器只开通了少量端口。
2、配置eclipse来远程调试
a、启动eclipse
b、点击菜单的 Go to Run -> Debug Configurations
c、在配置界面上找到Remote Java Application然后右键新建一个
d、配置远程应用的链接信息
这里主要是填好主机名及端口号。
f、最后一步点击 Apply保持配置然后点击Debug即可开始远程调试了
注意的是调试要选用Debug perspective。
更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
相关问答
更多-
如何使用eclipse调试Hadoop作业[2020-12-06]
将hadoop开发包里面的相关jar导进工程就行, 至于想调试,就看hadoop计数器返回到eclipse里的内容就可以了. 不过有一点, 如果调试的是MapReduce,速度可能不快. -
iOS远程调试(iOS Remote Debugging)[2023-07-02]
更新: 这不是最好的答案,请遵循gregers的建议。 新答案: 使用Weinre 老回答: 您现在可以使用Safari进行远程调试。 但它需要iOS 6。 以下是http://html5-mobile.de/blog/ios6-remote-debugging-web-inspector的快速翻译 通过USB与您的Mac连接您的iDevice 在Mac上打开Safari并激活开发工具 在您的iDevice上:转到设置> safari>高级并激活Web检查器 用你的iDevice去任何网站 在您的Mac上: ... -
Eclipse远程调试在伪分布式模式下不适用于hadoop(Eclipse remote debugging doesn't work with hadoop in pseudo-distributed mode)[2022-04-05]
请参阅上面的Lorand的评论。 远程调试仅适用于独立模式。 See Lorand's comment above. Remote debugging will only work in standalone mode. -
Hadoop命令行参数未传递给Java远程调试器(Hadoop Command Line Paramers not Passed to Java Remote Debugger)[2022-06-09]
未来遇到此问题的任何人的更新: 如果启动了java远程调试器,侦听了错误的IP地址(IE正在侦听远程namenode而不是localhost),则JRD仍将启动,但不会传入命令行参数。 Update for anyone in the future who experiences this problem: If the java remote debugger is launched listening to the wrong IP Address (IE listening to a remote n ... -
这些是我所知道的: 神谕 ArcGIS地理数据库 Teradata数据 Microsoft SQL Server 2008 R2并行数据仓库(PDW) PostgreSQL的 IBM InfoSphere仓库 Couchbase Netezza公司 Tresata 但我仍然想知道这个问题的意图。 每个数据源都适合特定的用例。 比如,Couchbase用于文档数据存储,Tresata用于财务数据存储等。 您是否会根据连接器的可用性来决定您的商店?我不这么认为。 These are the few I am a ...
-
似乎conf.set("mapred.job.tracker", "server:9001"); 解决了这个问题。 谢谢你的帮助。 It seems conf.set("mapred.job.tracker", "server:9001"); fixed the issue. Thanks for your help.
-
HFTP如何与HTTP不同以从远程hadoop集群读取数据?(How HFTP is different from HTTP to read the data from remote hadoop cluster?)[2021-10-21]
HFTP用于从不同hadoop版本的远程集群中读取数据。 它独立于目标集群中的hadoop版本。 HFTP与disctp结合使用。 与http不同,HFTP是只读的。 看看http://docs.spring.io/spring-hadoop/docs/1.0.1.RELEASE/reference/html/fs.html HFTP is used to read data from remote clusters of different hadoop versions. It is independe ... -
您可以在开发Hadoop Wiki上找到有关此内容的详细信息。 它有关于如何设置开发环境,如何开发单元测试等内容的详细信息。 HTH You can find detailed information on this on the Developing Hadoop Wiki. It has detailed info on stuff like How To Setup Your Development Environment, How To Develop Unit Tests etc. HTH
-
我通过以下方式在Eclipse中开发Cassandra / Hadoop应用程序: 使用maven(m2e)为我的Eclipse项目收集和配置依赖项(Hadoop,Cassandra,Pig等) 创建测试用例(src / test / java中的类)来测试我的映射器和缩减器。 诀窍是使用扩展RecordWriter和StatusReporter的内部类动态构建上下文对象。 如果执行此操作,则在调用setup / map / cleanup或setup / reduce / cleanup之后,您可以断言正 ...
-
你的hdfs条目是错误的。 fs.default.name必须设置为hdfs://srv-lab:9000 。 设置此并重新启动您的群集。 这将解决问题 Your hdfs entry is wrong. fs.default.name has to be set as hdfs://srv-lab:9000. Set this and restart your cluster. that will fix the issue