您的位置:首页 > 运维架构

spark1.4.0基于yarn的安装心得体会

2015-07-19 17:49 375 查看
目前线上用的是cdh5.3.2中内嵌的spark1.2.0版本,该版本BUG还是蛮多的,尤其是一些spark sql的BUG,简直不能忍。spark1.4.0新出的支持SparkR,其他用R的同时很期待试用该版本看看sparkR好不好用,于是乎打算升级一下spark的版本。

以前都是在cloudera manager中一件安装的spark,感觉好轻松愉快,现在要独立安装一个基于yarn的spark版本,还是有点挑战的。

下面记录了一下安装步骤(基于cdh5.3.2的独立安装spark1.4.0):

编译指定hadoop版本的spark,源码目录下面有一个make-distribution.sh:    

./make-distribution.sh --name cdh5.3.0 --skip-java-test --tgz -Pyarn -Dhadoop.version=2.5.0-cdh5.3.0  -Dscala-2.10.4 -Phive -Phive-thriftserver

编译完成后,在源码目录下会生成一个spark-1.4.0-bin-cdh5.3.0.tgz

随便选择一个集群的节点(注意,其实只需要部署一台机器就行了,不需要所有都部署,这就是spark on yarn的好处啊。。。不然你装standlong模式的spark集群就辛苦了。)

将安装包解压到/opt下面:

cd /opt    

hadoop fs -get /user/hdfs/tmp/spark-1.4.0-bin-cdh5.3.0.tgz

tar zxvf spark-1.4.0-bin-cdh5.3.0.tgz

在conf目录下面创建spark-env.sh和spark-default.conf配置文件:

cp spark-env.sh.template spark-env.sh

cp spark-defaults.conf.template spark-defaults.conf

 

 

 vi spark-env.sh,最下面添加一行:

 export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hive/conf

 

 vi spark-defaults.conf,添加如下内容:

 spark.eventLog.dir=hdfs://n1:8020/user/spark/applicationHistory2

spark.eventLog.enabled=true

spark.yarn.jar=hdfs://n1:8020/user/spark/share/lib/spark-assembly-1.4.0-hadoop2.5.0-cdh5.3.0.jar

spark.scheduler.mode=FAIR

spark.scheduler.allocation.file=/etc/spark/fairscheduler.xml

spark.serializer=org.apache.spark.serializer.KryoSerializer

spark.shuffle.consolidateFiles=true

spark.sql.shuffle.partitions=100

spark.driver.userClassPathFirst=true

spark.streaming.blockInterval=100

spark.cleaner.ttl=90000

spark.yarn.historyServer.address=http://n2:18088

spark.driver.extraLibraryPath=/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/hadoop/lib/native

spark.executor.extraLibraryPath=/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/hadoop/lib/native

 

 自己写了一个wordcount程序,打了个jar包叫sparkdemo.jar

 

 hadoop fs -get /user/spark/share/lib/sparkdemo.jar

 yarn-client模式提交

 ./bin/spark-submit --driver-class-path lib/spark-assembly-1.4.0-hadoop2.5.0-cdh5.3.0.jar --class com.hupu.dace.spark.WordCount     --master yarn-client --proxy-user hdfs --num-executors 3     --driver-memory 4g     --executor-memory 2g     --executor-cores
1     lib/sparkdemo.jar /tmp/xiaojun/input /tmp/xiaojun/output

yarn-cluster模式提交

./bin/spark-submit --driver-class-path lib/spark-assembly-1.4.0-hadoop2.5.0-cdh5.3.0.jar --class com.hupu.dace.spark.WordCount     --master yarn-cluster --proxy-user hdfs --num-executors 3     --driver-memory 4g     --executor-memory 2g     --executor-cores
1     lib/sparkdemo.jar /tmp/xiaojun/input /tmp/xiaojun/output

这里还有一个问题没解决,就是yarn的historyServer 18088端口还是没法访问,但是可以访问spark自己的historyServer,是18080端口.

如何启动historyServer?首先在HDFS上创建一个目录:/user/spark/applicationHistory2,授权所有用户和组都能访问,即777.

然后再spark安装目录下面有一个sbin目录,下面有一个start-history-server.sh,启动命令如下:

./start-history-server.sh hdfs://n1:8020/user/spark/applicationHistory2

停止则为./stop-history-server.sh

sparkR启动脚本,支持hive:

bin/sparkR --jars lib/spark-assembly-1.4.0-hadoop2.5.0-cdh5.3.0.jar --conf spark.sql.hive.metastore.jars=lib/spark-assembly-1.4.0-hadoop2.5.0-cdh5.3.0.jar --master yarn-client
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark hadoop