【向Linux迁移记录】Deepin Linux下Spark本地模式及基于Yarn的分布式集群环境搭建
- 【向Linux迁移记录】Deepin下java、大数据开发环境配置【一】
- 【向Linux迁移记录】Deepin下Python开发环境搭建
- 【向Linux迁移记录】Deepin Linux下快速Hadoop完全分布式集群搭建
- 【向Linux迁移记录】基于Hadoop集群的Hive安装与配置详解
- 分享几个自认为不错的学习Spark的视频资源(百度云)
之前写过一篇伪分布式集群上搭建spark的文章可以参考:Spark本地安装及Linux下伪分布式搭建
另外推荐一个资源汇总项目,
学习记录的一些笔记,以及所看得一些电子书eBooks、视频资源和平常收纳的一些自己认为比较好的博客、网站、工具
https://github.com/josonle/Coding-Now
Spark本地模式及基于Yarn的分布式集群环境搭建
不要额外安装scala,spark自带了scala环境
- 上传源码包并解压到用户目录下
tar -zxvf spark-2.4.0-bin-hadoop2.6.tar.gz -C ~
- 编辑用户配置文件
vi ~/.bash_profile
,并追加下列内容
# Spark环境变量配置
export SPARK_HOME=/home/hadoop/spark-2.4.0-bin-hadoop2.6
export PATH=$SPARK_HOME/bin:$SPARK_HOME/sbin:$PATH
如上配置后,source .bash_profile
后,命令行输入spark-shell可进入spark的命令行模式
- 编辑spark的conf目录下的spark-env.sh,默认只有模版,复制生成一个
spark-conf所在目录:/home/hadoop/spark-2.4.0-bin-hadoop2.6/conf/
$ cp spark-env.sh.template spark-env.sh
$ vi spark-env.sh
# 追加如下内容,去掉中文
# 指定java、hadoop及hadoop-conf所在目录
export JAVA_HOME=/opt/jdk1.8.0_201
export HADOOP_HOME=/home/hadoop/hadoop-2.6.0-cdh5.12.1
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.6.0-cdh5.12.1/etc/hadoop
# 指定spark的Master节点的ip,我这里是映射master为192.168.17.10
export SPARK_MASTER_HOST=master
# 指定spark集群worker节点的内存、实例、核,依情况而定吧
export SPARK_WORKER_MEMORY=1024m
export SPARK_WORKER_CORES=2
export SPARK_WORKER_INSTANCES=1
- 编辑conf目录下的slaves文件,默认只有模版,复制生成一个
$ cp slaves.template slaves
$ vi slaves
# 追加如下内容,我这里slave1、2是另外两台虚拟机ip的映射
# A Spark Worker will be started on each of the machines listed below.
slave1
slave2
- 将配置好的整个目录
/home/hadoop/spark-2.4.0-bin-hadoop2.6/
发送给另外两台虚拟机
scp -r ~/spark-2.4.0-bin-hadoop2.6 slave1:/home/hadoop/
scp -r ~/spark-2.4.0-bin-hadoop2.6 slave2:/home/hadoop/
- 启动spark
首先,spark下sbin目录中启动和结束的命令是start-all.sh,stop-all.sh,和hadoop启动和结束命令重名了,用mv命令修改为start-spark-all.sh,stop-spark-all.sh
如图在Master节点输入所示命令,启动hdfs、yarn、spark
start-dfs.sh
start-yarn.sh
start-spark-all.sh
Master节点上启动的进程
slave节点上启动的进程
- 测试一下
跑一下spark自带的计算pi的程序
cd $SPARK_HOME
./bin/run-example SparkPi 100
# 有输出Pi is roughly 3.1414175141417515的话就OK了
job运行过程中可以在浏览器通过http://master:4040查看,但任务结束后就看不了了。但考虑后续运行细节,就需要为集群配置Spark History Server了
为集群配置Spark History Server
- 修改spark-defaults.conf配置文件
$ cp spark-defaults.conf.template spark-defaults.conf
$ vi spark-defaults.conf
# 追加如下
spark.eventLog.enabled true
spark.eventLog.dir hdfs://master:9000/eventLogs
spark.eventLog.compress true
-
属性解释
- spark.eventLog.enabled:是否记录Spark事件,用于应用程序在完成后使用web界面查看
- spark.eventLog.dir:设置spark.eventLog.enabled为true后,该属性为记录spark时间的根目录。在此根目录中,Spark为每个应用程序创建分目录,并将应用程序的时间记录到此目录中。用户可以将此属性设置为HDFS目录,以便History Server读取
- spark.eventLog.compress:否压缩记录Spark事件,前提spark.eventLog.enabled为true,默认使用的是snappy
-
修改spark-env.sh配置文件
# 追加
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://master:9000/eventLogs"
-
解释
- spark.history.ui.port:WebUI的端口号。默认为18080,也可以自行设置。
- spark.history.retainedApplications:设置缓存Cache中保存的应用程序历史记录的个数,默认50,如果超过这个值,旧的将被删除。
注:缓存文件数不表示实际显示的文件总数。只是表示不在缓存中的文件可能需要从硬盘读取,速度稍有差别。
- spark.history.fs.logDirectory:存放历史记录文件的目录。可以是Hadoop API支持的任意文件系统
- 我看文档上这个目录和上面哪个目录可以是同一个
-
在hdfs上新建上述用来存储spark历史记录的文件夹
分别是hdfs://master:9000/eventLogs
start-dfs.sh
hdfs dfs -mkdir /eventLogs
- 重启集群
start-all.sh
start-spark-all.sh
start-history-server.sh //就是这个进程在记录历史任务
再次查看进程,出现了HistoryServer进程
[[email protected] conf]$ jps
3696 SecondaryNameNode
4162 Master
3515 NameNode
4283 Jps
4237 HistoryServer
浏览器下http://master:18080可查看
参考:
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lzw2016/article/details/86718403