Hadoop 如何使用气流运行HDFS复制命令?

Hadoop 如何使用气流运行HDFS复制命令?,hadoop,google-cloud-platform,airflow,google-cloud-dataproc,Hadoop,Google Cloud Platform,Airflow,Google Cloud Dataproc,我想知道如何使用airflow在DataProc集群上执行HDFS copy命令。 使用airflow创建集群后,我必须将一些jar文件从Google存储复制到HDFS主节点文件夹。您可以使用类似的方法在dataproc集群上执行HDFS命令 gcloud dataproc jobs submit hdfs 'ls /hdfs/path/' --cluster=my-cluster -- region=europe-west1 最简单的方法是[1]通过 gcloud dataproc job

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

您可以使用类似的方法在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云存储(GCS)复制到HDFS。请注意,您需要从群集中的节点运行此操作:

hdfs dfs -cp gs://<bucket>/<object> <hdfs path>
hdfs-cp-gs://
这是因为

hdfs://<master node> 
hdfs://
是默认的文件系统。如果需要,可以显式指定scheme和NameNode:

hdfs dfs -cp gs://<bucket>/<object> hdfs://<master node>/<hdfs path>
hdfs-dfs-cp-gs:///hdfs:///
对于大型文件或大型文件目录 使用hdfs dfs时,数据通过管道传输到本地计算机。如果要复制大型数据集,则可能需要使用DistCp在集群上并行执行此操作:

hadoop distcp  gs://<bucket>/<directory> <HDFS target directory>
hadoop distcp gs:/// 请参考[3]了解详细信息

[1]

[2]


[3]

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


Hi Pooja,谢谢你的回答。如何使用气流执行它?在上面的回答中提到的dataproc上执行hdfs命令后,你需要使用dataproc操作符在气流中执行hdfs命令。示例:DataProcHadoop操作符帮助在CloudDataProc集群上启动Hadoop作业。