Spark
Spark是一种开源集群运算框架,由加州大学伯克利分校的AMPLab开发。Spark是一个弹性运算框架,适合进行Spark Streaming数据流处理、Spark SQL互动分析、MLlib机器学习等应用。Spark允许用户将数据加载到cluster集群的内存中存储,并多次重复计算,非常适用于机器学习的算法。
Spark是用Scala开发的,并支持多种语言。
注:本博客系列将用Python和Hadoop结合Spark进行开发,并不是纯Spark,由于作者能力有限,纯Spark将在学完所有内容再进行深入学习。
RDD
弹性分布式数据集,能与其他系统兼容,可以导入外部存储系统的数据集,如HDFS、HBase或其他Hadoop数据源。
Spark在内存中进行计算,所以速度极快。
spark的cluster模式架构图
DriverProgram是我们写的Spark的应用程序,每个程序都必须定义SparkContext,作为程序入口,它通过Cluster Manager管理整个集群,集群中包含多个Worker Node,每个Worker Node都有一Executor负责执行任务。
Cluster Manager可以在不同的Cluster模式上运行
Scala的安装
要用Spark必须先装Scala,下载网址:
https://www.scala-lang.org/files/archive/
Spark2.0需要配合2.11版本,这里我是用这个版本
https://www.scala-lang.org/files/archive/scala-2.11.12.tgz
1、在master(已经搭建好的Hadoop集群中的boss)机器上下载
wget https://www.scala-lang.org/files/archive/scala-2.11.12.tgz
如果慢就
wget http://downloads.typesafe.com/scala/2.11.12/scala-2.11.12.tgz
2、解压
tar xvf scala-2.11.12.tgz
3、配置
移动到/usr/local/scala下
mv scala-2.11.12 /usr/local/scala
配置环境变量(和Hadoop一样,我选择全局的/etc/profile)
#scala
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin
使它生效
source /etc/profile
检查是否成功
scala
Spark安装
网址
http://spark.apache.org/downloads.html
1、下载
必须按照hadoop版本选择
查看版本
下载网址
http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.3/spark-2.4.3-bin-hadoop2.7.tgz
wget http://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.4.3/spark-2.4.3-bin-hadoop2.7.tgz
2、解压
tar zxf spark-2.4.3-bin-hadoop2.7.tgz
3、配置
移动到/usr/local/spark
mv spark-2.4.3-bin-hadoop2.7 /usr/local/spark
配置环境变量
#spark
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
生效
启动pyspark
如果遇见name ‘memoryview’ is not defined错误
就升级python版本
安装过程链接
为了方便我这里用以下方法安装3.4
安装最新版本的EPEL
sudo yum install epel-release
用yum安装python 3.4:
sudo yum install python34
注意:上面的安装方法并未安装pip和setuptools,如果你要安装这两个库可以使用下面的命令:
curl -O https://bootstrap.pypa.io/get-pip.py
sudo /usr/bin/python3.4 get-pip.py
或者参考下面的这个链接安装pip3(如果网速不行就用这个)
pip3安装链接
回到master服务器启用pyspark
本地运行pyspark程序
pyspark --master local[4]
其中local[4]代表本地使用4个线程,用*使本机尽量运行多个线程
查看当前运行模式
sc.master
读取本地文件
textFile = sc.textFile("file:/usr/local/spark/README.md")
读取HDFS文件
textFile = sc.textFile("hdfs://master:9000/user/alex/wordcount/input/LICENSE.txt")
在YARN运行pyspark
HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop pyspark --master yarn --deploy-mode client
构建Spark Standalone Cluster运行环境
1、设置spark-env.sh文件
cp /usr/local/spark/conf/spark-env.sh.template /usr/local/spark/conf/spark-env.sh
vim /usr/local/spark/conf/spark-env.sh
添加以下代码
export SPARK_MASTER_IP=master
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=300m
export SPARK_WORKER_INSTANCES=2
2、复制spark到slave1、slave2
ssh slave1
mkdir /usr/local/spark
chown hduser:hduser /usr/local/spark
exit
scp -r /usr/local/spark hduser@slave1: /usr/local
对slave2做一样的操作
3、编辑slaves文件
vim /usr/local/spark/conf/slaves
添加
slave1
slave2
4、运行
/usr/local/spark/sbin/start-all.sh
pyspark --master spark://master:7077
注意:因为cluster模式会分布在其他机器,其他机器要确保有相同文件,所以最好读取HDFS文件
5、web界面
在浏览器浏览master:8080
6、关闭运行
/usr/local/spark/sbin/stop-all.sh