安装spark客户端
1、将spark-1.5.1-bin-hadoop2.4.tgz使用WinSCP上传到/usr/local目录下。
2、解压缩spark包:tar -zxvf spark-1.5.1-bin-hadoop2.4.tgz。
3、重命名spark目录:mv spark-1.5.1-bin-hadoop2.4 spark
4、修改spark环境变量
vi ~/.bashrc
export SPARK_HOME=/usr/local/spark
export PATH=$SPARK_HOME/bin
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
source ~/.bashrc
修改spark-env.sh文件
1、cd /usr/local/spark/conf
2、cp spark-env.sh.template spark-env.sh
3、vi spark-env.sh
export JAVA_HOME=/usr/java/latest
export SCALA_HOME=/usr/local/scala
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
要把hive-site.xml拷贝到spark/conf 否则spark读不到hive表
设置HistoryServer:
spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://192.168.0.103:9000/spark-events
spark.eventLog.compress true
spark-env.sh
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=50 -Dspark.history.fs.logDirectory=hdfs://192.168.0.103:9000/spark-events"
务必预先创建好hdfs://192.168.0.103:9000/spark-events目录
而且要注意,spark.eventLog.dir与spark.history.fs.logDirectory指向的必须是同一个目录
因为spark.eventLog.dir会指定作业事件记录在哪里,spark.history.fs.logDirectory会指定从哪个目录中去读取作业数据
启动HistoryServer: ./sbin/start-history-server.sh
访问地址: 192.168.0.103:18080
standalone模式下使用动态资源分配
启动shuffle-service,他默认的端口号7337
./sbin/.start-shuffle-service.sh
提交的时候加入以下3个参数
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.shuffle.service.port=7337 \
1、启动external shuffle service
2、启动spark-shell,启用动态资源分配
3、过60s,发现打印日志,说executor被removed,executor进程也没了
4、然后动手写一个wordcount程序,最后提交job的时候,会动态申请一个新的executor,出来一个新的executor进程
5、然后整个作业执行完毕,证明external shuffle service+动态资源分配,流程可以走通
6、再等60s,executor又被释放掉