关于将Dask与Hadoop / Yarn一起使用,我有几个问题。
1)如何将Dask连接到Hadoop / YARN并并行化作业?
当我尝试使用时:
from dask.distributed import Client
client = Client('Mynamenode:50070')
导致错误:
CommClosedError:in:Stream已关闭:尝试调用远程方法' identity'
我应该传递名称节点或datanode的地址吗?我可以转介Zookeeper吗?
2)如何使用Dask和HDFS3从HDFS读取数据?
当我尝试使用:
import dask.dataframe as dd
import distributed.hdfs
df = dd.read_csv('hdfs:///user/uname/dataset/temps.csv')
导致以下错误:
ImportError:没有名为lib的模块
我已尝试卸载并重新安装hdfs3,但错误仍然存在。
我安装了 knit 并尝试使用此示例启动纱线容器:
http://knit.readthedocs.io/en/latest/examples.html#ipython-parallel
此操作因安全错误而失败。
我在群集上没有 sudo
访问权限,因此在群集中的每个节点上安装任何软件包都是不可能的,我可以做的唯一安装是conda下的pip
和 userid
。
最后,如果有人可以在纱线上发布Dask的工作示例,那将会非常有帮助。
非常感谢任何帮助,
答案 0 :(得分:0)
最简单的dask-on-yarn实现方式如下所示
conda install knit -c conda-forge
安装针织物(很快就会有“dask-yarn”包装,可能是一个更明显的名称)可以在the documentation中找到有关如何创建dask集群的最简单示例。在这里,您可以创建一个本地conda环境,将其上传到HDFS并让YARN将其分发给工作人员,因此您不需要sudo访问。
请注意,您可以传递许多参数,因此建议您阅读文档的使用和疑难解答部分。
问题的具体答案
1)Client('Mynamenode:50070')
- hadoop对dask一无所知,没有理由知道namenode服务器应该知道如何处理dask客户端连接
2)No module named lib
- 这是非常奇怪的,也许是一个应该自行记录的错误。我建议您检查一下客户端和任何工作人员中是否有兼容版本的hdfs3(最理想的最新版本)
3)fails with a security error
- 这是相当模糊的,如果没有进一步的信息,我不能说更多。你启用了什么安全性,你看到了什么错误?您可能需要使用kerberos进行身份验证,但尚未运行kinit
。