복붙노트

[HADOOP] PHP는 hiveserver이 문제

HADOOP

PHP는 hiveserver이 문제

나는 PHP 클라이언트에서 hiveserver2에 연결하려고합니다. 그러나, 나는 빈 페이지 (나는 하이브에있는 테이블의 목록을 볼 생각 해요) 받고 있어요. 나는에서 코드를 적응  https://github.com/garamon/php-thrift-hive-client. 처음에 나는이 오류가 발생했다     TSocket는 : 호스트로부터 4 바이트를 읽는 시간이 초과되었습니다. 여기 https://stackoverflow.com/a/19199938/4379550 제안 패치를 실행 한 후. 이 오류는 사라하지만 난 아무것도 점점하지거야. 내 코드는 다음과 같습니다

<?php
$GLOBALS['THRIFT_ROOT'] = dirname(__FILE__) . '/lib';
require_once $GLOBALS['THRIFT_ROOT'] .   '/packages/hive_service/ThriftHive.php';
require_once $GLOBALS['THRIFT_ROOT'] . '/transport/TSocket.php';
require_once $GLOBALS['THRIFT_ROOT'] . '/protocol/TBinaryProtocol.php';

require_once dirname(__FILE__) . '/ThriftHiveClientEx.php';

$transport = new TSocket('hadoop-gate.iis.u-tokyo.ac.jp', 10000);
$transport->setSendTimeout(600 * 100);
$transport->setRecvTimeout(600 * 100);
$client = new ThriftHiveClientEx(new TBinaryProtocol($transport));
$client->open();

//show tables
$client->execute('SHOW TABLES');
print_r($client);
$tables = $client->fetchAll();
print_r($tables);
foreach ($tables as $name){
  echo( " found: {$name}\n" );
}
?>

클라우 데라 매니저에서 검색 서버의 오류 메시지는 다음과 같습니다 :

6:49:48.859 PM  ERROR   org.apache.thrift.server.TThreadPoolServer  
Error occurred during processing of message.
java.lang.RuntimeException: org.apache.thrift.transport.TTransportException:      Invalid status -128
at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:227)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.thrift.transport.TTransportException: Invalid status -128
at org.apache.thrift.transport.TSaslTransport.sendAndThrowMessage(TSaslTransport.java:230)
at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:184)
at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125)
at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:262)
at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41)
at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216)
... 4 more

난 어떤 도움을 주셔서 감사합니다. 사전에 많은 감사.

해결법

  1. ==============================

    1.같은 문제에 직면 사람들을 위해, 나는 hive.server2.authentication를 설정하여 그것을 해결 NOSASL에 대한 속성은 이전에 여기에 대답했다. 나는로 이동하여이 속성을 변경했기 때문에 내가 이전에 끝낼 수없는 이유는 서버에 파일을 내가 클라우 데라 배포판을 사용하고 있기 때문에 즉, 내 생각 작동하지 않았다. 자신의 문서에 설명 된대로 어떤 일을하는 클라우 데라 매니저에서이 속성을 설정했다.

    같은 문제에 직면 사람들을 위해, 나는 hive.server2.authentication를 설정하여 그것을 해결 NOSASL에 대한 속성은 이전에 여기에 대답했다. 나는로 이동하여이 속성을 변경했기 때문에 내가 이전에 끝낼 수없는 이유는 서버에 파일을 내가 클라우 데라 배포판을 사용하고 있기 때문에 즉, 내 생각 작동하지 않았다. 자신의 문서에 설명 된대로 어떤 일을하는 클라우 데라 매니저에서이 속성을 설정했다.

  2. from https://stackoverflow.com/questions/30905334/php-hiveserver-2-issues by cc-by-sa and MIT license