无法使用snakebite获取和显示文件

i7uaboj4  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(723)

我在试 snakebite . 我启动了以下客户端:

from snakebite.client import Client
client = Client("my.host.com", 8020, effective_user='datascientist')

首先,我尝试列出用户目录:

for x in client.ls(['/user/datascientist']):
    print x

这很管用,还印了几本字典;目录中的每个项目一个。其中一项是文件 foobar.txt 我想看看。为此,我认为我应该 Client.cat :

for cat in client.cat(['/user/datascientist/da-foobar.txt',]):
    print(cat)
    for item in cat:
        print(item)

然而,这并没有起作用。我收到以下错误消息:

ConnectionFailureException: Failure to connect to data node at (10.XXX.YYY.ZZZ:50010)

我做错了什么?
顺便说一句:使用 PyWebHdfsClientpywebhdfs.webhdfs 我通过启动一个地址相同但端口为50070的客户机来查看该文件。我不知道这是否有关。
编辑1:我也试着用 snakebite.client.Client.text 也犯了同样的错误。我想这并不奇怪。
顺便说一句,文件的内容是 my file is this\ntest file .

x759pob2

x759pob21#

我找到了解决办法。似乎列表操作可以单独在name节点上完成。相反,文本文件的打印需要访问数据节点!通过如下示例化客户机

client = Client("stage-gap-namenode-2.srv.glispa.com", 8020, effective_user='datascientist', 
                use_datanode_hostname=True)

这个 cat 操作不使用内部ip,而是使用主机名。我总结了一个最小的例子。

相关问题