环境 :Ubuntu 14.04
Scala 安装
Spark 本身是用 Scala 语言开发的,所以必须要安装 scala
Scala下网网页
下载 scala_2_11_6 版本
wget https://www.scala-lang.org/files/archive/scala-2.11.6.tgz
解压文件
tar xvf scala-2.11.6.tgz
把 解压文件 迁移至 /usr/local/scala
sudo mv scala-2.11.6 /usr/local/scala
设置环境变量
sudo vim ~/.bashrc
添加内容
export SCALA_HOME=/usr/local/scala
export PATH=$PATH:$SCALA_HOME/bin
激活环境变量
source ~/.bashrc
启动 Scala 查看情况
scala
安装 Spark
Spark 下载网址
下载制定版本
wget https://archive.apache.org/dist/spark/spark-2.0.0/spark-2.0.0-bin-hadoop2.6.tgz
解压文件
tar zxf spark-2.0.0-bin-hadoop2.6.tgz
把 spark-2.0.0-bin-hadoop2.6 目录 移动至 /usr/local/spark/
sudo mv spark-2.0.0-bin-hadoop2.6 /usr/local/spark/
编辑环境变量
sudo vim ~/.bashrc
添加内容
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
激活环境变量
source ~/.bashrc
启动 pyspark 交互式界面
pyspark
退出
exit()
设置 pyspark 显示信息
Spark 安装后,在pyspark 交互式界面中默认会显示很多信息,有时太多信息会影响阅读,修改设置,只显示警告信息
复制 log4j 模板文件
cd /usr/local/spark/conf
cp log4j.properties.template log4j.properties
设置 log4j
sudo vim log4j.properties
改动后
再次进入 pyspark
pyspark
测试 pyspark 读取 HDFS
准备测试文件,上传HDFS
将需要的文件 放到本地测试目录下
sudo cp /usr/local/hadoop/LICENSE.txt /home/hduser/文档/wordcount/input
启动所有服务器
启动 Hadoop Multi-Node Cluster
start-all.sh
将 测试文件上传到 HDFS 目录下
hadoop fs -mkdir -p /user/hduser/wordcount/input
本地运行 pyspark 程序
local[N]
代表在本地运行,使用N个线程(thread),也就是说可以同时执行N个程序。虽然是在本地运行,但是因为现在CPU大多是多个核心,所以使用多个线程仍然会加速执行。local[*]
会尽量使用机器上的CPU核心,也可以指定使用的线程数,例如:local[4]
代表使用4个线程(thread)
pyspark --master local[*]
查看当前的运行模式
sc.master
读取本地文件
textFile = sc.textFile("file:/usr/local/spark/README.md")
显示项数
textFile.count()
读取 HDFS 文件
textFile = sc.textFile("hdfs://master:9000/user/hduser/wordcount/input/LICENSE.txt")
显示项数
textFile.count()
在 Hadoop YARN 运行 pyspark
Spark 可以在 Hadoop YARN 上运行,让 YARN 帮助它进行多台机器资源的管理
在 Hadoop YARN 上运行 pyspark
HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop pyspark --master yarn --deploy-mode client
查看当前的运行模式
sc.master
读取 HDFS 文件
textFile = sc.textFile("hdfs://master:9000/user/hduser/wordcount/input/LICENSE.txt")
显示项数
textFile.count()
在 Hadoop Web 界面查看 PySparkShell APP
http://localhost:8088/
构建 Spark Standalone Cluster 运行环境
复制模板文件 来创建 spark-env.sh
cp /usr/local/spark/conf/spark-env.sh.template /usr/local/spark/conf/spark-env.sh
设置 spark-env.sh
sudo vim /usr/local/spark/conf/spark-env.sh
添加内容
export SPARK_MASTER_IP=master
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=512m
export SPARK_WORKER_INSTANCES=4
将 master 的 spark 程序复制到 data1
ssh data1
sudo mkdir /usr/local/spark
sudo chown hduser:hduser /usr/local/spark
exit
使用 scp 将master的spark程序复制到data1
sudo scp -r /usr/local/spark hduser@data1:/usr/local
将 master 的 spark 程序复制到data2
ssh data2
sudo mkdir /usr/local/spark
sudo chown hduser:hduser /usr/local/spark
exit
使用 scp 将master的spark程序复制到data1
sudo scp -r /usr/local/spark hduser@data2:/usr/local
将 master 的 spark 程序复制到data3
ssh data3
sudo mkdir /usr/local/spark
sudo chown hduser:hduser /usr/local/spark
exit
使用 scp 将master的spark程序复制到data1
sudo scp -r /usr/local/spark hduser@data3:/usr/local
编辑 slaves 文件
sudo vim /usr/local/spark/conf/slaves
添加内容
data1
data2
data3
在 Spark Standalone 运行 pyspark
启动 Spark Standalone Cluster
/usr/local/spark/sbin/start-all.sh
命令 | 说明 |
---|---|
/usr/local/spark/sbin/start-master.sh | 启动 master 服务器 |
/usr/local/spark/sbin/start-slaves.sh | 启动 slaves 服务器 |
在 Spark Standalone 运行 pyspark
pyspark --master spark://master:7077 --num-executors 1 --total-executor-cores 3 --executor-memory 512m
查看当前的运行模式
sc.master
读取本地文件
textFile=sc.textFile("file:/usr/local/spark/README.md")
textFile.count()
读取HDFS文件
textFile=sc.textFile("hdfs://master:9000/user/hduser/wordcount/input/LICENSE.txt")
textFile.count()
Spark Web UI 界面
http://master:8080/
停止 Spark standalone cluster
/usr/local/spark/sbin/stop-all.sh