我可以知道如何使用 Airflow 在 DataProc 集群上执行 HDFS 复制命令。 使用 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 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
关于hadoop - 如何使用 Airflow 运行 HDFS Copy 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67379543/