Spark学习(一)——入门与集群搭建
2019-08-04 本文已影响5人
大数据阶梯之路
现在来学一学spark这个内存计算引擎,主要应用于大规模数据的计算。
一、简介
和MapReduce都是计算引擎,但两者还是有很大区别的,MapReduce计算的中间数据都是存储在硬盘上的,而Spark计算的中间数据都是存储在内存里的,除非有说明说让Spark把中间数据存储到硬盘上。这样可想而知基于内存,Spark的运行效率就比MapReduce快了许多了。
下图举例:把这么一座山当成是大规模的数据,开发商要把山上的树用去做桌子就相当于做计算,于是分配工人p们去山上砍树,多个不同的工人们在砍树就相当于是在并行计算,这大概就是云计算的思想:计算向数据移动,即移动的计算而不是数据, 最终目的就是提高计算效率。
图片.png二、Spark架构
搭建过hadoop集群架构,也就熟悉了套路,spark集群架构也是采用主从架构(master主节点和worker从节点),master节点管理着各个worker节点,从而也就掌握着整个集群的资源。
三、Spark下载安装
直接去官网http://spark.apache.org/ 下载,不过下载时注意,spark版本要对应还hadoop的版本,我的hadoop版本安装的是2.6.4所以要勾选好对应的spark包,目前我选择的是spark2.4.3搭配hadoop2.6.4。
四、Spark集群搭建
- 1、软件安装
需要用到hadoop,java,scala,spark,直接把下载好的文件从windows上传到linux服务器上,再使用tar zxvf -C 文件名
命令解压文件,hadoop和java的安装我就不提了,自行百度。接下来是scala的安装配置,同样是下载好上传到linux服务器然后解压,之后输入命令vi /etc/profile
修改这个文件把scala的安装目录给加进去PATH属性中,:wq
命令保存退出,再输入source /etc/profile
命令使环境变量生效,最后输入命令scala -version
查看是否安装scala成功。 - 2、spark环境配置
先cd /usr/local/spark/conf
到此目录下,找到spark-env.sh.templete
文件改个名为spark-env.sh
,再加入以下代码,对应注释在里面。注意:以下路径只是我个人电脑路径,大家自行修改为各自的软件安装路径。
JAVA_HOME=/usr/java/default #java安装路径
SCALA_HOME=/usr/local/scala #scala安装路径
HADOOP_HOME=/usr/local/hadoop #hadoop安装路径
SPARK_MASTER_PORT=7077 #资源申请端口
SPARK_MASTER_WEBUI_PORT=8888 #对外访问web界面端口
SPARK_MASTER_IP=10.14.28.100 #spark集群的master节点的IP地址
SPARK_MASTER_OPTS="-Dspark.worker.timeout=100" #从节点发送心跳给主节点的超时时间,使得主节点才知道从节点的生存状态
SPARK_WORKER_MEMORY=3G #每个worker节点最大能分配给executors的内存大小
SPARK_WORKER_CORES=2 #每个worker节点所占有的CPU核数目
SPARK_WORKER_INSTANCES=1 #每台机器上开启的worker节点的数目
SPARK_LOCAL_DIRS=/var/spark #集群运行本地目录
SPARK_WORKER_DIR="/var/spark/work" #存放任务在计算中产生的中间数据
SPARK_WORKER_OPTS="-Dspark.worker.cleanup.enabled=true -Dspark.worker.cleanup.appDataTtl=259200" #开启自动清空worker工作目录区的功能,后面是数据有效期
- 3、配置
spark/conf
目录下的slaves
文件,这跟我之前搭建hadoop集群时候一样写上管理着的各个slave机器就好,然后cd /usr/local
到目录下,使用命令scp -r spark slave1:/usr/local
把spark安装拷贝到slave1机器的同个路径下,后面同理slave2、slave3机器。附:关于scp拷贝命令的解析 - 4、之后进入sbin目录下把
start-all.sh
和stop-all.sh
脚本名给修改掉,因为hadoop集群也有这2个脚本,怕执行命令时冲突了。 图片.png - 5、最后使用命令
vi /etc/profile
修改PATH环境变量,把spark的bin路径和sbin路径加进去,这样就可以在所有命令下执行这个脚本命令了,注意:修改完后要source /etc/profile
下,使环境变量生效。 - 6、我把集群所有节点都启动起来了,包括之前搭建的hadoop集群的yarn和hdfs,截图如下: 图片.png 图片.png