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

来源:互联网 发布:mac恢复单一分区 编辑:程序博客网 时间:2024/06/06 05:27

目前线上用的是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

0 0
原创粉丝点击