- Hadoop系列文章
- Spark简介
- Spark搭建
- Scala安装
- Spark安装
- Spark启动
- Spark界面
- Spark简单使用
- Spark Shell
- PySpark Shell
Hadoop系列 (一):在CentOS中搭建hadoop环境(伪分布式)
Hadoop系列 (二):完全分布式搭建(腾讯云服务器+阿里云服务器)
Hadoop系列 (三):HDFS详细介绍
Hadoop系列 (四):Yarn详细介绍
Hadoop系列 (五):MapReduce详细介绍
Spark简介最初Spark作为hadoop的一个计算框架组件而发布,现在慢慢长大,可以独立运行了。意味着我们不搭建Hadoop集群也能 独立的安装运行Spark。
spark框架可以运行在各种操作系统上。
Apache Spark是一个开源集群计算框架。其主要目的是处理实时生成的数据。Spark建立在Hadoop MapReduce的顶部。它被优化为在内存中运行,而Hadoop的MapReduce等替代方法将数据写入计算机硬盘驱动器或从计算机硬盘驱动器写入数据。因此,Spark比其他替代方案更快地处理数据。
Spark作为Hadoop生态中重要的一员,其发展速度堪称恐怖,不过其作为一个完整的技术栈,在技术和环境的双重刺激下,得到如此多的关注也是有依据的。
Spark核心在于内存计算模型代替Hadoop生态的MapReduce离线计算模型,用更加丰富Transformation和Action算子来替代map,reduce两种算子。
Spark搭建spark依赖scala,所以需要先安装scala。
注意:Scala版本要与Spark版本对应。
Scala安装Scala各个版本
这里以Scala2.12.15和Spark3.0.0为例:
解压到/opt/scala目录:
tar zxvf scala-2.12.15.tgz
设置环境变量
# 在.bash_profile末尾增加 #set scala env export SCALA_HOME=/opt/scala export PATH=$PATH:$SCALA_HOME/bin
使.bash_profile生效
[hadoop@master ~]$ source .bash_profile [hadoop@master ~]$ echo $SCALA_HOME /opt/scalaSpark安装
解压Spark到目录/opt/spark
[hadoop@master software]$ sudo tar zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/spark --strip-components 1
设置环境变量
# 在.bash_profile末尾增加 #set spark env export SPARK_HOME=/opt/spark export PATH=$PATH:$SPARK_HOME/bin
使.bash_profile生效
[hadoop@master ~]$ source .bash_profile [hadoop@master ~]$ echo $SPARK_HOME /opt/spark
更改文件夹权限
[hadoop@master opt]$ sudo chown -R hadoop:hadoop spark/ [hadoop@master opt]$ sudo chown -R hadoop:hadoop scala/Spark启动
设置启动模式
# 复制配置文件模板 [hadoop@master conf]$ pwd /opt/spark/conf [hadoop@master conf]$ cp spark-defaults.conf.template spark-defaults.conf [hadoop@master conf]$ cp slaves.template slaves [hadoop@master conf]$ cp spark-env.sh.template spark-env.sh [hadoop@master conf]$ ll -tlr total 52 -rwxr-xr-x 1 hadoop hadoop 4344 Jun 6 2020 spark-env.sh.template -rw-r--r-- 1 hadoop hadoop 1292 Jun 6 2020 spark-defaults.conf.template -rw-r--r-- 1 hadoop hadoop 865 Jun 6 2020 slaves.template -rw-r--r-- 1 hadoop hadoop 9141 Jun 6 2020 metrics.properties.template -rw-r--r-- 1 hadoop hadoop 2023 Jun 6 2020 log4j.properties.template -rw-r--r-- 1 hadoop hadoop 1105 Jun 6 2020 fairscheduler.xml.template -rw-r--r-- 1 hadoop hadoop 1292 Oct 11 16:03 spark-defaults.conf -rw-r--r-- 1 hadoop hadoop 865 Oct 11 16:04 slaves -rwxr-xr-x 1 hadoop hadoop 4344 Oct 11 16:04 spark-env.sh
修改spark-defaults.conf
#用yarn模式 #在尾部添加 spark.master yarn
修改spark-env.sh
#添加java_home #set java_home export JAVA_HOME=/usr/local/java/jdk1.8.0_291
启动执行脚本
查看日志信息
Spark界面 Spark简单使用 Spark Shell在 Spark 目录下运行以下命令可以启动 Spark Shell:
Spark 最主要的抽象概念就是一个叫做 Dataset 的分布式数据集。Dataset 可以从 Hadoop InputFormats(例如 HDFS 文件)创建或者由其他 Dataset 转换而来。
下面利用HDFS文件创建一个Dataset:
scala> val textFile = spark.read.textFile("test.input")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]
从 Dataset 获取值:
scala> textFile.count() // Number of items in this Dataset res0: Long = 4 scala> textFile.first() // First item in this Dataset res1: String = just a test!
将该 Dataset 转换成一个新的 Dataset。我们调用 filter 这个 transformation 返回一个只包含原始文件数据项子集的新 Dataset。
scala> val linesWithSpark = textFile.filter(line => line.contains("test"))
linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string]
// How many lines contain "test"?
scala> linesWithSpark.count()
res2: Long = 1
scala> linesWithSpark.first()
res3: String = just a test!
PySpark Shell
由于我环境默认安装的是python3,如果直接执行pyspark会报错:
[hadoop@master bin]$ pyspark --master spark://master:7077 env: ‘python’: No such file or directory
需要先配置环境变量,编辑.bash_profile,在文件末尾添加:
#set pyspark export PYSPARK_PYTHON=python3
使.bash_profile生效:
[hadoop@master bin]$ source ~/.bash_profile
再次启动pyspark
由于 Python 语言的动态性, 我们不需要强类型的Dataset 。因此 Python 中所有的 Dataset 都是 Dataset[Row], 并且为了和 Pandas 以及 R 中的 data frame 概念保持一致, 我们称其为 Dataframe。
>>> textFile = spark.read.text("test.input")
>>> textFile.count()
4
>>> textFile.first()
Row(value='just a test!')
>>>



