戳更多文章:
1-Flink 入门
2 - 本地环境搭建 & 构建第一个 Flink 应用
- -DataSet API
- -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<String, Integer>).
- */
- 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 关注, 大数据学习路线最新更新, 已经有很多小伙伴加入了~
来源: http://www.bubuko.com/infodetail-3038283.html