我对apache flink还比较陌生,我正在尝试创建一个简单的项目,将文件生成到aws s3 bucket。根据文档,看起来我需要安装hadoop才能做到这一点。
如何设置本地环境以允许我测试此功能?我已经在本地安装了apacheflink和hadoop。我已经为hadoop的core-site.xml配置添加了必要的更改,还将hadoop\u conf路径添加到flink.yaml配置中。当我试图通过flinkui在本地提交我的工作时,我总是得到一个错误
2016-12-29 16:03:49,861 INFO org.apache.flink.util.NetUtils - Unable to allocate on port 6123, due to error: Address already in use
2016-12-29 16:03:49,862 ERROR org.apache.flink.runtime.jobmanager.JobManager - Failed to run JobManager.
java.lang.RuntimeException: Unable to do further retries starting the actor system
at org.apache.flink.runtime.jobmanager.JobManager$.retryOnBindException(JobManager.scala:2203)
at org.apache.flink.runtime.jobmanager.JobManager$.runJobManager(JobManager.scala:2143)
at org.apache.flink.runtime.jobmanager.JobManager$.main(JobManager.scala:2040)
at org.apache.flink.runtime.jobmanager.JobManager.main(JobManager.scala)
我假设我在如何设置我的环境方面遗漏了一些东西。有可能在本地这样做吗?任何帮助都将不胜感激。
2条答案
按热度按时间oyjwcjzk1#
我必须执行以下操作才能在本地运行我的flink作业,该作业将下沉到s3:
1-将flink-s3-fs-hadoop-1.9.1.jar添加到我的flink/plugins/flink-s3-fs-hadoop目录
2-修改flink/conf/flink-conf.yaml以包含s3.access-key:aws\u access\u key s3.secret-key:aws\u secret\u key fs.hdfs.hadoopconf:/etc/hadoop config
我在hadoop config文件夹中有core-site.xml文件,但它不包含任何配置,因此可能不需要fs.hdfs.hadoopconf。
os8fio9y2#
虽然您需要hadoop库,但不必安装hadoop就可以在本地运行并写入s3。我只是碰巧尝试了一下,基于avro模式编写了一个Parquet输出,并向s3生成了specifirecord。我正在通过sbt和intellij idea本地运行以下代码的一个版本。所需零件:
1) 使用以下文件指定所需的hadoop属性(注意:不建议定义aws访问密钥/密钥)。最好在具有适当iam角色的ec2示例上运行,以便读/写s3 bucket。但需要进行本地测试)
2) 导入:import com.uebercomputing.eventrecord.eventonlyrecord
3) flink代码使用具有上述配置的hadoopoutputformat:
4) 生成依赖项和使用的版本:
使用writesText到s3的编辑:
1) 创建一个hadoop配置目录(将其引用为hadoop conf dir),其中包含一个core-site.xml文件。
例如:
2) 创建一个包含文件flink-conf.yaml的目录(将其引用为flink conf dir)。
例如:
3) 编辑用于运行s3 flink作业的intellij运行配置-run-edit configurations-并添加以下环境变量:
4) 运行设置了该环境变量的代码: