ubantu18.04系统下安装配置hive(derby)及问题解决

hive安装版本: apache-hive-1.2.2
环境:ubantu18.04, hadoop本地模式,已安装——hadoop-2.6.0, spark-2.2.0

1.下载并解压hive源程序
hive-1.2.2下载地址
http://mirrors.hust.edu.cn/apache/hive/hive-1.2.2/

$ sudo tar -zxvf ./apache-hive-1.2.2-bin.tar.gz -C /usr/local   # 解压到/usr/local中
$ cd /usr/local/
$ sudo mv apache-hive-1.2.1-bin hive       # 将文件夹名改为hive
$ sudo chown -R laowang:laowang hive           # 修改文件权限

2.配置环境变量

$ sudo gedit ~/.bashrc

在最后添加:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin

保存退出后,终端运行

$ source ~/.bashrc

使配置立即生效

3.问题及解决办法
ls: 无法访问’/usr/local/spark/lib/spark-assembly-*.jar’: 没有那个文件或目录

$ hive
# 启动hive出现如下一个提示:
ls: 无法访问'/usr/local/spark/lib/spark-assembly-*.jar': 没有那个文件或目录

出现这个问题的原因是:
spark升级到spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-*.jar已经不存在,所以hive没法找到这个JAR包。

解决方法:
打开hive的安装目录下的bin目录,找到hive文件

$ cd /usr/local/hive/bin/
$ sudo gedit hive
# 找到下面这行shell脚本
  sparkAssemblyPath=`ls ${SPARK_HOME}/lib/spark-assembly-*.jar`
# 将其修改为:
  sparkAssemblyPath=`ls ${SPARK_HOME}/jars/*.jar`
# 保存并退出

再次启动hive,出现下面的错误:
[ERROR] Terminal initialization failed; falling back to unsupported

$ hive

Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-1.2.2.jar!/hive-log4j.properties
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.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.setupConsoleReader(CliDriver.java:787)
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:721)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
    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:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

Exception in thread "main" java.lang.IncompatibleClassChangeError: Found class jline.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.setupConsoleReader(CliDriver.java:787)
    at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:721)
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
    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:221)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

错误原因:
在/hive/conf/lib目录中存在jline-x-x.jar,而/hadoop/share/hadoop/yarn/lib目录中存在老版本的jline-x-x.jar。

解决办法:进入到hadoop安装目录下的share/hadoop/yarn/lib下 删除 jline的jar文件。再启动hive即可。

$ cd /usr/local/hadoop/share/hadoop/yarn/lib/
$ ls
activation-1.1.jar             guice-servlet-3.0.jar          jettison-1.1.jar
aopalliance-1.0.jar            jackson-core-asl-1.9.13.jar    jetty-6.1.26.jar
asm-3.2.jar                    jackson-jaxrs-1.9.13.jar       jetty-util-6.1.26.jar
commons-cli-1.2.jar            jackson-mapper-asl-1.9.13.jar  jline-0.9.94.jar
commons-codec-1.4.jar          jackson-xc-1.9.13.jar          jsr305-1.3.9.jar
commons-collections-3.2.1.jar  javax.inject-1.jar             leveldbjni-all-1.8.jar
commons-compress-1.4.1.jar     jaxb-api-2.2.2.jar             log4j-1.2.17.jar
commons-httpclient-3.1.jar     jaxb-impl-2.2.3-1.jar          netty-3.6.2.Final.jar
commons-io-2.4.jar             jersey-client-1.9.jar          protobuf-java-2.5.0.jar
commons-lang-2.6.jar           jersey-core-1.9.jar            servlet-api-2.5.jar
commons-logging-1.1.3.jar      jersey-guice-1.9.jar           stax-api-1.0-2.jar
guava-11.0.2.jar               jersey-json-1.9.jar            xz-1.0.jar
guice-3.0.jar                  jersey-server-1.9.jar          zookeeper-3.4.6.jar

$ sudo rm jline-0.9.94.jar     # 删除 jline-0.9.94.jar

启动hive成功!

为hive创建一个工作目录,存放hive的元数据,以后启动hive前,可先切换到该工作目录下,再启动hive。

$ mkdir hivework
$ cd hivework/
$ hive
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值