Spark安装
概述
Apache Spark™ is a unified analytics engine for large-scale data processing.
Spark是一个使用大数据处理的统一分析引擎(计算)
官网地址:http://spark.apache.org/
Lightning-fast unified analytics engine (Spark快如闪电统一分析引擎)
快如闪电
- Spark是基于内存式计算引擎。不同于Hadoop框架中MapReduce,在计算时将任务分为粗粒度MapTask和ReduceTask,Shuffle通常比较耗时,因为MapTask映射结果需要溢写到磁盘,ReduceTask需要通过网络拉取负责计算的分区数据。
- Spark计算任务可以划分细粒度Stage(阶段),每一个Stage都支持分布式并行计算。不同于MapReduce
- Spark在计算时,每一个阶段的计算中间结果都支持Cache(缓存),利用缓存进行结果复用和故障恢复
- Spark在底层进行大量优化,包括查询优化、物理引擎、内存管理等
统一
Spark框架提供了大数据处理的所有主流方案
- 批处理 Batch Processing(Spark RDD 弹性分布式数据集),代替MR
- 流处理 Stream Processing(Spark Streaming 和 Spark Structured Streaming),代替Storm
- 交互式查询支持, 类似于Hive(Spark SQL),代替Hive
- 机器学习 Machine Learning(Spark MLLib)
- 图形计算 NOSQL(Spark GraphX)
- 其它Spark第三方生态库
分析引擎
Spark作用类似于MapReduce,是一个分布式并行计算引擎
大数据需要解决三个问题:数据采集、存储、计算(Spark解决)
特点
- 高性能:Spark提供了一个先进的计算模型:DAG(Dirtected Acycle Graph有向无环图,计算任务),可以将计算任务划分多个Stage,每一个Stage都支持分布式并行计算。Spark底层进行了大量优化(内存管理、网络传输、数据序列化、物理引擎、任务管理等)
- 易用性:Spark应用可以基于多种编程语言开发(Scala【推荐】、Java、Python、R、SQL),提供了大概80个操作方法(高阶函数)可以极大简化大数据应用的开发
- 通用性:Spark拥有一个强大生态库,可以解决大数据的批、流、SQL、Graph、ML、AI、BI等一系列问题
- 运行环境:Spark应用可以运行在多种集群中环境中,如Yarn、Mesos、K8S、Cloud,或者运行Spark自带资源管理调度系统(Standalone),local模式,常用于测试开发
集群环境搭建
Standalone模式
Standalone模式(又称为独立模式集群),本质是一种类似于Hadoop Yarn资源管理和调度系统,主要对分布式集群中计算资源(内存、CPU、网络、IO等一系列硬件)。Spark应用需要运行在Standalone集群中,进行并行计算
准备工作
CentOS7【内存:4G以上】
Hadoop版本2.9.2
Spark版本2.4.4
- 安装CentOS7
- 关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
- 修改主机名
[root@localhost ~]# vi /etc/hostname
SparkOnStandalone
- 配置网络
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
IPADDR=192.168.126.100 # 要根据VMNet8调整IP地址
NETMASK=255.255.255.0
ONBOOT=yes
[root@localhost ~]# systemctl restart network
- 配置主机名IP映射
[root@localhost ~]# vi /etc/hosts
192.168.126.100 SparkOnStandalone
[root@localhost ~]# ping SparkOnStandalone
PING SparkOnStandalone (192.168.126.100) 56(84) bytes of data.
64 bytes from SparkOnStandalone (192.168.126.100): icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from SparkOnStandalone (192.168.126.100): icmp_seq=2 ttl=64 time=0.039 ms
- 关闭虚拟机配置双网卡
- 安装文本编辑器vim
[root@SparkOnStandalone ~]# yum install -y vim
安装Hadoop HDFS
- 安装JDK
[root@SparkOnStandalone ~]# rpm -ivh jdk-8u171-linux-x64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:jdk1.8-2000:1.8.0_171-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
- 配置SSH免密登陆
[root@SparkOnStandalone ~]# ssh-keygen -t rsa
// 按四次回车 产生公私玥文件
[root@SparkOnStandalone ~]# ll -a .ssh/
总用量 8
drwx------. 2 root root 38 11月 22 11:22 .
dr-xr-x---. 3 root root 247 11月 22 11:22 ..
-rw-------. 1 root root 1679 11月 22 11:22 id_rsa
-rw-r--r--. 1 root root 404 11月 22 11:22 id_rsa.pub
// 将当前主机的公钥文件中的内容拷贝指定主机的授权列表中
[root@SparkOnStandalone ~]# ssh-copy-id SparkOnStandalone
[root@SparkOnStandalone ~]# ll -a .ssh/
总用量 16
drwx------. 2 root root 80 11月 22 11:23 .
dr-xr-x---. 3 root root 247 11月 22 11:22 ..
-rw-------. 1 root root 404 11月 22 11:23 authorized_keys
-rw-------. 1 root root 1679 11月 22 11:22 id_rsa
-rw-r--r--. 1 root root 404 11月 22 11:22 id_rsa.pub
-rw-r--r--. 1 root root 195 11月 22 11:23 known_hosts
// 测试SSH免密登陆,如无需密码登陆 SSH免密登陆配置成功 如需要密码 重试配置
[root@SparkOnStandalone ~]# ssh SparkOnStandalone
Last login: Fri Nov 22 11:17:58 2019 from 192.168.126.1
- 安装Hadoop
[root@SparkOnStandalone ~]# tar -zxf hadoop-2.9.2.tar.gz -C /usr
[root@SparkOnStandalone usr]# cd /usr/hadoop-2.9.2/
[root@SparkOnStandalone hadoop-2.9.2]# ll
总用量 128
drwxr-xr-x. 2 501 dialout 194 11月 13 2018 bin
drwxr-xr-x. 3 501 dialout 20 11月 13 2018 etc
drwxr-xr-x. 2 501 dialout 106 11月 13 2018 include
drwxr-xr-x. 3 501 dialout 20 11月 13 2018 lib
drwxr-xr-x. 2 501 dialout 239 11月 13 2018 libexec
-rw-r--r--. 1 501 dialout 106210 11月 13 2018 LICENSE.txt
-rw-r--r--. 1 501 dialout 15917 11月 13 2018 NOTICE.txt
-rw-r--r--. 1 501 dialout 1366 11月 13 2018 README.txt
drwxr-xr-x. 3 501 dialout 4096 11月 13 2018 sbin
drwxr-xr-x. 4 501 dialout 31 11月 13 2018 share
- 对HDFS进行配置
- core-site.xml