在Alluxio上运行Apache Flink
该指南介绍如何在Alluxio上运行Apache Flink,以便你在Flink中使用Alluxio的文件。
前期准备
- 安装好Java 8 Update 161 (8u161+)或更新版本, 64-bit.。
- 使用本地模式或集群模式构建好Alluxio。
- 请在Apache Flink网站上阅读Flink安装说明。
配置
Apache Flink可以通过通用文件系统包装类(可用于Hadoop文件系统)来使用Alluxio。因此,Alluxio的配置主要在Hadoop配置文件中完成。
在core-site.xml
中设置属性
如果你安装Flink的同时安装了Hadoop,将如下属性加到core-site.xml
配置文件:
<property>
<name>fs.alluxio.impl</name>
<value>alluxio.hadoop.FileSystem</value>
</property>
如果你没有安装Hadoop,创建一个包含以下内容的core-site.xml
文件
<configuration>
<property>
<name>fs.alluxio.impl</name>
<value>alluxio.hadoop.FileSystem</value>
</property>
</configuration>
在conf/flink-conf.yaml
中指定core-site.xml
的路径
接下来需要指定Flink中Hadoop配置的路径。打开Flink根目录下conf/flink-conf.yaml
文件,设置fs.hdfs.hadoopconf
的值为core-site.xml
的目录(对于新的Hadoop版本,该目录通常以etc/hadoop
结尾)。
布置Alluxio客户端Jar包
为了与Alluxio通信,需要提供带有Alluxio核心客户端Jar包的Flink程序。我们推荐您直接从http://www.alluxio.io/download下载压缩包。另外,高级用户可以选择用源文件编译产生客户端Jar包。遵循以下步骤:here,在 ``路径下可以找到客户端的Jar包。
接下来需要让Alluxio jar
文件对Flink可用,因为其中包含了配置好的alluxio.hadoop.FileSystem
类。
有以下几种方式实现:
- 将
/<PATH_TO_ALLUXIO>/client/alluxio-2.8.1-client.jar
文件放在Flink的lib
目录下(对于本地模式以及独立集群模式)。 - 将
/<PATH_TO_ALLUXIO>/client/alluxio-2.8.1-client.jar
文件放在布置在Yarn中的Flink下的ship
目录下。 - 在
HADOOP_CLASSPATH
环境变量中指定该jar文件的路径(要保证该路径对集群中的所有节点都有效)。例如:
$ export HADOOP_CLASSPATH=/<PATH_TO_ALLUXIO>/client/alluxio-2.8.1-client.jar
将Alluxio额外属性转化为Flink属性
除此以外,如果conf/alluxio-site.properties
和客户端相关的配置文件中有任何指定的属性,请在{FLINK_HOME}/conf/flink-conf
.yaml
文件中将这些属性转化为env.java.opts
,从而方便Flink使用Alluxio的配置。例如,如果你想要将CACHE_THROUGH作为Alluxio客户端的写文件方式
,你应该在 {FLINK_HOME}/conf/flink-conf.yaml
增加如下配置
env.java.opts: -Dalluxio.user.file.writetype.default=CACHE_THROUGH
注意:如果有正在运行的Flink集群,需要将该集群停止并重新运行以应用更改后的配置。
在Flink中使用Alluxio
Flink中使用Alluxio,指定路径时使用alluxio://
前缀。
如果Alluxio是本地安装,有效路径类似于:
alluxio://localhost:19998/user/hduser/gutenberg
。
Wordcount示例
该示例假定你已经按前文指导安装了Alluxio和Flink。
将LICENSE
文件放入Alluxio中,假定当前目录为Alluxio工程的根目录:
$ ./bin/alluxio fs copyFromLocal LICENSE alluxio://localhost:19998/LICENSE
在Flink工程的根目录下运行以下命令:
$ ./bin/flink run examples/batch/WordCount.jar \
--input alluxio://localhost:19998/LICENSE \
--output alluxio://localhost:19998/output
接着打开浏览器,进入http://localhost:19999/browse,其中应存在一个output
文件,该文件即为对LICENSE
文件进行word count的结果。