如何使用Oozie将数据从内部部署的hadoop集群传输到AWS S3? (Oozie安装在内部部署的cloudera集群上)

时间:2017-12-18 21:49:39

标签: hadoop amazon-s3 cloudera oozie

如何使用Oozie将数据从内部部署Hadoop集群传输到AWS S3? (Oozie安装在内部部署的Cloudera集群上)

3 个答案:

答案 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可以重新启动整个执行过程或仅执行某些步骤。并在失败的情况下发送邮件等。