Flink開發環境部署配置
Flink是一個以Java及Scala作為開發語言的開源大數據項目,代碼開源在github上,並使用maven來編譯和構建項目。所需工具:Java、maven、Git。
本次操作是在windows環境下。
一、工具安裝
Java配置(略)
maven配置
- 下載安裝
- 配置環境變量
- 修改settings.xml設置
更改本地倉庫目錄,默認是C:\用戶\.m2\Respository,為了避免C盤空間不夠,更改到其他盤目錄
<localRepository>D:\Respository</localRepository>
更改鏡像倉庫
<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>
說明:第一個mirror使用的是aliyun提供的maven鏡像倉庫,能夠為國內用戶加速maven repository的訪問
第二個最重要。由於flink中的flink-filesystems/flink-mapr-fs模塊依賴mapr-releases repository提供的jar包,然而由於國內訪問mapr-releases repository比較慢,而且所依賴的maprfs-5.2.1-mapr.jar 這個jar包有48MB,flink依賴中最大的一個jar包,故初次編譯flink時,往往會由於下載mapr相關依賴超時導致編譯失敗。因此,aliyun專門有一個鏡像倉庫代理mapr-releases repository,以期望能讓用戶更容易地下載mapr相關的jar包。
aliyun提供的鏡像倉庫的meta信息:https://maven.aliyun.com/mvn/view
git(安裝略)
二、下載Flink代碼
完成以上安裝配置后,我們就可以從github上下載Flink代碼了。github上flink的代碼倉庫是https://github.com/apache/flink
(可選)國內的用戶,下載github 上的代碼可能比較慢,可以在hosts 中增加如下配置,可以顯著提升github的下載速度:
151.101.72.133 assets-cdn.github.com
151.101.73.194 github.global.ssl.fastly.net
192.30.253.113 github.com
11.238.159.92 git.node5.mirror.et2sqa
windows的hosts目錄:C:\Windows\System32\drivers\etc\hosts
linux/mac則為:/etc/hosts
克隆flink原碼到本地
打開一個空文件夾,右擊
打開git bash,執行
git clone https://github.com/apache/flink.git
(可選)代碼下載完后,默認是在master分支,一般選擇合適的發布分支使用。
git checkout release-1.7
git checkout blink
三、編譯flink代碼
# 刪除已有的build,編譯flink binary # 接着把flink binary安裝在maven的local repository(默認是~/.m2/repository)中
mvn clean install -DskipTests # 另一種編譯命令,相對於上面這個命令,主要的確保是: # 不編譯tests、QA plugins和JavaDocs,因此編譯要更快一些
mvn clean install -DskipTests -Dfast
另外,在一些情況下,我們可能並不想把編譯后的flink binary安裝在maven的local repository
下,我們可以使用下面的命令:
# 刪除已有的build,編譯flink binary
mvn clean package -DskipTests # 另一種編譯命令,相對於上面這個命令,主要的確保是: # 不編譯tests、QA plugins和JavaDocs,因此編譯要更快一些
mvn clean package -DskipTests -Dfast
如果你需要使用指定hadoop的版本,可以通過指定“-Dhadoop.version”來設置,編譯命令如下:
mvn clean install -DskipTests -Dhadoop.version=2.6.1
# 或者
mvn clean package -DskipTests -Dhadoop.version=2.6.1
這次使用的編譯命令為
mvn clean package -DskipTests -Dfast
成功截圖
當成功編譯完成后,上述幾種編譯方式最終都能在當前flink的code path下編譯出完整的flink binary,可以在flink-dist/target/目錄中看到
其中有三個文件可以留意一下(在之后的章節中,繼續學習flink binary的用法):
- flink binary目錄,此處是flink-dist\target\flink-1.7-SNAPSHOT-bin\flink-1.7-SNAPSHOT
- flink binary目錄的壓縮包,此處沒有壓縮
- 包含flink核心功能的jar包,此處是flink-dist/target/flink-dist_2.11-1.7-SNAPSHOT.jar
遇到的問題
問題1、編譯失敗,不能下載kafka-schema-registry-client-3.3.1.jar
解決:
手動下載kafka-schema-registry-client-3.3.1.jar包,下載地址如下:
手動安裝缺少的kafka-schema-registry-client-3.3.1.jar包
mvn install:install-file -DgroupId=io.confluent -DartifactId=kafka-schema-registry-client -Dversion=3.3.1 -Dpackaging=jar -Dfile=E:\bigdata_flink\packages\kafka-schema-registry-client-3.3.1.jar
問題2:flink-parent依賴包報錯
解決:
刪除本地倉庫下已經下載的\org\apache\flink 目錄,關閉git bash重新打開窗口編譯。
問題3:Failed to execute goal org. apache. maven. plugins :maven-surefire-plugin:2.18.1:test
解決:
這個是單元測試的插件,編譯不需要它,在pom文件中注釋掉這個插件: maven-surefire-plugin
參考
https://blog.csdn.net/hxcaifly/article/details/86307213
https://www.cnblogs.com/dajiangtai/p/10725249.html