1. 程式人生 > >遠端除錯spark原始碼(基於java的除錯工具)

遠端除錯spark原始碼(基於java的除錯工具)

開發人員在進行程式編碼的過程中,不可避免的需要對程式碼進行除錯,其目的是能精確定位程式的執行狀況。本文對spark原始碼進行除錯,此除錯方式可以除錯任何JVM相關的程式,如:普通的命令列程式、web程式等。

1、實驗環境

IP hostname master worker
192.168.56.101 master
192.168.56.102 node1
192.168.56.103 node2
192.168.56.104 node3

2、spark-submit命令啟動spark應用程式,並開啟除錯監聽

1

bin/spark-submit --class sparksql.HiveOnSQL scalastudy.jar --driver-java-options -agentlib:jdwp=transport=dt_socket,address=9904,server=y,suspend=y

說明:

    這裡spark-submit命令不做具體介紹,需要注意的是--driver-java-options引數,此引數是增加jvm相關引數這裡使用"-agentlib:jdwp=transport=dt_socket,address=9904,server=y,suspend=y",啟動監聽程式,此命令執行後,控制檯列印如下:

wKioL1SjU-7QGQmlAADU6EiCCn0689.jpg此監聽已啟動,此時就可以通過原生代碼進行除錯

3、除錯方式

    伺服器開啟一個9904的埠進行監聽。客戶端通過jdb或IDE中configurations配置即可連線。

    1)jdb方式:在命令列$JAVA_HOME/bin/jdb -attach 10.68.156.40:9904進行連線

    2)eclipse方式:Run->debug configurations->XX應用程式->Connection Properties中配置host和port

    3)IDEA方式:Run->Edit configurations->"+"->Remote配置host和port

下面著重介紹IDEA方式,其他方式都差不多,讀者可以自行嘗試

    (1)在IDEA中開啟spark原始碼

        由於spark-submit命令將會啟動SparkSubmit.scala中的main函式,因此我們找到spark原始碼中的SparkSubmit.scala檔案,並在main函式中增加斷點

wKioL1SjVejB9i7TAAWKYTwG2aY145.jpg

    (2)IDE中配置遠端除錯

wKioL1SjVsDASIOoAAR6toDPghI831.jpg

wKiom1SjVgvyfycNAAOnr8ukQWQ552.jpg

    (3)debug啟動

wKiom1SjVseQxE5bAAX1RQqq-fc628.jpg

上圖顯示的就是除錯的頁面,可以任意增加斷點,並除錯執行,在控制檯列印

wKiom1SjV0DhQ7aLAAVNGcjtdJ8447.jpg遠端除錯成功。

深入學習可檢視IBM的以下連結,詳細介紹了java的除錯體系

檢視現有系統stack,可以使用jdk提供的如下命令

jstack [pid] > javastack.log

相關推薦

遠端除錯spark原始碼基於java除錯工具

開發人員在進行程式編碼的過程中,不可避免的需要對程式碼進行除錯,其目的是能精確定位程式的執行狀況。本文對spark原始碼進行除錯,此除錯方式可以除錯任何JVM相關的程式,如:普通的命令列程式、web程式等。 1、實驗環境 IP hostname maste

DES加密演算法的java實現基於java類庫

嗯嗯........這個是我新開的部落格上的第一篇的文章,這裡小白希望自己的技術能夠一天比一天好(p≧w≦q),加油! 好吧,現在來一個基於java類庫的DES加密演算法的實現吧~網上不少的程式碼要不執行有問題,要不就是簡簡單單內建一個固定的加密字串就簡單完事了。好吧,我承認我現在是為懶人服務

Glide原始碼基於4.8版本解析

 Glide是一款由Bump Technologies開發的圖片載入框架,使得我們可以在Android平臺上以極度簡單的方式來載入和展示圖片。  使用Glide來載入網路圖片非常簡單,通過Glide.with(this).load(url).into(imageView)這樣的一句程式碼

使用 IntelliJ IDEA 匯入 Spark 最新原始碼及編譯 Spark 原始碼博主強烈推薦

前言     其實啊,無論你是初學者還是具備了有一定spark程式設計經驗,都需要對spark原始碼足夠重視起來。   本人,肺腑之己見,想要成為大資料的大牛和頂尖專家,多結合原始碼和操練程式設計。 準備工作 1、scala 2.10.4(本地的安裝)   2、Jdk1.

基於CSerialPort修改類的串列埠除錯助手原始碼支援中文、自動儲存等

QQ技術交流群:129518033最新進展:CSerialPort串列埠類最新修正版2017-12-16本串列埠工具整合目前多數串列埠工具的優秀功能於一身,採用CSerialPort類進行編寫,並在此基礎上對該類進行了改進。本工具免費試用,永不過期。並且本著奉獻的精神,公開本

菜鳥帶你看原始碼——看不懂你打我ArrayList原始碼分析基於java 8

文章目錄 看原始碼並不難 軟體環境 成員變數: 構造方法 核心方法 get方法 remove方法 add方法 結束 看原始碼並不難 如何學好程式設計?如何寫出優質的程式碼?如

ideallij除錯spark原始碼的n中方法

