Python Spark的介绍与安装
1. Spark的Cluster模式架构图
Spark官网http://spark.apache.org/docs/latest/cluster-overview.html提供了Spark的Cluster模式图
- Driver Program 就是程序员所设计的Spark程序。
- SparkContext 在Spark程序中必须定义SparkContext,它是开发Spark应用程序的入口。
- ClusterManager SparkContext通过Cluster Manager管理整个集群,集群中包含多个Worker Node,在每个Worker Node中都有Executor负责执行任务。
这种架构的好处是:所设计的Spark程序可以在不同的Cluster模式下运行。
2. Cluster Manager的运行模式
(1) 本地运行(Local Machine)
只需要在程序中import Spark的链接库就可以实现。在本地运行时,对于只安装在一台计算机上时最方便,适合刚入门时学习、测试使用。
(2) Spark Standalone Cluster
由Spark提供的Cluster管理模式,若没有架设Hadoop Multi Node Cluster,则可架设Spark Standalone Cluster,实现多台计算机并行计算。
(3) Hadoop YARN(Yet Another Resource Megotiator)
Hadoop2.x新架构中更高效率的资源管理核心。Spark可以在YARN上运行,让YARN帮助它进行多台机器的资源管理。
(4)在云端运行
针对更大型规模的计算工作,本地机器或自建集群的计算能力恐怕难以满足。此时可以将Spark程序在云平台上运行,例如AWS的EC2平台。
3. Scala的介绍与安装
(1)下载
Spark支持Scala、Java和Python等语言,不过Spark本身是用Scala语言开发的,所以必须要先安装Scala。因为Spark2.0必须配合Scala2.11版本,所以选择2.11.6版本 https://www.scala-lang.org/files/archive/
Scala具有以下特点
- Scala可编译为Java Bytecode字节码,也就是说它可以在JVM(Java Virtual Machine)上运行,具备跨平台能力。
- 现有Java的链接库都可以使用
- Scala是一种函数式语言
- Scala是一种纯面向对象的语言
(2)安装
cd /usr/local
sudo cp ~/下载/scala-2.11.6.tgz ./
sudo tar -xvzf scala-2.11.6.tgz
sudo ln -s scala-2.11.6 scala
(3)配置环境变量
编辑 ~/.bashrc,添加
# SCALA Variables
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin
使环境变量生效
source ~/.bashrc
4. 安装Spark
(1)下载Spark
http://spark.apache.org/downloads.html
(2)安装Spark
Spark与Hadoop版本必须相互配合因为Spark会读取HadoopHDFS并且必须能在HadoopYARN执行程序,所以必须按照目前安装的Hadoop版本来选择Spark版本。因为之前安装的是Hadoop2.6.4,所以这里选择Pre-build for Apache Hadoop 2.6
cd /usr/local
sudo tar -xvzf spark-2.0.2-bin-hadoop2.6.tgz
sudo mv ~/下载/spark-2.0.2-bin-hadoop2.6.tgz ./
sudo ln -s spark-2.0.2-bin-hadoop2.6 spark
(3)配置环境变量
编辑 ~/.bashrc
# SPARK Variables
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
使环境变量生效
source ~/.bashrc
5. 设置pyspark显示信息
复制模板
sudo cp /usr/local/spark/conf/log4j.properties.template /usr/local/spark/conf/log4j.properties
编辑 /usr/local/spark/conf/log4j.properties,把log4j.rootCategory值改成“WARN”
# Set everything to be logged to the console
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
6. 启动pyspark交互式界面
pyspark
7. 本地运行pyspark程序
(1)尽量使用CPU核心以多线程运行Spark
pyspark --master local[*]
(2)查看当前的运行模式
>>> sc.master
(3)读取本地的文件
>>> textFile = sc.textFile("file:/usr/local/spark/README.md")
>>> textFile.cout()
(4)读取HDFS文件
>>> textFile = sc.textFile("hdfs://master:9000/user/
8. 安装Anaconda
(1)下载Anaconda
安装与Spark2.0兼容的版本 Anaconda2-2.5.0-Linux-x86_64.sh https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
(2)安装Anaconda
bash Anaconda2-2.5.0-Linux-x86_64.sh -b
(3)设置环境变量
# Anaconda Variables
export PATH=/home/yf/anaconda2/bin:$PATH
export ANACONDA_PATH=/home/yf/anaconda2
export PYSPARK_DRIVER_PYTHON=$ANACONDA_PATH/bin/ipython
export PYSPARK_PYTHON=$ANACONDA_PATH/bin/python
使环境变量生效
source ~/.bashrc
9. 在Local启动IPython Notebook
mkdir -p pythonwork/ipynotebook
cd pythonwork/ipynotebook/
PYSPARK_DRIVER_PYTHON=ipython PYSPARK_DRIVER_PYTHON_OPTS="notebook" pyspark --master local[*]
本文根据林大贵《Python+Spark2.0+Hadoop机器学习与大数据实战》第8章、第9章实现