声明版本号:
hadoop: apache 2.2.0
spark: 0.9.1
shark: 0.9.1
hive: 0.12.0
shark官网:http://shark.cs.berkeley.edu/
shark on cluster 文档:https://github.com/amplab/shark/wiki/Running-Shark-on-a-Cluster
按照文档进行配置,最后启动shark,出现以下问题:
在 $SHARK_HOME/run 脚本中加入下面的代码:
这是protobuf版本冲突造成的,首先查了一下 shark 目录下的 protobuf 的jar 包:
find . -name "proto*.jar"
发现只有: ./lib_managed/bundles/com.google.protobuf/protobuf-java/protobuf-java-2.5.0.jar
我使用的 shark-0.9.1 版本的,之前使用过 0.9.0 版本,里面有 protobuf-java-2.4.1-shaded.jar
查了半天,终于找到问题的解决办法:
找到 ./lib_managed/jars/edu.berkeley.cs.shark/hive-exec/hive-exec-0.11.0-shark-0.9.1.jar这个jar 包
然后将这个jar包解压: jar tf hive-exec-0.11.0-shark-0.9.1.jar
将 com/google/protobuf 目录的class文件全部干掉,重新打包即可。
ok,继续运行 bin/shark-withinfo
又遇到问题:
在 yarn-site.xml 文件中设置 yarn.application.classpath 的默认值试一试
这个问题 ok 了
但是,又有下面的问题了:
或许 还会遇到下面的问题:
http://hao3721.iteye.com/blog/1522392
每个slaver节点都需要安装配置hive、spark、shark , 否则会出问题。
简单测试:
>CREATE TABLE src(key INT, value STRING);
>LOAD DATA LOCAL INPATH'${env:HIVE_HOME}/examples/files/kv1.txt' INTO TABLE src;
>SELECT COUNT(1) FROM src;
>CREATE TABLE src_cached AS SELECT * FROM SRC;
>SELECT COUNT(1) FROM src_cached;
shark 用户手册: https://github.com/amplab/shark/wiki/Shark-User-Guide
在shark启动的时候,你会发现他向yarn提交的application的设置跟你用手动提交spark任务的参数是类似的,比如说 --worker-memory ;这个很重要,因为我们想控制spark on yarn 所占用的资源数,但是我们如何设置这些参数呢?
经过一番查找,追踪代码,后来找到解决办法:http://spark.apache.org/docs/latest/configuration.html#environment-variables
将这些配置配到 shark-env.sh 中就可以了