如何使用Dask在纱线上运行并行化的python作业?

时间:2017-10-25 22:15:01

标签: hadoop parallel-processing yarn dask dask-distributed

关于将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的工作示例,那将会非常有帮助。

非常感谢任何帮助,

1 个答案:

答案 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