自动草稿

01 以获取与引入Flink源码

1. 浏览Flink源码

以获取Flink源码的形式有三种:一类是透过官方网站的源码浏览门牌号间接浏览,另一类是透过git clone的形式。

1)官方网站浏览形式

2)git clone形式

输出指示将源码浏览到邻近地区,如图1-5所示。

自动草稿

▲图1-5 git clone形式浏览

2. 引入Flink源码

引入Flink 源码分为三步,依次是将Flink源码引入IDEA和实用性Flink源码的CheckStyle。当中,实用性好Flink 源码的CheckStyle是为的是确保Flink 源码修正合乎CheckStyle里的规范化明确要求。

将浏览好的Flink源码引入IDEA,流程如下。

启动IntelliJ IDEA 并单击欢迎窗口右上角的Open按钮。在弹出窗口中优先选择Flink源码的根目录。优先选择Import project from external model和maven项,并单击Next按钮。优先选择SDK。如果之前没有实用性过SDK,单击 图标, 并点击JDK,优先选择你的JDK的目录,然后单击OK按钮。单击Next 按钮完成Flink源码的引入。在引入的项目右侧单击Maven→Generate Sources and Update Folders的图标,将Flink Library 构筑到Maven 邻近地区仓库。构筑项目(单击Build→Make Project图标)。

想对Flink展开二次开发或者为开源社区贡献代码的读者可以优先选择实用性CheckStyle。

1)Java CheckStyle实用性流程

IntelliJ IDEA 透过CheckStyle-IDEA 插件来支持CheckStyle。

在IntelliJ IDEA 的Plugins Marketplace中查找并安装 CheckStyle-IDEA 插件。依次优先选择Settings→Tools→Checkstyle并设置checkstyle。将 Scan Scope设置为Only Java sources(including tests)。在Checkstyle version下拉列表中优先选择checkstyle版,并单击Apply按钮。(注:官方推荐版为8.12。)在Configuration File面板中单击 图标添加新实用性:在弹窗中将Description设置为Flink;选中 Use a local Checkstyle file,并优先选择Flink源码目录下的 tools/maven/checkstyle.xml文件;勾选Store relative to project location 选项,单击Next按钮;将checkstyle.suppressions.file的属性设置值为 suppressions.xml,单击Next按钮即完成实用性。勾选刚刚添加的新实用性Flink,以将其设置为活跃的实用性,依次单击Apply 和OK按钮,即完成Java 部分CheckStyle的实用性。若源码违反CheckStyle规范化,CheckStyle会给出警告。

在CheckStyle 构筑完成后,依次优先选择Settings→Editor→Code Style→Java,并单击齿轮图标,优先选择引入Flink源码目录下的tools/maven/checkstyle.xml文件,这样就可以自动调整import的布局了。

可以在CheckStyle的窗口中单击Check Module按钮扫描整个模块,以检测代码的CheckStyle。

注意:目前Flink源码的flink-core、flink-optimizer和 flink-runtime模块还没有完全合乎设置的CheckStyle的明确要求,因此在这三个模块中出现违反CheckStyle的警告是正常的。

2)Scala CheckStyle实用性流程

开启Scala 的CheckStyle,依次优先选择Settings→Editor→Inspections,再搜索Scala style inspections并勾选。将Flink源码目录下的tools/maven/scalastyle_config.xml放置到Flink 源码的.idea目录下,即完成Scala部分CheckStyle的实用性。

02 校对与增容Flink源码

1. 校对与构筑Flink

源码已经引入,CheckStyle也已实用性好,接下来开始校对与构筑Flink。

在构筑源码之前,假如有修正Flink 版的需求,可以透过修正Flink源码的tools/change-version.sh来实现。

Flink源码的校对与构筑会因Maven版的不同而有所差异。对于Maven 3.0.x 版、3.1.x版、3.2.x版,可以采用简单构筑Flink的形式,在Flink源码的根目录下运行以下指示。

$ mvn clean install -DskipTests

而对于Maven 3.3.x及以上版,则要相对麻烦一点,在Flink源码的根目录下运行下面的指示。

$mvn clean install -DskipTests$cdflink-dist$mvn clean install

推荐使用Maven 3.2.5版,下面就依据这个版来如是说更多的构筑内容。使用如下形式快速构筑Flink源码,会跳过测试、QA插件、Java docs。

$ mvn clean install -DskipTests -Dfast

在构筑Flink时,会默认构筑一个Flink特定的Hadoop 2的jar,以供Flink 使用HDFS 和YARN。大多数开发者有指定Hadoop版的需求(建议优先选择Hadoop 2.4及以上版)。

$ mvn clean install -DskipTests -Dhadoop.version=3.2.2-Dinclude-hadoop

当中加上了-Dinclude-hadoop参数,这会将Hadoop的类打包到lib目录下的flink-

dist*.jar,否则Hadoop 会作为一个jar包放在opt目录下。

优先选择合适的形式构筑Flink项目,会将Flink的构筑放到邻近地区Maven仓库中,并将Flink源码构筑结果放在build-target目录(Flink源码构筑目录)下。可以将build-target目录压缩到一个tar包,即与官方网站一样的Flink 二进制包。

2. Flink 源码增容

增容Flink 源码有助于我们了解源码的执行流程和排查问题。Flink 源码增容分为邻近地区增容和远程增容,下面来依次如是说。

1)邻近地区增容

以Flink源码自带Streaming 的WordCount为例如是说怎样展开邻近地区增容。找到Flink 源码目录flink-examples/flink-examples-streaming的多级子目录下的WordCount.java,再优先选择Debug。读者可以在Flink源码中设置断点展开跟踪增容。

2)远程增容

邻近地区增容仅限于部署模式中的Local模式,对于基于Standalone、on YARN、on Kubernetes的部署模式,需要使用远程增容。

远程增容形式有三种:一是修正日志等级,二是修正实用性来开启Java远程增容。

修正日志等级

打开Flink源码的构筑目录(build-target)下的conf/log4j.properties,根据需要将内容中的INFO改成DEBUG,如下所示,只是将rootLogger的赋值从INFO 修正为DEBUG。修正log4j.properties后构筑和运行Flink,即可透过DEBUG日志展开远程增容。

设置全局的日志等级log4j.rootLogger=DEBUG, file也可以按需改变Flink、Akka、Hadoop、Kafka和ZooKeeper包以及其他包的日志等级log4j.logger.org.apache.flink=INFO

log4j.logger.akka=INFO
log4j.logger.org.apache.kafka=INFO
log4j.logger.org.apache.hadoop=INFO
log4j.logger.org.apache.zookeeper=INFOLog all infos in the given filelog4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.file=${log.file}
log4j.appender.file.append=false
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}
%-5p %-60c %x – %m%nSuppress the irrelevant (wrong) warnings from the Netty channel handlerlog4j.logger.org.apache.flink.shaded.akka.org.jboss.netty.channel
.DefaultChannelPipeline=ERROR, file修正实用性来开启Java远程增容

首先打开IDEA,创建Remote项(见图1-6)并复制Remote项的Java运行参数内容,然后修正Flink 构筑目录下的conf/flink-conf.yaml,添加env.java.opts属性与值,添加的内容如下:

env.java.opts: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n, address=5005

自动草稿

▲图1-6 实用性远程增容中的Remote项

还可以透过env.java.opts.jobmanager 与env.java.opts.taskmanager来设置JobManager 和TaskManager运行的参数,从而设置开启远程增容。设置实用性后,基于这个构筑目录运行Flink应用,根据运行的JobManager 与TaskManager 的IP修正原先实用性的Remote项的host,在Flink源码中设置断点,透过Debug 实用性Remote项来展开远程增容。

设置env.java.opts、env.java.opts.jobmanager和env.java.opts.taskmanager的方法在on Kubernetes模式下很适用,因为Flink 运行的各个组件的IP不同。其他模式存在运行组件与IP、增容端口相同的问题,对于这种情况可以考虑采用修正日志等级的形式。

透过学习Flink源码的校对与构筑,我们知道怎样根据需要构筑一个Flink发布包。透过学习Flink源码的增容,我们对源码的增容有了更深的了解,为后续理解源码和排查源码问题打下了基础。

1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!