hadoop - 如何使用 Airflow 运行 HDFS Copy 命令?

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

我可以知道如何使用 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/

相关文章:

python - 命令 "python setup.py egg_info"失败

python - 传递字符串列表作为 Airflow 中依赖任务的参数

hadoop - INSERT INTO 产生一个新文件

java - 运行读取Elasticsearch的map-reduce作业时出错

hadoop - 从 JSONserde 中的 JSON 数组访问 sibling 的值?

apache-spark - 在YARN上运行的作业的应用程序级别优先级

google-cloud-platform - Gmail API 无法向 Pub/Sub 平台发布任何消息

go - 在Go应用程序中使用默认凭据时出现GCP权限问题

python - 模块未找到错误 : No module named 'google.cloud'

airflow - 关于 Airflow initdb 的问题