1. 程式人生 > >Spark本地開發與遠端除錯環境搭建

Spark本地開發與遠端除錯環境搭建

先決條件

遠端除錯環境搭建過程詳述

  1. 開啟Intellij IDEA,File->New ->Project
    這裡寫圖片描述

  2. 選擇Scala,然後next
    這裡寫圖片描述

  3. 配置好JDK、Scala版本,填入專案名稱,然後Finish
    這裡寫圖片描述

這裡寫圖片描述

4.匯入spark-assembly-1.5.0-hadoop2.4.0.jar

File->Prject Structure->Library
這裡寫圖片描述

這裡寫圖片描述

點”+”號->選擇JAVA
這裡寫圖片描述
找到spark-1.5.0安裝目錄,選擇spark-assembly-1.5.0-hadoop2.4.0.jar,我的機器上jar包目錄為
/hadoopLearning/spark-1.5.0-bin-hadoop2.4/lib/spark-assembly-1.5.0-hadoop2.4.0.jar,然後Finish
這裡寫圖片描述

這裡寫圖片描述
最後點選“OK”完成匯入

5.關聯spark-1.5.0原始碼
在Extended Library中展開spark-assembly-1.5.0-hadoop2.4.0.jar
這裡寫圖片描述
找到org->apache->spark
這裡寫圖片描述
點開下面包中的任意原始檔,我在本機上選擇”SparkContext.class”檔案,預設情況下Intellij IDEA會為我們反編譯.class檔案,但原始碼裡面沒有註釋,可以選擇右上角的”Attach Sources”
這裡寫圖片描述

選擇原始碼檔案目錄,我的機器上原始碼解壓在/hadoopLearning/spark-1.5.0目錄,完成後“OK”
這裡寫圖片描述
完成後會提示根目錄
這裡寫圖片描述
全部選擇後點擊“OK”,此時顯示的不是反編譯後的程式碼,而是關聯原始碼後的程式碼,你會發現多了很多註釋
這裡寫圖片描述

至此原始碼閱讀環境構建完畢。

6.啟動spark-1.5.0叢集
[email protected]:/hadoopLearning/spark-1.5.0-bin-hadoop2.4/sbin# ./start-all.sh
這裡寫圖片描述

7.修改spark-class指令碼 
本機器上的spark-class指令碼位於/hadoopLearning/spark-1.5.0-bin-hadoop2.4/bin目錄
將指令碼中的內容

done < <("$RUNNER" -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main "[email protected]
"
)
  • 1
  • 1

修改為

done < <("$RUNNER" -cp "$LAUNCH_CLASSPATH" org.apache.spark.launcher.Main $JAVA_OPTS "[email protected]")
  • 1
  • 1

這裡寫圖片描述

然後在命令列中執行下列語句
export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

這裡寫圖片描述

  1. 建立用於測試的Spark應用程式
    選擇專案中的src檔案,然後右鍵 New->Scala Class
    這裡寫圖片描述
    然後選擇Object
    這裡寫圖片描述
    命名為SparkWordCount,然後點選OK,輸入如下內容
import org.apache.spark.SparkContext._
import org.apache.spark.{SparkConf, SparkContext}

