Spark 分布式调试工具
生活随笔
收集整理的这篇文章主要介绍了
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 分布式调试工具的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: jQuery 选择器和筛选器
- 下一篇: 闭环思维之follow through和