我编写了以下代码,用于通过php创建/写入hdfs文件。参考以下apihttps://github.com/yujiro3/webhdfs
但代码出现以下错误,无法将文件上载到所需目录中:
{"RemoteException":{"exception":"IOException","javaClassName":"java.io.IOException","message":"Failed to find datanode, suggest to check cluster health."}
HTTP/1.1 403 Forbidden
Cache-Control: no-cache
Expires: Mon, 07 Mar 2016 21:28:39 GMT
Date: Mon, 07 Mar 2016 21:28:39 GMT
Pragma: no-cache
Expires: Mon, 07 Mar 2016 21:28:39 GMT
Date: Mon, 07 Mar 2016 21:28:39 GMT
Pragma: no-cache
Content-Type: application/json
Transfer-Encoding: chunked
Server: Jetty(6.1.26)
这是我的密码:
<?php
require 'WebHDFS.php';
$hdfs = new WebHDFS ();
$hdfs -> put('/user/webuser/sample.txt', "sample \ n test \ n");
?>
我应该做什么修正?
1条答案
按热度按时间n1bvdmb61#
似乎您的hdfs数据节点是不可访问的,并且与您的php无关。
从控制台尝试创建一个没有php的文件夹,如下所示:
我猜这将失败,因为数据节点已关闭。
检查hdfs-site.xml文件以查看dfs.datanode.data.dir指向的位置,并确保该位置存在。然后在同一个文件中查找dfs.datanode.address。我的是0.0.0.0:50010
尝试telnet到该ip端口:
你应该能够连接。如果不能,则需要启动数据节点。我可以通过运行:
你的“hdfs”的位置可能和我的不同。假设您已经开始尝试再次创建文件夹。如果可以的话,再试试你的php。
我注意到的最后一件事是在webhdfs.php中,它有hdfs的默认主机和端口。
确保您的配置符合默认值,除非您要覆盖它们。祝你好运。