2014-12-22 6 views
3

Привет всем У меня есть настройка нескольких узлов кластера (i.e 5 узлов) в моей сети, которая работает нормально. теперь я хотел вставить и извлечь данные из кластера, используя куст, таким образом, у меня есть установочный улей последней версии apache-hive-0.14.0-bin.tar.gz (т.е. 0.14.0 от here) на моем основном узле как данный в this артикул.Как запустить hiveserver2 как услугу

также я написал класс клиента java, который сделает соединение jdbc с улей и вставляет данные в HDFS с помощью улья.

HiveJdbcClient.Java

public class HiveJdbcClient { 

private static final String DRIVER_NAME = "org.apache.hive.jdbc.HiveDriver"; 
    private static final String HIVE_URL = "jdbc:hive2://x.x.x.x:10000/default"; 
    private static final String HIVE_UNAME = ""; 
    private static final String HIVE_PWD = ""; 
    private static Connection con; 

    private HiveJdbcClient() {} 

    public static Connection getConnection() { 
     try { 
      if (con == null) { 
       synchronized (HiveJdbcClient.class) { 
        if (con == null) { 
         Class.forName(DRIVER_NAME); 
         con = DriverManager.getConnection(HIVE_URL, 
           HIVE_UNAME, HIVE_PWD); 
         System.out.println("Successfuly Connected to database...!"); 
        } 
       }// End of synchronized block. 
      }// End of if block. 
     } catch (SQLException e) { 
      System.out.println("Can Not able to connect to database pls check your settings \n" + e); 
     } catch (ClassNotFoundException e) { 
      System.out.println("Can Not able to connect to database pls check your settings \n" + e); 
     }// End of try-catch block. 
     return con; 
    }// End of getConnection() Method. 

    public static ResultSet executeQuery(String sql) { 
     ResultSet set = null; 
     try { 
      if (sql != null) { 
       set = getConnection().createStatement().executeQuery(sql); 
      } 
     } catch (SQLException e) { 
      System.out.println("Error while executing query " + e); 
     }// End of try-catch block. 
     return set; 
    }// End of executeQuery() Method. 

    public static void main(String[] args) throws ParseException, SQLException { 
     ResultSet res = executeQuery("SELECT * FROM mytable"); 
     while (res.next()) { 
      System.out.println(String.valueOf(res.getString(1)) + '\t' 
        + String.valueOf(res.getFloat(2)) + '\t' 
        + String.valueOf(res.getString(3))); 
     } 
    } 
}//End of HiveJdbcClient Class. 

мое приложение может подключиться к серверу, когда я выполнить следующую команду в терминале

$HIVE_HOME/bin/hiveserver2 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/opt/hadoop-2.6.0/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/opt/apache-hive-0.14.0-bin/lib/hive-jdbc-0.14.0-standalone.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] 
OK 

, но когда я закрываю этот терминал, то мое заявление дает следующую погрешность:

ОШИБКА

java.sql.SQLException: Could not open client transport with JDBC Uri: jdbc:hive2://X.X.X.X:10000/default: java.net.ConnectException: Connection refused 

это означает, что я должен работать hiveserver2 как сервис на моем главном узле.

Может ли кто-нибудь помочь мне запустить этот hiveserver2 в качестве сервиса. или любую ссылку, которая поможет мне запустить hiveserver2 в качестве службы.

ответ

8

Вы пробовали --service вариант?

$HIVE_HOME/bin/hive --service hiveserver2 & 
+0

Спасибо за ответ, это работает для меня ... –

1

Попробуйте

nohup hive --service hiveserver2 & 
5

Для версий 1.2 и выше, hive является устаревшим и командными hiveserver2 следует использовать непосредственно.

Так правильный путь, чтобы начать hiveserver2 в фоновом режиме теперь:

nohup hiveserver2 & 

Или с выходом в лог-файл:

nohup hiveserver2 > hive.log & 

Источники: https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-BuildingHivefromSource - Он говорит, что «применение улей» является осуждается.

Смежные вопросы