专栏首页大数据成神之路Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用
原创

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

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

环境要求

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

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

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

开发工具推荐使用 ItelliJ IDEA。

插播广告

  • 全网唯一一个从0开始帮助Java开发者转做大数据领域的公众号~
  • 公众号大数据技术与架构或者搜索import_bigdata关注,大数据学习路线最新更新,已经有很多小伙伴加入了~

第一种方式

来这里https://flink.apache.org/

看这里:

注意:

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-1.7.1 pwd
/Users/wangzhiwu/Downloads/flink-1.7.1

执行命令:

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

恭喜你,一个单机版的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

直接在命令行执行上面的命令,结果如下图:

同样可以构建一个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官方推荐

运行

本地右键运行:

提交到本地单机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包的地址。

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

我们刚才提交过的程序。

flink的log目录下有我们提交过的任务的日志:

总结

一次简单的flink之旅就完成了。

  • 全网唯一一个从0开始帮助Java开发者转做大数据领域的公众号~
  • 公众号大数据技术与架构或者搜索import_bigdata关注,大数据学习路线最新更新,已经有很多小伙伴加入了~
  • 全网唯一一个从0开始帮助Java开发者转做大数据领域的公众号~
  • 公众号大数据技术与架构或者搜索import_bigdata关注,大数据学习路线最新更新,已经有很多小伙伴加入了~

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用 Kubernetes 部署 Flink 应用

    https://blog.csdn.net/zjerryj/article/details/100063858

    大数据技术与架构
  • 使用 Apache Flink 开发实时ETL

    场景描述:本文将介绍如何使用 Flink 开发实时 ETL 程序,并介绍 Flink 是如何保证其 Exactly-once 语义的。

    大数据技术与架构
  • 最新 | Flink1.9来袭,Kafka x Flink Meetup深圳站精华(附PPT下载)

    虽然夏日已过,但是由 Apache Kafka 与 Apache Flink 联合举办的 Meetup 深圳站如火如荼的开展并在8月的最后一天落下帷幕。

    大数据技术与架构
  • 如何使用 Kubernetes 部署 Flink 应用

    场景描述:Kubernetes 是目前非常流行的容器编排系统,在其之上可以运行 Web 服务、大数据处理等各类应用。这些应用被打包在一个个非常轻量的容器中,我们...

    zhisheng
  • 使用 Kubernetes 部署 Flink 应用

    https://blog.csdn.net/zjerryj/article/details/100063858

    大数据技术与架构
  • NLP自然语言处理中英文分词工具集锦与基本使用介绍

    1.from stanfordcorenlp import StanfordCoreNLP

    IT小白龙
  • 技术分析 | 谁是终极大Boss?一张图看懂《长安十二时辰 》人物关系

    豆瓣评分高达8.6的国产剧《长安十二时辰》,终于在今晚迎来大结局——幕后BOSS究竟是谁?张小敬和李必命运如何,都一一揭开谜底。该剧改编自以“脑洞大”著称的作家...

    逸迅科技
  • Windows漏洞利用开发教程Part 5 :返回导向编程(ROP)

    本文主要介绍的是Windows软件漏洞的利用开发教程。我花了大量的时间来研究了计算机安全领域Windows漏洞利用开发,希望能和大家分享一下,能帮助到对这方面感...

    FB客服
  • TensorFlow GPU 版安装

    木东居士
  • yao.com被建站成“良药网”,望实现“1小时良药到家”

    根据消息称,单拼域名yao.com由一家电商网站变更一家互联网诊疗医药电商平台“良药网”的网站。

    躲在树上的域小名

扫码关注云+社区

领取腾讯云代金券