Hive 1.1.1 启动错误

 Hive 下载

[jifeng@feng03~]$ mkdir hive
[jifeng@feng03~]$cd hive/
[jifeng@feng03 hive]$ wget http://apache.fayea.com/hive/hive-1.1.1/apache-hive-1.1.1-bin.tar.gz
--2015-09-0416:34:22--  http://apache.fayea.com/hive/hive-1.1.1/apache-hive-1.1.1-bin.tar.gz
Resolvingapache.fayea.com... 119.6.56.18
Connectingto apache.fayea.com|119.6.56.18|:80... connected.
HTTPrequest sent, awaiting response... 200 OK
Length:92834839 (89M) [application/x-gzip]
Savingto: “apache-hive-1.1.1-bin.tar.gz”
100%[=======================================================================================>]92,834,839   426K/s  in 5m 35s 
2015-09-0416:39:57 (271 KB/s) - “apache-hive-1.1.1-bin.tar.gz” saved [92834839/92834839]
[jifeng@feng02 hive]$ tar zxf apache-hive-1.2.1-bin.tar.gz
[jifeng@feng02hive]$ ls
apache-hive-1.1.1-bin  apache-hive-1.1.1-bin.tar.gz

 Hive 配置

1. 环境变量

~/.bash_profile 最后加2行

[jifeng@feng03 hive]$ vi ~/.bash_profile

exportHIVE_HOME=$HOME/hive/apache-hive-1.1.1-bin

exportPATH=$PATH:$HIVE_HOME/bin 

2 修改conf目录下的文件

[jifeng@feng02apache-hive-1.1.1-bin]$ cd conf

[jifeng@feng03 conf]$ ls

hive-default.xml.template hive-env.sh.template hive-exec-log4j.properties.template hive-log4j.properties.template

[jifeng@feng02 conf]$ mv hive-env.sh.template hive-env.sh

[jifeng@feng02conf]$ cp hive-default.xml.template hive-site.xml

3.修改bin目录下的文件

hive-config.sh文件最后加三行

exportJAVA_HOME=$HOME/jdk1.7.0_79

exportHIVE_HOME=$HOME/hive/apache-hive-1.1.1-bin

exportHADOOP_HOME=$HOME/hadoop-2.6.0

[jifeng@feng02 conf]$ cd ..

[jifeng@feng02apache-hive-1.1.1-bin]$ cd bin

[jifeng@feng02 bin]$ vi hive-config.sh

……

#Default to use 256MB

exportHADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-256}

exportJAVA_HOME=$HOME/jdk1.7.0_79

exportHIVE_HOME=$HOME/hive/apache-hive-1.1.1-bin

exportHADOOP_HOME=$HOME/hadoop-2.6.0

"hive-config.sh"73L, 2023C written

 Hive启动

1.启动Hadoop

   只启动HDFS

 [jifeng@feng02 hadoop-2.6.0]$  ./sbin/start-dfs.sh

2.启动Hive



Hive启动错误

[jifeng@feng02bin]$ ./hive

Logginginitialized using configuration injar:file:/home/jifeng/hive/apache-hive-1.1.1-bin/lib/hive-common-1.1.1.jar!/hive-log4j.properties

SLF4J:Class path contains multiple SLF4J bindings.

SLF4J:Found binding in [jar:file:/home/jifeng/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:/home/jifeng/hive/apache-hive-1.1.1-bin/lib/hive-jdbc-1.1.1-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]

[ERROR]Terminal initialization failed; falling back to unsupported

java.lang.IncompatibleClassChangeError: Found classjline.Terminal, but interface was expected

        at jline.TerminalFactory.create(TerminalFactory.java:101)

        at jline.TerminalFactory.get(TerminalFactory.java:158)

        at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)

        at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)

        at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)

        at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

        at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

        atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:606)

        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Exceptionin thread "main" java.lang.IncompatibleClassChangeError: Found classjline.Terminal, but interface was expected

        at jline.console.ConsoleReader.<init>(ConsoleReader.java:230)

        at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)

        at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)

        at org.apache.hadoop.hive.cli.CliDriver.getConsoleReader(CliDriver.java:773)

       at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:715)

        at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:675)

        at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:615)

        atsun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:606)

        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)

        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Hadoopjline-*.jar 有三个

