欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Spark 分布式调试工具

发布时间:2025/7/25 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Spark 分布式调试工具 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

 0. 说明

  编写工具类,考察 Spark 分布式程序的执行地点

 


 

1. 工具类编写

  [ JMX ]

  Java Management Extend , Java 管理扩展服务。

  主要用于运维和监控。

 

  【测试 JMX】

 

  开启 nc,参考 [Linux] nc

 

nc -lk 8888

 

 

  通过 Client 模式运行 Spark

spark-shell --master spark://s101:7077 --deploy-mode client

 

  在 Spark Shell 下通过 :paste 执行以下代码

 

def sendInfo(obj:Object ,m:String , param:String)= { val ip = java.net.InetAddress.getLocalHost.getHostAddress val pid = java.lang.management.ManagementFactory.getRuntimeMXBean.getName.split("@")(0) val tname = Thread.currentThread().getName val classname = obj.getClass.getSimpleName val objHash = obj.hashCode() val info = ip + "/" + pid + "/" + tname + "/" + classname + "@" + objHash + "/" + m + "("+param+")" + "\r\n"//发送数据给nc 服务器 val sock = new java.net.Socket("s101" , 8888) val out = sock.getOutputStream out.write(info.getBytes()) out.flush() out.close() }

 

 

  再执行以下命令

sendInfo(this, "method001" , "argument001")

 

  在 nc 端监听到的数据如下

  

     IP                     进程id    线程     对象id                              方法(参数 )

 

 


 

 

2. WordCount

  通过 Client 模式运行 Spark

spark-shell --master spark://s101:7077 --deploy-mode client

 

  在 Spark Shell 下通过 :paste 执行以下代码

val rdd1 = sc.textFile("/user/centos/data/11.txt" , 4) val rdd2 = rdd1.flatMap(line=>{ sendInfo(this , "flatMap" , line) line.split(" ")} ) val rdd3 = rdd2.map(word=>{ sendInfo(this , "map" , word) (word,1) }) val rdd4 = rdd3.reduceByKey((a,b)=>{ sendInfo(this, "reduceByKey", a + "," + b) a + b }) val arr = rdd4.collect()

 

  nc 监听到的数据(参考  [Linux] nc)

   

 

 

 


 

转载于:https://www.cnblogs.com/share23/p/9783419.html

总结

以上是生活随笔为你收集整理的Spark 分布式调试工具的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。