若泽大数据 www.ruozedata.com

ruozedata


  • 主页

  • 归档

  • 分类

  • 标签

  • 发展历史

  • Suche

生产Spark2.4.0如何Debug源代码

Veröffentlicht am 2019-04-17 | Bearbeitet am 2019-06-14 | in Spark Other | Aufrufe:

源码获取与编译

  1. 直接从Spark官网获取源码或者从GitHub获取
    enter description here

enter description here

下载源码

1
wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0.tgz

解压源码

1
tar -zxf spark-2.4.0.tgz
  1. Spark源码编译
    此处不再啰嗦,直接去腾讯课堂,搜索“若泽大数据”即可找到编译视频。

源码导入IDEA

enter description here

运行hive-thriftserver2

从spark-2.4.0-bin-2.6.0-cdh5.7.0/sbin/start-thriftserver.sh 脚本中找到 hive-thriftserver2 的入口类:

1
org.apache.spark.sql.hive.thriftserver.HiveThriftServer2

enter description here

配置运行环境

1
Menu -> Run -> Edit Configurations -> 选择 + -> Application

enter description here

-Dspark.master=local[2] 代表使用本地模式运行Spark代码

运行之前需要做一件很重要的事情,将 hive-thriftserver 这个子项目的pom依赖全部由provided改为compile:

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<scope>compile</scope>
</dependency>

添加运行依赖的jars

1
Menu -> File -> Project Structure -> Modules -> spark-hive-thriftserver_2.11 -> Dependencies 添加依赖 jars -> {Spark_home}/assembly/target/scala-2.11/jars/

enter description here

中间遇到的问题

问题一

1
2
3
4
5
spark\sql\hive-thriftserver\src\main\java\org\apache\hive\service\cli\thrift\ThriftCLIService.java

Error:(52, 75) not found: value TCLIService

public abstract class ThriftCLIService extends AbstractService implements TCLIService.Iface, Runnable {………..

解决办法: 在spark\sql\hive-thriftserver\src\gen\java右键中点Mark Directory as -> Sources Root即可

问题二

1
2
Exception in thread "main" java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal  
at java.lang.ClassLoader.defineClass1(Native Method)

解决办法:在 hive-thriftserve 子项目的pom文件中添加依赖

1
2
3
4
5
<dependency>
<groupId>xml-apis</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>

问题三

1
java.net.BindException: Cannot assign requested address: Service 'sparkDriver' failed after 16 retries (starting from 0)! Consider explicitly setting the appropriate port for the service 'sparkDriver' (for example spark.ui.port for SparkUI) to an available port or increasing spark.port.maxRetries.

解决办法: 在 /etc/hosts 文件中配置相应的地址映射。

成功运行

在 HiveThriftServer2 中打断点进行调试源码即可。

打一个断点如下所示:
enter description here
就能看到断点所打印出来的信息。

ruozedata WeChat Bezahlung
# spark # 高级
Spark内存管理之三 UnifiedMemoryManager分析
Azkaban3.X 全面解读
  • Inhaltsverzeichnis
  • Übersicht

ruozedata

若泽数据优秀博客汇总
155 Artikel
31 Kategorien
74 schlagwörter
RSS
GitHub B站学习视频 腾讯课堂学习视频 官网
  1. 1. 源码获取与编译
  2. 2. 源码导入IDEA
  3. 3. 运行hive-thriftserver2
  4. 4. 配置运行环境
  5. 5. 添加运行依赖的jars
  6. 6. 中间遇到的问题
  7. 7. 成功运行
|
若泽数据
|