【问题标题】:How to run HDFS Copy commands using Airflow?如何使用 Airflow 运行 HDFS Copy 命令?
【发布时间】:2021-07-26 11:47:57
【问题描述】:

我可以知道如何使用气流在 DataProc 集群上执行 HDFS 复制命令。 使用气流创建集群后,我必须将一些 jar 文件从 Google 存储复制到 HDFS 主节点文件夹。

【问题讨论】:

    标签: hadoop google-cloud-platform airflow google-cloud-dataproc


    【解决方案1】:

    您可以使用类似这样的方式在 dataproc 集群上执行 hdfs 命令

    gcloud dataproc jobs submit hdfs 'ls /hdfs/path/' --cluster=my-cluster -- 
    region=europe-west1
    

    最简单的方法是[1]通过

    gcloud dataproc jobs submit pig --execute 'fs -ls /'
    

    或以其他方式 [2] 作为其他 shell 命令的包罗万象。

    对于单个小文件

    您可以使用 hdfs copy 命令将单个文件从 Google Cloud Storage (GCS) 复制到 HDFS。请注意,您需要从集群中的节点运行它:

    hdfs dfs -cp gs://<bucket>/<object> <hdfs path>
    

    这是因为

    hdfs://<master node> 
    

    是默认文件系统。如果需要,您可以显式指定方案和 NameNode:

    hdfs dfs -cp gs://<bucket>/<object> hdfs://<master node>/<hdfs path>
    

    对于大文件或大目录的文件

    当您使用 hdfs dfs 时,数据通过您的本地计算机进行管道传输。如果您要复制大型数据集,您可能希望使用 DistCp 在集群上并行执行此操作:

    hadoop distcp  gs://<bucket>/<directory> <HDFS target directory>
    

    请参阅 [3] 了解详情。

    [1]https://pig.apache.org/docs/latest/cmds.html#fs

    [2]https://pig.apache.org/docs/latest/cmds.html#sh

    [3]https://hadoop.apache.org/docs/current/hadoop-distcp/DistCp.html

    【讨论】:

    • 嗨 Pooja,感谢您的回答。
    • 如何使用 Airflow 执行?
    • 在dataproc上执行hdfs命令后,如上面答案中提到的,您需要利用dataproc操作符在airflow中执行hdfs命令。示例:DataProcHadoopOperator 帮助在 Cloud DataProc 集群上启动 Hadoop 作业。
    【解决方案2】:

    我不确定您的用例是否通过气流来执行此操作,因为如果它是一次性设置,那么我认为我们可以直接在 dataproc 集群上运行命令。但是找到了一些可能会有所帮助的链接。据我了解,我们可以使用 BashOperator 并运行命令。

    https://big-data-demystified.ninja/2019/11/04/how-to-ssh-to-a-remote-gcp-machine-and-run-a-command-via-airflow/

    Airflow Dataproc operator to run shell scripts

    【讨论】:

      猜你喜欢
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 2019-10-25
      • 2016-06-10
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      相关资源
      最近更新 更多