hiveserver2在启动时挂起在10000端口听不到任何声音

fcg9iug3  于 2021-06-24  发布在  Hive
关注(0)|答案(1)|浏览(414)

我一直在尝试设置apache套件的本地单个大数据节点。我成功地建立了hadoop,hdfs和yarn运行良好。然而,在过去的几个小时里,我一直在努力把Hive弄起来,并没有任何运气。当我说“hive—services hiveserver2”时,在打印出几行之后,它挂起了。我检查了10000端口是否有人监听,但没有。下面是命令“hive--services hiveserver2”的输出

2019-07-27 17:55:54: Starting HiveServer2
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/particle/apache-hive-2.3.5-bin/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/particle/hadoop-2.9.2/share/hadoop/common/lib/slf4j-log4j12-1.7.25.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.apache.logging.slf4j.Log4jLoggerFactory]

由于hive-site.xml很大,我无法在这里通过它,但是如果您怀疑有任何属性,请告诉我,我会将它粘贴到这里。我是从tarball而不是maven安装Hive的。
我想所有这些都与这里提到的slf4j绑定冲突有关,但我不知道处理它所需的步骤。我们将非常感激你的帮助。

nzk0hqpo

nzk0hqpo1#

我试过很多次让Hive通过焦油球和maven装置工作。不管怎样,这都没有发生。
这就是我如何让Hive工作的(2019年8月3日)。
首先,我下载了最新的hive.tar.gz文件(从今天起是3.1.1)。下载之后,我确保在~/.bashrc文件中设置了以下内容。请注意,java版本是1.8,hadoop版本是2.9.2。不确定版本是否重要,但这些设置对我很有用。

export JAVA_HOME=/home/particle/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/home/particle/hadoop-2.9.2
export PATH=$HADOOP_HOME/bin:$PATH
export HIVE_HOME=/home/particle/apache-hive-3.1.1-bin
export PATH=$HIVE_HOME/bin:$PATH

之后,我获取了~/.bashrc文件(如下所示)。

source ~/.bashrc

在继续进行之前,我确保dfs和yarn正在运行。如果没有,请从$hadoop\u home/sbin/start-dfs.sh和$hadoop\u home/sbin/start-yarn.sh开始。与jps确认namenode、secondarynamenode、datanode、resourcemanager和nodemanager正在运行。
然后我创建了几个目录并设置了所有权。有些目录可能已经存在,所以不要担心。

hadoop fs -mkdir       /tmp
hadoop fs -mkdir       /user
hadoop fs -mkdir       /user/hive/
hadoop fs -mkdir       /user/hive/warehouse
hadoop fs -chmod g+w   /tmp
hadoop fs -chmod g+w   /user/hive/warehouse

之后,我通过键入以下命令初始化了derbydb。不确定这是否必要,但无论如何都做了。

$HIVE_HOME/bin/schematool -dbType derby -initSchema

之后,我创建了一个名为“hive site.xml”的文件,并将其放在$hive\u home/conf中。确保你做了适当的改变。下面我们将要做的是设置使用mysql作为配置单元的db。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<configuration>
<property>
  <name>hadoop.proxyuser.TypeYourUserNameHereForTheOSOrVirtualOS.groups</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.TypeYourUserNameHereForTheOSOrVirtualOS.hosts</name>
  <value>*</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>TypeYourUserNameHereForTheOSOrVirtulOS_YouWillShortlyCreateThisUserInMySQL</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>TypeYourPassword_YouWillShortlyCreateThisPassWordInMySQL</value>
</property>

<property>
  <name>datanucleus.autoCreateSchema</name>
  <value>true</value>
</property>

<property>
  <name>datanucleus.fixedDatastore</name>
  <value>true</value>
</property>

<property>
 <name>datanucleus.autoCreateTables</name>
 <value>True</value>
 </property>
</configuration>

之后我安装了mysql客户端和服务器。因为我使用的是ubuntu,所以我的命令很简单,如下所示。此步骤将根据您的操作系统而改变。

sudo apt-get install mysql-client mysql-server

之后,我下载了驱动程序,需要使Hive工作。我用了这个链接(https://dev.mysql.com/downloads/connector/j/5.1.html)但这可能因您使用的mysql版本而异。一旦解压/解压它,就会在解压/解压文件夹中看到两个(或更多)的.jar文件。我在$hive\u home/lib中复制了这两个(或全部)文件(.jar文件)。
之后我登录了mysql。由于在安装时没有设置现有密码,因此必须使用以下命令。如果您已经有root/admin登录名和密码,那么您可以跳过前三行。请先确保您已更改到以下目录“$hive\u home/scripts/metastore/upgrade/mysql/”。

sudo mysql -u root

# It will first ask the super password associated with sudo

# Then it will either take you straight to the mysql prompt or it will ask for a password.
USE mysql;
CREATE USER 'YourUserNameThatYouSavedIn_hive-site.xml'@'localhost' IDENTIFIED BY 'YourPasswordThatYouSavedIn_hive-site.xml';
GRANT ALL PRIVILEGES ON *.* TO 'YourUserNameThatYouSavedIn_hive-site.xml'@'localhost';
FLUSH PRIVILEGES;
EXIT;

现在我有了一个mysql帐户,它与hive-site.xml中的设置相匹配。我用上面创建的用户名和密码登录到mysql,并输入以下命令,一次一个。
进入mysql shell后,一次一行地键入下面的行。

DROP DATABASE IF EXISTS hive;
CREATE DATABASE hive;
USE hive;
SOURCE hive-schema-3.1.0.mysql.sql;
EXIT;

然后我在bashshell中键入以下命令。很多警告都来了。

$HIVE_HOME/bin/schematool -dbType mysql --initSchema

最后我去了魔法司令部。

$HIVE_HOME/bin/beeline -u jdbc:hive2://

在发出了很多警告之后,我进入了等待的命令提示符。下面是结果。还有很多警告,但我会暂时接受。过去三天我一直在找这个。

相关问题