我有几个关于将Dask与Hadoop/Yarn一起使用的问题。
1)如何将Dask连接到Hadoop/YARN并并行化作业
当我尝试使用时:
from dask.distributed import Client
client = Client('Mynamenode:50070')
它导致错误:
CommClosedError:in:流关闭:尝试调用远程方法"identity"时
我应该传递名称节点的地址还是数据节点的地址?我可以推荐动物园管理员吗?
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-平行
此操作失败,并出现安全错误。
我在集群上没有sudo
访问权限,因此在集群中的每个节点上安装任何软件包都是不可能的,我只能通过我的userid
下的conda
和pip
进行安装。
最后,如果有人能在Yarn上发布Dask的工作示例,那将非常有帮助
非常感谢您的帮助,
在yarn上最简单的dask实现看起来像下面的
- 安装带有
conda install knit -c conda-forge
的针织(很快就会有"dask yarn"包,也许是一个更明显的名称)
关于如何创建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
——这是相当模糊的,如果没有进一步的信息,我不能说更多。你启用了什么安全tdo,你看到了什么错误?可能您需要使用kerberos进行身份验证,但尚未运行kinit
。