我正在探索這個 python 包mrjob以在 python 中運行 MapReduce 作業。我試過在本地環境中運行它,它運行良好。
我在 Kubernetes (GKE) 集群上運行了 Hadoop 3.3。所以我也設法mrjob從內部在 name-node pod 中成功運行。
現在,我在同一個 Kubernetes 集群(同一個命名空間)中運行了一個 Jupyter Notebook pod。我想知道是否可以mrjob從 Jupyter Notebook 運行 MapReduce 作業。
問題似乎是我沒有在 Jupyter Notebook 環境中定義 $HADOOP_HOME 。因此,根據檔案,我創建了一個組態檔mrjob.conf,如下所示;
runners:
hadoop:
cmdenv:
PATH: <pod name>:/opt/hadoop
但是mrjob仍然無法檢測到 hadoop bin 并給出以下錯誤
FileNotFoundError: [Errno 2] No such file or directory: 'hadoop'
那么有沒有一種方法可以配置mrjob為在 GKE 集群上使用我現有的 Hadoop 安裝運行?我嘗試搜索類似的示例,但找不到。
uj5u.com熱心網友回復:
mrjob是一個包裝器hadoop-streaming,因此需要在運行代碼的服務器上安裝 Hadoop 二進制檔案(我猜這里是 Pod);包括提交應用程式的 Juptyer pod。
IMO,您在 k8s 中部署 PySpark/PyFlink/Beam 應用程式比在 hadoop-streaming 中更容易,因為您不需要在 k8s 中“需要”Hadoop 來運行這樣的分布式行程。
建議使用 Beam,因為它與 GCP DataFlow 兼容
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/520322.html
