自己安装的可用环境:
linux: CentOS-7
hadoop : hadoop-2.8.1
spark: spark-1.6.3-bin-hadoop2.4-without-hive
hive : apache-hive-2.1.1-bin
scala: scala-2.12.3
sql: MariaDB
安装问题:
原本是想安装新版本的spark 2.0以后版本,发现各种问题解决不了,hive对spark也有要求。
下面记录下安装的一些东西:
1 . hive打开调试模式:
hive -hiveconf hive.root.logger=DEBUG,console
2 . spark升级到spark2以后,原有lib目录下的大JAR包被分散成多个小JAR包,原来的spark-assembly-hadoop*.jar已经不存在,所以hive没有办法找到这个JAR包。JAR包在spark/jar/文件目录下面。
3 . Exception in thread “main” java.lang.NoClassDefFoundError: scala/collection/Iterable
这里原因是找不到spark 的jar文件,按照官网上的解决方法:
https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark:+Getting+Started
最后修改后发现没什么用,也不知道是不是哪里弄的不对.最后网上找的方案 ,直接写查找路径,修改 bin/hive里
CLASSPATH=${CLASSPATH}:${HIVE_LIB}/*.jar
for f in ${HIVE_LIB}/*.jar; do
CLASSPATH=${CLASSPATH}:$f;
done
在下面添加代码:
for f in ${SPARK_HOME}/jars/*.jar; do
CLASSPATH=${CLASSPATH}:$f;
done
再执行hive,出现错误问题:
FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. java.lang.ExceptionInInitializerError
at org.apache.hadoop.hive.ql.plan.TableScanDesc.<init>(TableScanDesc.java:132)
at org.apache.hadoop.hive.ql.plan.TableScanDesc.<init>(TableScanDesc.java:125)
at org.apache.hadoop.hive.ql.plan.TableScanDesc.<init>(TableScanDesc.java:116)
at org.apache.hadoop.hive.ql.plan.TableScanDescConstructorAccess.newInstance(Unknown Source)
at org.apache.hive.com.esotericsoftware.kryo.Kryo$DefaultInstantiatorStrategy$1.newInstance(Kryo.java:1237)
at org.apache.hive.com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1090)
at org.apache.hive.com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:570)
at org.apache.hive.com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:546)
at org.apache.hive.com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:708)
网上说hadoop 的版本不对需要,hadoop2.6的版本,因版本太老,不想试,跳过安装spark2.0以后版本,直接使用1.6的版本。