Flink從入門到放棄(入門篇2)-本地環境搭建&構建第一個Flink應用


戳更多文章:

1-Flink入門

2-本地環境搭建&構建第一個Flink應用

3-DataSet API

4-DataSteam API

5-集群部署

6-分布式緩存

7-重啟策略

8-Flink中的窗口

9-Flink中的Time

Flink時間戳和水印

Broadcast廣播變量

FlinkTable&SQL

Flink實戰項目實時熱銷排行

Flink寫入RedisSink

17-Flink消費Kafka寫入Mysql

本地安裝單機版本Flink

一般來說,線上都是集群模式,那么單機模式方便我們測試和學習。

環境要求

本地機器上需要有 Java 8 和 maven 環境,推薦在linux或者mac上開發Flink應用:

如果有 Java 8 環境,運行下面的命令會輸出如下版本信息:

 
image

如果有 maven 環境,運行下面的命令會輸出如下版本信息:

 
image

開發工具推薦使用 ItelliJ IDEA。

插播廣告

  • 全網唯一一個從0開始幫助Java開發者轉做大數據領域的公眾號~

  • 公眾號大數據技術與架構或者搜索import_bigdata關注,大數據學習路線最新更新,已經有很多小伙伴加入了~

 
image

第一種方式

來這里https://flink.apache.org/

看這里:

 
image

注意:

An Apache Hadoop installation is not required to use Apache Flink. For users that use Flink without any Hadoop components, we recommend the release without bundled Hadoop libraries. 

這是啥意思?
這個意思就是說Flink可以不依賴Hadoop環境,如果說單機玩的話,下載一個only版本就行了。

第二種方式(不推薦)

git clone https://github.com/apache/flink.git cd flink mvn clean package -DskipTests 

然后進入編譯好的Flink中去執行 bin/start-cluster.sh

其他亂七八糟的安裝辦法

比如 Mac用戶可以用brew install apache-flink ,前提是安裝過 brew這個mac下的工具.

啟動Flink

我們先到Flink的目錄下來:
如下:

$ flink-1.7.1 pwd /Users/wangzhiwu/Downloads/flink-1.7.1 
 
image

 

執行命令:

 
image

接着就可以進入 web 頁面(http://localhost:8081/) 查看

 
image

恭喜你,一個單機版的flink就跑起來了。

構建一個應用

當然了,我們可以用maven,一頓new,new出來一個過程,這里我們將使用 Flink Maven Archetype 來創建我們的項目結構和一些初始的默認依賴。在你的工作目錄下,運行如下命令來創建項目:

mvn archetype:generate \
    -DarchetypeGroupId=org.apache.flink \
    -DarchetypeArtifactId=flink-quickstart-java \
    -DarchetypeVersion=1.7.2 \
    -DgroupId=flink-project \
    -DartifactId=flink-project \
    -Dversion=0.1 \
    -Dpackage=myflink \
    -DinteractiveMode=false 

這樣一個工程就構建好了。

還有一個更加牛逼的辦法,看這里:

curl https://flink.apache.org/q/quickstart.sh | bash 

直接在命令行執行上面的命令,結果如下圖:

 
image

同樣可以構建一個Flink工程,而且自帶一些demo。

原理是什么?點一下它看看就明白了。
https://flink.apache.org/q/quickstart.sh

編寫一個入門級的WordCount


    // // Program // public static void main(String[] args) throws Exception { // set up the execution environment final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); // get input data DataSet<String> text = env.fromElements( "To be, or not to be,--that is the question:--", "Whether 'tis nobler in the mind to suffer", "The slings and arrows of outrageous fortune", "Or to take arms against a sea of troubles," ); DataSet<Tuple2<String, Integer>> counts = // split up the lines in pairs (2-tuples) containing: (word,1) text.flatMap(new LineSplitter()) // group by the tuple field "0" and sum up tuple field "1" .groupBy(0) //(i,1) (am,1) (chinese,1) .sum(1); // execute and print result counts.print(); } // // User Functions // /** * Implements the string tokenizer that splits sentences into words as a user-defined * FlatMapFunction. The function takes a line (String) and splits it into * multiple pairs in the form of "(word,1)" (Tuple2&lt;String, Integer&gt;). */ public static final class LineSplitter implements FlatMapFunction<String, Tuple2<String, Integer>> { @Override public void flatMap(String value, Collector<Tuple2<String, Integer>> out) { // normalize and split the line String[] tokens = value.toLowerCase().split("\\W+"); // emit the pairs for (String token : tokens) { if (token.length() > 0) { out.collect(new Tuple2<String, Integer>(token, 1)); } } } } } 

類似的例子,官方也有提供的,可以在這里下載:
WordCount官方推薦

運行

本地右鍵運行:

 
image

提交到本地單機Flink上

  • 進入工程目錄,使用以下命令打包
mvn clean package -Dmaven.test.skip=true 

然后,進入 flink 安裝目錄 bin 下執行以下命令提交程序:

flink run -c org.myorg.laowang.WordCount /Users/wangzhiwu/WorkSpace/quickstart/target/quickstart-0.1.jar

分別制定main方法和jar包的地址。

在剛才的控制台中,可以看到:

 
image

 

我們剛才提交過的程序。

flink的log目錄下有我們提交過的任務的日志:

 
image

總結

一次簡單的flink之旅就完成了。

  • 全網唯一一個從0開始幫助Java開發者轉做大數據領域的公眾號~

  • 公眾號大數據技術與架構或者搜索import_bigdata關注,大數據學習路線最新更新,已經有很多小伙伴加入了~

 
image
  • 全網唯一一個從0開始幫助Java開發者轉做大數據領域的公眾號~

  • 公眾號大數據技術與架構或者搜索import_bigdata關注,大數據學習路線最新更新,已經有很多小伙伴加入了~

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM