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

栏目: 编程工具 · 发布时间: 6年前

内容简介:本地机器上需要有 Java 8 和 maven 环境,推荐在linux或者mac上开发Flink应用:如果有 Java 8 环境,运行下面的命令会输出如下版本信息:如果有 maven 环境,运行下面的命令会输出如下版本信息:

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

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

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

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

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

开发 工具 推荐使用 ItelliJ IDEA。

插播广告

  • 全网唯一一个从0开始帮助Java开发者转做大数据领域的公众号~

  • 公众号 大数据技术与架构 或者搜索 import_bigdata 关注,大数据学习路线最新更新,已经有很多小伙伴加入了~

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

第一种方式

来这里flink.apache.org/

看这里:

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

注意:

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
复制代码
Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用

执行命令:

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

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

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

恭喜你,一个单机版的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从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用

同样可以构建一个Flink工程,而且自带一些demo。

原理是什么?点一下它看看就明白了。 flink.apache.org/q/quickstar…

编写一个入门级的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官方推荐

运行

本地右键运行:

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

提交到本地单机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从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用

我们刚才提交过的程序。

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

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

以上所述就是小编给大家介绍的《Flink从入门到放弃(入门篇2)-本地环境搭建&构建第一个Flink应用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人类2.0

人类2.0

皮埃罗∙斯加鲁菲(Piero Scaruffi) / 闫景立、牛金霞 / 中信出版集团股份有限公司 / 2017-2-1 / CNY 68.00

《人类2.0:在硅谷探索科技未来》从在众多新技术中选择了他认为最有潜力塑造科技乃至人类未来的新技术进行详述,其中涉及大数据、物联网、人工智能、纳米科技、虚拟现实、生物技术、社交媒体、区块链、太空探索和3D打印。皮埃罗用一名硅谷工程师的严谨和一名历史文化学者的哲学视角,不仅在书中勾勒出这些新技术的未来演变方向和面貌,还对它们对社会和人性的影响进行了深入思考。 为了补充和佐证其观点,《人类2.0......一起来看看 《人类2.0》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具