其中的spark.driver.extraJavaOptions是用來除錯driver的,spark.executor.extraJavaOptions是用來除錯executor的,如果driver和executor不在同一個節點,那麼埠可以相同,如果在同一個節點,那麼埠不能一樣。如果suspend=y,說明

使用Intellij idea除錯Spark原始碼

前提 本文假設開發環境是在Linux平臺,並且已經安裝下列軟體,我個人使用的是arch linux。 jdk scala sbt intellij-idea-community-edition安裝scala外掛 為idea安裝scala外掛,具體步驟如下 選擇Fil

STM32CubeIDE下載安裝-GPIO基本配置操作-Debug除錯基於CMSIS DAP Debug

1、在ST官網下載STM32CubeIDE而不是STM32CubeMX,並且STM32CubeIDE是免費的。(STM32CubeIDE不支援中文路徑,不然編譯會出錯) 2、如果你用的是keil開發環境那麼 STM32CubeIDE =(STM32CubeMX + Keil)STM32CubeMX只是一個配置

除錯HotSpot原始碼配視訊

本文將詳細介紹在Ubuntu16.04 LTS上對OpenJDK8進行編譯,為了方便大家快速搭建起OpenJDK8的除錯開發環境,我還錄製了對應的視訊放到了B站上,大家可以參考。  視訊地址:https://space.bilibili.com/27533329  下面我們開始環境的搭建過

線程同步基於java

new 源代碼 內存 mon int 總結 apach 高效率 更多 java線程 同步與異步 線程池 1)多線程並發時,多個線程同時請求同一個資源,必然導致此資源的數據不安全,A線程修改了B線 程的處理的數據,而B線程又修改了A線程處理的數理。顯然這是由於全局資源造成的,

[文件和原始碼分享] 基於JAVA實現的塔防遊戲

塔防遊戲主要代表一類通過在遊戲地圖上裝置炮塔,阻止敵人進攻的策略型遊戲。本遊戲是在地圖上的特定地點裝置多種能力不同的炮臺以抵禦多種怪獸的入侵。同時玩家每場戰鬥將擁有多種道具讓玩家防守更加輕鬆。遊戲原型是【保衛蘿蔔】和【皇城守衛】,總體設計風格和遊戲背景音樂音效向【皇城守衛】靠攏,而遊戲機制是參照了【保衛蘿蔔】

[文件和原始碼分享] 基於JAVA實現的迷宮遊戲

程式開始執行時顯示一個迷宮地圖,迷宮中央有一隻老鼠,迷宮的右下方有一個糧倉。遊戲的任務是使用鍵盤上的方向鍵操縱老鼠在規定的時間內走到糧倉處。 老鼠形象可辨認,可用鍵盤操縱老鼠上下左右移動;迷宮的牆足夠結實,老鼠不能穿牆而過正確檢測結果,若老鼠在規定時間內走到糧倉處,提示成功,否則提示失敗;新增編輯迷宮功能,

SpringMVC入門之二:配置及啟用SpringMVC基於JAVA配置

為了方便理解和簡化無關細節,我們要使用最簡單的方式來配置SpringMVC:所要實現的功能僅限於執行我們所建立的控制器。 配置DispatcherServlet DispatcherServlet是SpringMVC的核心。在這裡請求會第一次接觸到框架,它要負責將請求路由

樹莓派3B+ 原始碼方式安裝opencv3基於3.4.1

身邊有朋友在樹莓派上安裝不上去opencv3,因此在這裡記錄了一下自己安裝opencv3的過程。 這位前輩的安裝步驟非常非常詳細,下邊所有過程都是參考此經驗,只不過添加了自己安裝過程的圖片,看著好理解一點。 非常感謝,謝謝謝謝謝謝! 安裝過程 更換軟體源的時候建議

webservice的簡單demo基於Java

前言:很多人都不知道webservice到底是個什麼東西,通俗的講,webservice就是可以實現程式與程式之間的溝通的一種介質,它可以讓你在A專案中使用B專案的C方法 一.工具 1.JDK1.7(至少保持JDK版本為1.6以上,可以在JDK的安裝目錄下的bin目錄下檢視

ARP欺騙原始碼基於WinPcap實現

//ArpCheat.h #ifndef MY_ARP_CHEAT_INCLUDE_H #define MY_ARP_CHEAT_INCLUDE_H //位元組對齊必須是1 #pragma pack (1) struct ethernet_head { u

CCF2017.12.2 遊戲基於java實現

  有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,……,1號小朋友坐在n號小朋友的順時針方向。  遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上一個小朋友報的數加1。若一個小朋友報的數為k的倍數或其末位數(即數的個

Spring入門基於Java的容器註解之@Scope和基於泛型的自動裝配

@Scope 在使用@Bean的時候,預設@Bean定義出來的註解是單例的,那麼有什麼方式可以指定它的範圍呢,我們使用@Scope。Bean的作用域包括singleton、prototype、request、session、global session。 @

Spring @Bean註解 基於java的容器註解

分享圖片 代碼 http amp .com 配置文件 ava destroy 說明 基於java的容器註解,意思就是使用Java代碼以及一些註解,就可以取代spring 的 xml配置文件。 1-@Configuration & @Bean的配合 @Configur