如何使用Oozie将数据从内部部署Hadoop集群传输到AWS S3? (Oozie安装在内部部署的Cloudera集群上)
答案 0 :(得分:0)
您可以使用Java程序,AWS提供了put方法,通过该方法我们可以将数据从内部上传到AWS s3。然后使用Oozie安排这个。请记住,Oozie不是一个可以将数据上传到AWS的程序,它只是一个预定的。
答案 1 :(得分:0)
如果您真的想使用oozie,请使用DistCP并检查您的设置: https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html
hadoop distcp -Dhadoop.security.credential.provider.path=jceks://hdfs/aws/aws.jceks /test s3a://kartik-test/
将数据移入和移出Hadoop的标准是Apache NiFi
Apache NiFi支持功能强大且可扩展的数据路由,转换和系统中介逻辑的有向图。 Apache NiFi的一些高级功能和目标包括:
- 基于Web的用户界面
- 设计,控制,反馈和监控之间的无缝体验
- 高度可配置
- 耐受损失与保证交付
- 低延迟与高吞吐量
- 动态优先排序
-Flow可以在运行时修改
- 背压
-Data Provenance
- 从头到尾跟踪数据流
- 为扩展名设计
- 建立自己的处理器和更多
- 实现快速开发和有效测试
- 安全
-SSL,SSH,HTTPS,加密内容等......
- 多租户授权和内部授权/政策管理
答案 2 :(得分:0)
具有临时凭据(例如用于测试):
<action name="distcp">
<distcp xmlns="uri:oozie:distcp-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>fs.s3a.aws.credentials.provider</name>
<value>${distCpCredentialsProvider}</value>
</property>
<property>
<name>fs.s3a.access.key</name>
<value>${aws_access_key}</value>
</property>
<property>
<name>fs.s3a.secret.key</name>
<value>${aws_secret_key}</value>
</property>
<property>
<name>fs.s3a.session.token</name>
<value>${aws_session_token}</value>
</property>
</configuration>
<arg>hdfs:${hdfsBasePath}</arg>
<arg>s3a://${s3BasePath}</arg>
</distcp>
<ok to="end"/>
<error to="report_failure"/>
</action>
并且凭据存储在HDFS的文件中:
<action name="distcp">
<distcp xmlns="uri:oozie:distcp-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>hadoop.security.credential.provider.path</name>
<value>${credentialsProviderPath}</value>
</property>
</configuration>
<arg>hdfs:${hdfsBaseDir}/data</arg>
<arg>s3a://${s3BasePath}</arg>
</distcp>
<ok to="end"/>
<error to="report_failure"/>
</action>
一件好事是distcp-action基本上是从Java执行的CLI命令$> hadoop distcp <to> <from>
,通过在命令行上发出命令,可以轻松进行开发和调试。
Oozie是用于此类锻炼的好工具。例如,说您要部署它并使其运行,并且可能要花几个小时到一天才能完成。它可以准备环境,例如检查目标是否存在或创建文件夹等。如果由于某种原因失败,则Oozie可以重新启动整个执行过程或仅执行某些步骤。并在失败的情况下发送邮件等。