欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

程序员文章站 2022-03-14 19:02:38
...

flink作为新兴的实时流式计算平台,实在是个强大的工具;本人由于需要下载安装并尝试了几天,记录一下Mac环境下的flink的本地模式环境搭建与配置以及踩坑过程。由于我也还处于摸索阶段,所以本文专为零基础新手准备,基本上算是for dummies!


0. 准备工作

要安装使用flink,必须本机装有对应版本的java,关于java JDK的安装与环境配置不属于本博客范畴,可参见:Mac环境下java JDK的下载安装与环境配置

搞定java问题之后,我们可以打开terminal,检查一下java有没有安装成功,看一下java的版本号;在terminal中输入以下代码:

$java --version

如果出现以下输出,java的安装这一步就肯定没问题啦:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

至于java的版本是否对应你想要安装的flink版本,只能说都安装最新版肯定没问题啦;


1. flink的下载与安装

准备工作完成之后,就可以进行flink的下载与安装了,其实Mac环境下对于这些工具的下载和安装相对来说非常简单,因为有homebrew神器!

只需要在terminal中输入以下代码即可:

$brew install apache-flink

回车之后就会自动下载和安装,默认安装最新版本;

安装结束之后,我们可以通过以下代码检测安装是否成功,以及安装的flink版本号信息:

$flink --version

一般会如下显示:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

当然,这样我们也看不出个所以然,我们还可以更详细地看一下flink的信息,输入以下代码:

$brew info apache-flink

会显示如下图所示的有关apache-flink的详细信息:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑


2. flink的启动

flink安装好之后,我们首先要将其启动。

首先,我们经过上一步的显示出flink的详细信息之后,我们就可以获取到flink的安装目录,就是上图红方框中的第四行;

对于版本x.x.x,flink的安装目录默认为:/usr/local/Cellar/apache-flink/x.x.x

这个建议大家记住,后面每次启动flink的时候都要用到!

于是,我们在terminal中通过以下代码进入该目录:

$cd /usr/local/Cellar/apache-flink/1.8.1

接着在此目录下,写入以下代码并回车便可以运行flink了:

$./libexec/bin/start-cluster.sh

这是因为在文件夹1.8.1里面,要启动flink,需要再进入其中的/libexec/bin文件夹,通过命令行运行其中的start-cluster.sh文件,下图为我启动flink的完整terminal,运行后的显示输出如下图红方框所示:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

到此,flink就已经在你的电脑上以本地模式运行起来了!

你还可以通过Apache官方提供的基于浏览器的Dashboard工具可视化地观察运行情况,具体做法为:打开浏览器,输入以下网址或直接点击:localhost:8081/#/overview

以后大家就可以把以上网址作为书签保存在浏览器里,启动flink之后直接打开;打开Dashboard之后如下图所示:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

到此,flink已经正常运行啦!


3. 运行示例程序及踩坑

接下来我们可以试着跑一个例子,这个代码我们先不用管是如何写出来的。

在安装路径下面有一个目录:/usr/local/Cellar/apache-flink/1.8.1/libexec/examples

大家从“访达”可以进去看看,下面包含一些官方打包好的代码。我们进入 Streaming 目录下面会发现几个 jar 包。

这些jar包就是官方提供的示例程序了。

接下来,我们首先需要重新打开一个terminal,在其中输入以下代码来监听一个端口:

$nc -l 9000

这里选择9000端口的原因是,网上的大佬们基本上都是使用9000端口来干我们这个事情,而且很多端口默认会有它自己的工作,随便乱选很有可能出问题,所以我们还是老老实实选择9000端口吧:)

这里稍微注意一下:如果上一句代码运行成功,terminal会是如下图这样什么都不显示!

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

开启监听9000端口之后,我们就可以在9000端口上运行我们的示例程序了。

这一步我们依然需要重新打开一个terminal,输入以下代码进入bin文件夹:

$cd /usr/local/Cellar/apache-flink/1.8.1/bin

然后输入以下代码在9000端口上运行示例程序:

$flink run ../libexec/examples/streaming/SocketWindowWordCount.jar --port 9000

很多人在这里会想,我除了监听端口号的terminal之外不是还有一个terminal嘛,也就是那个开启flink的terminal,那个窗口刚好在/usr/local/Cellar/apache-flink/1.8.1文件夹,不是刚好用这个窗口更简洁?

如果你这样做,有两种可能,目前我也不知道定论是哪样,第一种是你成功地找到了捷径!

第二种是你会得到下面这样的错误:

Could not build the program from JAR file

我当时遇到了很多次这样的错误,真的是非常坑,因为网上似乎并没有明确的解决办法,尝试了很久之后,我终于发现,在监听完端口之后,重新打开一个terminal来运行flink run指令就可以解决!

总之这个踩坑体验非常不好,而且我一度以为肯定是start-cluster之后,那个terminal就不可以正常进行其他功能了,但是我后来试过几次之后又不会出问题!

所以建议大家索性还是重新打开一个terminal进行后面的步骤,反正也更容易看清楚嘛!

总之,说了半天,只要你成功了,你的Dashboard界面就会是下面这样:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

Running Jobs就有一条正在运行的记录了,而Available Task Slots就变为0了。

接下来我们可以尝试着看一下这个示例程序的作用;SocketWindowWordCount,如其名,这个示例程序是统计窗口中输入的字符的次数;所以,在哪输入呢?

我们监听9000端口的目的就是去使用它,所以输入的地方就是我们监听9000端口号的窗口,我们可以在该窗口随意输入一些字符,如下图所示:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

那输入之后怎么看统计结果呢?

我们再打开一个terminal,进入/usr/local/Cellar/apache-flink/1.8.1/libexec/log文件夹,该文件夹是flink程序运行的日志文件夹,会有一个.out文件夹,我们就是要打开这个.out文件来查看统计结果,所以输入以下代码就可以查看了:

$cd /usr/local/Cellar/apache-flink/1.8.1/libexec/log
$tail -f flink-*taskexecutor-*.out

查看的结果如下图所示:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

可以看到它从我们输入的第3行开始计数的;后面几个记录是我开启这个日志记录文件之后敲进去的,你即时敲内容进去,日志文件即时就会统计出来,即时情况下,每次回车会统计一次。

这里之所以是从第3行开始统计,我的理解是日志会隔一段时间抛弃掉统计的历史结果;

总之,程序是运行成功了,而且结果也没问题;

所以接下来,我们就可以关闭整个flink程序了,关闭的方式是在terminal内,输入以下代码:

$cd /usr/local/Cellar/apache-flink/1.8.1
$./libexec/bin/stop-cluster.sh

如下图所示就成功关闭了:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

接下来刷新Dashboard界面就会变成下图这样:

新手零基础-Mac环境下flink下载安装+本地模式示例程序运行+踩坑

至此,整个flink的环境搭建和本地模式的示例运行就全部搞定啦!

相关标签: flink