object SparkWordCount{
  def main(args: Array[String]) {
    if (args.length == 0) {
      System.err.println("Usage: SparkWordCount <inputfile> <outputfile>")
      System.exit(1)
    }

    val conf = new SparkConf().setAppName("SparkWordCount")
    val sc = new SparkContext(conf)

    val file=sc.textFile("file:///hadoopLearning/spark-1.5.1-bin-hadoop2.4/README.md")
    val counts=file.flatMap(line=>line.split(" "))
      .map(word=>(word,1))
      .reduceByKey(_+_)
    counts.saveAsTextFile("file:///hadoopLearning/spark-1.5.1-bin-hadoop2.4/countReslut.txt")

  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

9 將Spark應用程式打包
選擇專案,File->Project Structure
這裡寫圖片描述
選擇 Artifacts
這裡寫圖片描述
點選“+”號,然後選擇”Jar”->”From modules with dependencies”
這裡寫圖片描述
這裡寫圖片描述

選擇SparkWordCount作為MainClass
這裡寫圖片描述

這裡寫圖片描述

Spark應用程式在執行是會自動載入spark-assembly-1.5.0-hadoop2.4.0.jar等jar包,為減少後期Jar包的體積,可以將spark-assembly-1.5.0-hadoop2.4.0.jar等jar包刪除,這樣打包時不會被打包進去。
這裡寫圖片描述
完成後點選”OK”

再選擇”Build”->”Build Artifacts”
這裡寫圖片描述
Action中選擇“Build”
這裡寫圖片描述

編譯後在對應目錄中可以看到生成的jar包檔案,本機器上的目錄是:
/root/IdeaProjects/SparkRemoteDebugPeoject/out/artifacts/SparkRemoteDebugPeoject_jar

這裡寫圖片描述

10 將程式碼利用spark-submit提交到叢集

root@sparkmaster:/hadoopLearning/spark-1.5.0-bin-hadoop2.4/bin# ./spark-submit --master spark://sparkmaster:7077 --class SparkWordCount --executor-memory 1g /root/IdeaProjects/SparkRemoteDebugPeoject/out/artifacts/SparkRemoteDebugPeoject_jar hdfs://ns1/README.md hdfs://ns1/SparkWordCountResult
//注意這一行語句
Listening for transport dt_socket at address: 5005
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

這裡寫圖片描述

11 Intellij IDEA中配置遠端除錯
Run->Edit  Configuration
這裡寫圖片描述
找到Remote
這裡寫圖片描述
點選”+“號,命名為Spark_Remote_Debug,其它配置預設,Intellij IDEA已為我們預設配置
這裡寫圖片描述
完成後,點選OK

12  正式啟動遠端除錯
在原始碼中設定斷點,本例中選擇在SparkSubmit.scala檔案中設定斷點
這裡寫圖片描述

然後按 F9
這裡寫圖片描述
選擇Spark_Remote_Debug
Spark控制檯出現:Connected to the target VM, address: ‘localhost:5005’, transport: ‘socket’,如下圖
這裡寫圖片描述
在Debugger上可以看到
這裡寫圖片描述
程式在執行SparkSubmit原始碼中設定斷點處
這裡寫圖片描述

至此,遠端除錯正式開始,請暢遊Spark原始碼吧

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
引數說明:
-Xdebug 啟用除錯特性
-Xrunjdwp 啟用JDWP實現,包含若干子選項:
transport=dt_socket JPDA front-end和back-end之間的傳輸方法。dt_socket表示使用套接字傳輸。
address=5005 JVM在5005埠上監聽請求,這個設定為一個不衝突的埠即可。
server=y y表示啟動的JVM是被除錯者。如果為n,則表示啟動的JVM是偵錯程式。
suspend=y y表示啟動的JVM會暫停等待,直到偵錯程式連線上才繼續執行。suspend=n,則JVM不會暫停等待。

相關推薦

Spark本地開發遠端除錯環境搭建

先決條件 遠端除錯環境搭建過程詳述 開啟Intellij IDEA,File->New ->Project 選擇Scala,然後next 配置好JDK、Scala版本,填入專案名稱,然後Finish 4.匯入spark-assembly-1.5.0

PhpStorm Xdebug遠端除錯環境搭建原理分析及問題排查

http://blog.nsfocus.net/phpstorm-xdebug-remote-debugging-troubleshooting/ 對於簡單的工程,直接print_r();exit()已經足夠,但是對於大型專案有時就有點力不從心,如果直接將apache部署在本地,phpstorm除錯

VS2008 遠端除錯環境搭建

VS2008 遠端除錯環境搭建 一、關鍵詞說明: 目標機:被除錯程式所執行的機器; 除錯機:執行VS2008除錯程式碼的機器; 二、遠端除錯環境搭建步驟如下: 1. 在目標機上安裝VS2008遠端偵錯程式; 在VS2008安裝盤中Remote Debugger 目錄下, 有

Spark本地開發環境搭建遠端debug設定

快速看完《Spark大資料處理 技術、應用與效能優化》前四章後,對Spark有了一個初步的瞭解,終於踏出了第一步,現在需要在Spark叢集中做些測試例子,熟悉一下開發環境和開發的流程。本文主要總結了如何在本地使用Maven搭建開發環境以及如何進行遠端debug。由於採用的Spark是

Phpstorm+XAMPP+Xdebug搭建斷點除錯環境 搭建php除錯開發環境

開發環境 php整合工具:xampp v3.2.2 PHP Version: 7.2.11 PhpStorm:2017.3.4 一、下載安裝Xdebug軟體 可去官方網站下載 http://xdebug.org/ 注意下載的版本一定要與你本地的php版本一

Spark本地開發環境配置(windows/Intellij IDEA 篇)

前言 Intellij IDEA是一個蠻不錯的IDE,在java/scala領域深得人心。筆者之前使用的是Eclipse那一套開發環境,雖然也不錯,但忍不住好奇心的驅使,折騰了一下IDEA,將自己摸索過程總結一下,方便Spark愛好者參考。 1.配置前提 J

iOS開發之runtime(一):runtime除錯環境搭建

本系列部落格是本人的原始碼閱讀筆記,如果有iOS開發者在看runtime的,歡迎大家多多交流。為了方便討論,本人新建了一個微信群(iOS技術討論群),想要加入的,請新增本人微信:zhujinhui207407,【加我前請備註:ios 】,本人部落格http://www.kyson.cn 也在不停的更新中,歡迎

ESP8266NodeMCU開發(一)環境搭建

這一章將描述ESP8266的效能與指標,以及開發環境的搭建。 ESP8266是2015年推出的一款Wifi模組,準確來說是集成了Wifi功能的MCU,拉低了目前的市場上Wifi模組價格,甚至一度突破

Kettle 外掛開發除錯環境搭建(上)

1. 下載原始碼  https://github.com/pentaho/pentaho-kettle/2. 下載kettle發行版本 http://community.pentaho.com/projects/data-integration/   (主要是為了獲取依賴的

嵌入式開發交叉除錯環境搭建

1. wget http://ftp.gnu.org/gnu/gdb/gdb-7.3.tar.bz2 2. tar -xvf tar -xvf gdb-7.3.tar.bz2 3. 接下來分2步,第一步編譯編譯gdb,這個不是宿主機上那個gdb,必須用如下方式編譯: #

windows下的基於Eclipse的STM32開發除錯環境搭建

這段時間在玩STM32,但官方庫的程式碼也確實是有點多,記憶力有點不太好了。突然就想起了以前用Eclipse的那個程式碼提示功能,谷歌了一段時間, (一)安裝編譯環境 1.下載和安裝JAVA虛擬機器 因為Eclipse是基於Java的,所以Linux下也可

Firefly-RK3288開發板Android編譯環境搭建開荒

android ubuntu 編譯環境 kernel firefly 開發板 入手了Firefly-RK3288的開發板,自己從零開始搭建編譯環境開荒第一步:安裝Ubuntu12.04,使用安裝盤安裝(安裝的過程就不詳寫了,下面貼圖) 安裝完後,更新ubuntu 第二步:從官網上下載

Spark筆記整理(三):Spark WC開發應用部署

大數據 Spark [TOC] Spark WordCount開發 創建的是maven工程,使用的依賴如下: <dependency> <groupId>org.scala-lang</groupId> <artifactId>scal

最詳細的JavaWeb開發基礎之java環境搭建(Windows版)

images 第一步 tools -s inf cde 空格 window 打開 閱讀文本大概需要 3 分鐘。 首先歡迎大家來學習JavaWeb,在這裏會給你比較詳細的教程,從最基本的開始,循序漸進的深入。會讓初學者的你少踩很多坑(大實話),如果你已經掌握了Jav

最詳細的JavaWeb開發基礎之java環境搭建(Mac版)

windows UC 環境變量設置 喜歡 linux 系統 設置 限制 download 了解 閱讀文本大概需要 5 分鐘。 我之前分享過在 Windows 下面配置 Java 環境,這次給大家帶來的是 Mac 下面安裝配置 Java 環境。首先 Mac 系統已經帶有

Hyperledger Fabric 開發和運行環境搭建

root用戶 x86 doc googl 保存 username 新建 iyu out 一 環境配置 VirtualBox 5.1.12 Git 2.18.0 Go 1.10.3 Windows下設置GOPATH開發目錄 Vagrant 2.1.2 進入BIOS設置Virt

Spring原始碼分析——除錯環境搭建(可能是最省事的構建方法)

1. 依賴工具 idea git jdk 1.8 + Gradle 2. 獲取原始碼   從github https://github.com/spring-projects/spring-framework 上 Fork 出屬於自己的倉庫。如果懶得這麼做也可以

BIM開發------BIMServer伺服器(環境搭建

 1 前言 BIMServer版本:1.5.88 相關外掛版本:見2下載檔案部分 最近在學習一下BIMServer,首先第一步就是對BIMServer環境的安裝。 主要是兩種安裝和配置方法,一種是通過jar包直接進行執行來安裝,一種是通過war包,將其放置在tomcat目錄

Fluent使用UDF以及採用visual studio 開發編譯udf的環境搭建2

需要說明的是,  fluent解釋或者編譯udf和在vs環境下除錯udf是兩件事情。 就我的理解,fluent解釋或者編譯會藉助vs的部分功能,這也是在vs下搭建環境的目的(包括新增路徑等等操作),然而根據前面的部落格可以知道,只是新增路徑,在vs環境下是不能built的,因為vs

Fluent使用UDF以及採用visual studio 開發編譯udf的環境搭建

已有的操作步驟 在Visual Studio中直接編譯Fluent的UDF的總結(序列)_硫酸亞銅_新浪部落格 http://blog.sina.com.cn/s/blog_14d64daa10102xqwk.html 在Visual Studio中直接編譯Fluent的UDF_硫酸亞銅