您现在的位置是:首页 > 文章详情

Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用

日期:2019-07-18点击:448

本地安装单机版本Flink

一般来说,线上都是集群模式,那么单机模式方便我们测试和学习。

环境要求

本地机器上需要有 Java 8 和 maven 环境,推荐在linux或者mac上开发Flink应用:

如果有 Java 8 环境,运行下面的命令会输出如下版本信息:

image

如果有 maven 环境,运行下面的命令会输出如下版本信息:

image

开发工具推荐使用 ItelliJ IDEA。

第一种方式

来这里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

原文链接:https://yq.aliyun.com/articles/709991
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章