win10上編譯flink1.10.0以運行在cdh6.3.0環境中

背景:雖然之前在win10上成功編譯了flink-1.9.2以運行在cdh6.3.0環境中:

參考一:從源碼編譯Apache Flink快速部署和測試(包含指定Hadoop及Cloudera Hadoop、Blink)

參考二:flink 1.9 編譯

但爲了體驗在1.9.x的基礎上修復了的基於 Flink SQL 構建流式應用,現進行“win10上編譯flink1.10.0以運行在cdh6.3.0環境中”。

首先,在https://github.com/apache/flink/releases處點擊下載flink-release-1.10.0.tar包,雖然idea自帶了maven3.3.9(位置:D:\Application\Java\IDEA2018.1\plugins\maven\lib\maven3\conf\settings.xml)但爲了避免maven編譯出現意外,於是毅然決然地在win10上自行安裝了apache-maven-3.5.4並配置阿里源

雖然阿里源https://maven.aliyun.com/mvn/view可以看到網友普遍使用的下面的庫:
    <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
但我使用的下面庫:
	<mirror>
         <id>nexus-aliyun</id>
         <mirrorOf>central</mirrorOf>
         <name>Nexus aliyun</name>
         <url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
   <!--
	<mirror>
      <id>cloudera</id>
      <name>cloudera</name>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
      <mirrorOf>*,!mapr-releases,!confluent</mirrorOf>
	</mirror>-->
	<mirror>
      <id>nexus-aliyun-apache</id>
      <mirrorOf>central</mirrorOf>
      <name>Nexus aliyun apache</name>
      <url>http://maven.aliyun.com/nexus/content/repositories/apache-snapshots/</url>
	</mirror>
 
	<mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
	</mirror>
 
	<mirror>
      <id>mapr-public</id>
      <mirrorOf>mapr-releases</mirrorOf>
      <name>mapr-releases</name>
      <url>https://maven.aliyun.com/repository/mapr-public</url>
	</mirror>

若使用之前編譯flink1.9.x的編譯命令卻報錯:

mvn -T4C clean install -DskipTests -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.3.0 -Dflink.shaded.version=7.0 -Dscala-2.11 -Drat.skip=true(避免docs問題,見文末的“補充”說明)

發現報錯信息顯示:

Failure to find org.apache.flink:flink-shaded-jackson:jar:2.10.1-7.0 in https://repository.cloudera.com/artifactory/cloudera-repos was cached in the local repository

於是嘗試使用最原始的編譯命令報錯:flink-hadoop-fs模塊找不到flink-shaded-hadoop-2:jar:3.0.0-cdh6.3.0

mvn -T4C clean install -DskipTests -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.3.0  -Dscala-2.11 -Drat.skip=true

經查mvnrepository倉庫,從此鏈接處可以發現編譯flink-1.10.x需要flink-shaded-10.0或9.0,而不是編譯flink-1.9.x時需要的flink-shaded-8.0或7.0。而我並未找到flink官方編譯對此的描述:

於是下載flink-shaded-release-10.0.tar併成功編譯:

 mvn clean install -DskipTests -Drat.skip=true -Pvendor-repos -Dhadoop.version=3.0.0-cdh6.3.0

於是,win10上本地maven倉庫中就有了flink-1.10.0所需要的flink-shaded的依賴項,如下圖所示:

然後,再編譯flink-1.10.0報錯:flink-yarn和flink-yarn-tests兩個模塊的測試類均報錯但報錯並不都是newInstance方法中參數列表問題。

解決方案爲在兩模塊pom.xml文件中添加:

			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.0</version>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
					<!-- 略過測試代碼的編譯 -->
					<skip>true</skip>
					<!-- The semantics of this option are reversed, see MCOMPILER-209. -->
					<useIncrementalCompilation>false</useIncrementalCompilation>
					<compilerArgs>
						<!-- Prevents recompilation due to missing package-info.class, see MCOMPILER-205 -->
						<arg>-Xpkginfo:always</arg>
					</compilerArgs>
				</configuration>
			</plugin>

即如下圖所示:

最後依然使用上面的編譯命令成功編譯flink-1.10.0源碼至hadoop3.0.0-cdh6.3.0,如下圖:

補充:文首所提到的編譯命令中“避免docs問題”在之前編譯flink-1.9.0時的問題描述如下:

若編譯命令中不加-Drat.skip=true參數,即使註釋掉報錯的flink-docs子模塊依然報錯相同,如下圖所示:

經查“參考二”文中,發現若不註釋掉pom中任何一個模塊,可通過編譯命令中添加“-Drat.skip=true”避免docs報錯問題。但“參考二”的評論區中,我所提到的flink-1.9.0編譯時1/3日誌處比較隱蔽的HUSKY SKIP INSTALL報錯問題在win10上無法解決,可能需要linux環境下編譯才能避免。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章