복붙노트

[HADOOP] HDFS 중고품 서버가 HDFS가 아닌 현지 FS의 내용을 반환합니다.

HADOOP

HDFS 중고품 서버가 HDFS가 아닌 현지 FS의 내용을 반환합니다.

나는 중고품을 사용하여 HDFS에 접근 중이다.

    $transport = new TSocket(HDFS_HOST, HDFS_PORT);
    $transport->setRecvTimeout(60000);
    $transport->setSendTimeout(60000);
    $protocol =new TBinaryProtocol($transport);
    $client = new ThriftHadoopFileSystemClient($protocol);
    logv("connect hdfs");
    $transport->open();
    logv("testing existent of `%s'", $remote_uri);
    $remote_path = new Pathname(array('pathname' => $remote_uri));
    $remote_file = null;
    try {
            $remote_file = $client->listStatus($remote_path);
    } catch(Exception $e) { }
    if (!$remote_file)
        loge("could not open `%s'", $remote_uri);

$ remote_uri는 절대 경로입니다. $ remote_uri === '/ non / existent'또는 '/ user'등의 경우 listStatus는 항상 실패합니다. 하지만 '/ tmp'로 바꾸면 중고품 서버의 로컬 FS의 '/ tmp'내용을 나열합니다.

따라서 반환 된 컨텐츠는 HDFS 대신 중고 서버에서 로컬 FS입니다! 여기서 뭐가 잘못 됐니?

해결법

    from https://stackoverflow.com/questions/10331992/hdfs-thrift-server-returns-content-of-local-fs-not-hdfs by cc-by-sa and MIT license