복붙노트

[HADOOP] 오류 : 데이터 노드를 찾지 못했습니다 클러스터 상태를 확인하는 것이 좋습니다

HADOOP

오류 : 데이터 노드를 찾지 못했습니다 클러스터 상태를 확인하는 것이 좋습니다

내가 생성 / PHP를 통해 HDFS에 파일을 쓰기 위해 다음과 같은 코드를 작성했습니다. 참조를 위해 다음과 같은 API를 사용 https://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. ==============================

    1.당신의 HDFS의 데이터 노드에 연결할 수와 PHP와는 아무 상관이없는 것 같다.

    당신의 HDFS의 데이터 노드에 연결할 수와 PHP와는 아무 상관이없는 것 같다.

    과 같이, PHP없이 폴더를 만들려면 콘솔 시도에서 :

    hdfs dfs -mkdir hdfs:///demofolder
    

    나는 데이터 노드가 다운 있기 때문에이 실패 할 것 같은데요.

    dfs.datanode.data.dir가 가리키는 위치를 확인하고 위치가 있는지 확인하기 위해 HDFS-site.xml 파일을 확인하십시오. 그런 다음 동일한 파일에 dfs.datanode.address을 찾습니다. 광산 0.0.0.0:50010했다

    해당 IP 포트로 텔넷을 시도 :

    telnet 0.0.0.0 50010
    

    당신이 연결할 수 있어야합니다. 당신은 당신은 당신의 데이터 노드를 시작해야 할 수 없습니다. 나는 실행하여이 작업을 수행 할 수 있었다 :

    /usr/hdp/2.1.2/hadoop-hdfs/bin/hdfs datanode
    

    당신의 "HDFS"의 위치는 나의 다를 수 있습니다. 다시 폴더를 만들려고 시동이 있다고 가정. 그 작동하는 경우 다음 다시 PHP를 사용해보십시오.

    내가 눈치 마지막 한가지는 HDFS를위한 호스트 및 포트에 대한 기본값이있는 WebHDFS.php했다.

    public function __construct($host='localhost', $port='50070') {
        $this->_host = $host;
        $this->_port = $port;
    }
    

    당신이 그들을 무시하려고하지 않는 한 구성이 기본값으로 정렬해야합니다. 행운을 빕니다.

  2. from https://stackoverflow.com/questions/35854600/errorfailed-to-find-datanode-suggest-to-check-cluster-health by cc-by-sa and MIT license