/home/jifeng/hadoop-2.6.0/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib/jline-0.9.94.jar
/home/jifeng/hadoop-2.6.0/share/hadoop/kms/tomcat/webapps/kms/WEB-INF/lib/jline-0.9.94.jar
/home/jifeng/hadoop-2.6.0/share/hadoop/yarn/lib/jline-0.9.94.jar

Hadoopjline-*.jar版本和hivejline-*.jar版本不一致导致,替换Hadoopjline-*.jar,就可解决这个错误

rm-rf /home/jifeng/hadoop-2.6.0/share/hadoop/yarn/lib/jline-0.9.94.jar

cp./jline-2.12.jar /home/jifeng/hadoop-2.6.0/share/hadoop/yarn/lib

只是替换/home/jifeng/hadoop-2.6.0/share/hadoop/yarn/lib这一个就好了



我的centos7的linux打开hive报错了: [root@master ~]# hive SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/local/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] Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </configuration>; expected </property>. at [row,col,system-id]: [24,15,"file:/usr/local/hive/conf/hive-site.xml"] at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2961) at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:2730) at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:2605) at org.apache.hadoop.conf.Configuration.get(Configuration.java:1362) at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java:3904) at org.apache.hadoop.hive.conf.HiveConf.getVar(HiveConf.java:3973) at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:4060) at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:4003) at org.apache.hadoop.hive.common.LogUtils.initHiveLog4jCommon(LogUtils.java:81) at org.apache.hadoop.hive.common.LogUtils.initHiveLog4j(LogUtils.java:65) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:702) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.util.RunJar.run(RunJar.java:244) at org.apache.hadoop.util.RunJar.main(RunJar.java:158) Caused by: com.ctc.wstx.exc.WstxParsingException: Unexpected close tag </configuration>; expected </property>. at [row,col,system-id]: [24,15,"file:/usr/local/hive/conf/hive-site.xml"] at com.ctc.wstx.sr.StreamScanner.constructWfcException(StreamScanner.java:621) at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:491) at com.ctc.wstx.sr.StreamScanner.throwParseError(StreamScanner.java:475) at com.ctc.wstx.sr.BasicStreamReader.reportWrongEndElem(BasicStreamReader.java:3365) at com.ctc.wstx.sr.BasicStreamReader.readEndElem(BasicStreamReader.java:3292) at com.ctc.wstx.sr.BasicStreamReader.nextFromTree(BasicStreamReader.java:2911) at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1123) at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:2796) ... 17 more
05-13
<think>好的,我现在要解决用户在CentOS 7上启动Hive时遇到的SLF4J多重绑定问题和hive-site.xml的解析错误。首先,我需要理解这两个问题的原因。 关于SLF4J多重绑定问题,用户提供的引用中提到多个SLF4J实现的jar包存在冲突。比如引用[2]和[3]都提到了类路径中有多个绑定,比如commons-logging-1.1.1.jar和slf4j-log4j12-1.7.20.jar。这会导致SLF4J在启动时警告,甚至可能引发异常。解决方法通常是排除多余的依赖,保留一个正确的绑定。 然后是hive-site.xml的解析错误,引用[1]显示用户在创建hive-site.xml时复制了模板文件,但可能未正确配置导致XML格式错误,比如未闭合的标签或属性值未用引号包围。例如,用户可能复制了hive-default.xml.template后没有修改某些配置项,导致解析失败。 接下来,我需要参考用户提供的引用,特别是关于配置hive-site.xml的步骤和SLF4J错误的处理。引用[1]中的步骤是正确的,但用户可能在编辑XML文件时出现了格式错误。引用[3]提到排除commons-logging包,这可能与SLF4J冲突有关。 对于SLF4J问题,可能的解决步骤是检查Hive的lib目录下是否有多个slf4j实现的jar,例如slf4j-log4j12和logback-classic,需要保留一个,删除或移走其他的。另外,检查Hadoop和其他依赖库是否有冲突的jar,可能需要排除。 对于hive-site.xml的解析错误,需要验证XML文件的语法是否正确,可以使用xmllint工具检查。常见错误包括标签未正确闭合,或者属性值缺少引号,例如配置项中的属性可能写成<value>...而没有闭合标签,或者特殊字符未转义。 另外,用户可能在配置Hive时没有正确设置环境变量或路径,如引用[5]提到的环境变量配置,需要确认HIVE_HOME是否正确,以及hive-site.xml的位置是否在conf目录下。 可能的解决步骤是: 1. 检查并修正hive-site.xml的语法错误,使用xmllint验证。 2. 排除SLF4J的多余绑定,删除冲突的jar包。 3. 确保Hive配置正确,包括环境变量和文件路径。 4. 重启Hadoop和Hive服务,查看是否问题解决。 在实施过程中,需要具体查看错误日志,如nohup.out(引用[4])中的具体错误信息,以定位问题所在。例如,如果XML解析错误出现在某一行,需要检查该行的标签结构是否正确。 另外,用户可能在使用不同版本的Hive或Hadoop时出现兼容性问题,需要确认版本是否匹配。引用[5]中解压的是Hive 4.0.0,但用户的问题可能出现在其他版本,需要检查版本依赖。 最后,生成相关问题需要考虑用户可能遇到的后续问题,例如其他配置错误、日志分析、依赖冲突的其他表现等。</think>### 逐步解决方案 #### 一、解决SLF4J多重绑定问题 1. **定位冲突的JAR包** 在Hive的`lib`目录(如`/usr/local/hadoop/hive-2.3.5/lib`)中搜索以下文件: ```bash find /usr/local/hadoop/hive-2.3.5/lib -name "*slf4j*" find /usr/local/hadoop/share/hadoop/common/lib -name "*slf4j*" ``` 常见的冲突包包括: - `slf4j-log4j12-*.jar`(SLF4J与Log4j1.x的绑定) - `logback-classic-*.jar`(Logback的SLF4J实现) - `commons-logging-*.jar`(旧版日志组件可能引发间接冲突)[^3] 2. **移除多余的绑定** 保留一个SLF4J实现(推荐`slf4j-log4j12`),删除其他绑定: ```bash # 示例:移除Logback相关JAR rm /usr/local/hadoop/hive-2.3.5/lib/logback-classic-*.jar # 移除Hadoop中可能重复的JAR(需谨慎,避免影响Hadoop) rm /usr/local/hadoop/share/hadoop/common/lib/slf4j-api-*.jar ``` 3. **检查Hive依赖树** 如果使用Maven管理依赖,添加排除语句: ```xml <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-exec</artifactId> <exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> </exclusions> </dependency> ``` #### 二、修复hive-site.xml解析错误 1. **验证XML格式** 使用`xmllint`检查语法: ```bash xmllint --noout /usr/local/hadoop/hive-2.3.5/conf/hive-site.xml ``` 若报错如`unexpected close tag`,需检查标签是否闭合或属性引号缺失。 2. **修正常见错误** - **错误示例**: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> <!-- 缺少闭合标签 --> ``` - **修正后**: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> </property> <!-- 补全闭合标签 --> ``` 3. **转义特殊字符** 若属性值包含`&`或`<`,需转义为`&`或`<`: ```xml <value>jdbc:postgresql://host?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory</value> ``` #### 三、重启服务并验证 1. **重启Hadoop和Hive** ```bash stop-all.sh start-all.sh hive --service metastore & # 启动元数据服务 hive # 启动Hive CLI ``` 2. **检查日志** 查看`nohup.out`或`/tmp/<user>/hive.log`确认问题是否解决[^4]。 ### 相关问题 1. 如何排查Hive启动时的ClassNotFoundError? 2. 如何配置Hive使用MySQL作为元数据存储? 3. Hadoop与Hive版本不兼容会导致哪些问题? --- ### 引用说明 [^1]: 创建`hive-site.xml`时需确保文件格式正确,避免解析错误。 [^2]: 重启Hadoop后若仍报错,需检查JAR包冲突。 [^3]: SLF4J多重绑定问题通常由依赖重复引起,需手动排除。 [^4]: 日志文件`nohup.out`是定位启动问题的关键。 [^5]: 环境变量配置错误可能导致Hive找不到依赖库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值