Copyright © 2019 @Linyer. All Rights Reserved
目录
先准备好以下l两个包(点击以下载):
scala-2.10.7.tgz
spark-1.6.3-bin-hadoop2.6.tgz
上接实验一:Hadoop集群搭建
实验二建立在实验一的基础上!
点击以查看实验一
实验二:Spark 集群构建
上传解压 配置环境变量
- 在 SparkMaster 上:
- 创建目录
mkdir /usr/lib/scala
mkdir /usr/lib/spark
- 上传 Scala 至
/usr/lib/scala
目录下。 - 上传 Spark 至
/usr/lib/spark
目录下。 - 解压它们
cd /usr/lib/scala
tar -zxvf scala-2.10.7.tgz
cd /usr/lib/spark
tar -zxvf spark-1.6.3-bin-hadoop2.6.tgz
- 环境变量配置,增加以下内容:
export SCALA_HOME=/usr/lib/scala/scala-2.10.7
export SPARK_HOME=/usr/lib/spark/spark-1.6.3-bin-hadoop2.6
export PATH=${SPARK_HOME}/bin:${SCALA_HOME}/bin:
source ~/.bashrc
- 输入
scala -version
查看是否配置成功。 - 使用
scp
命令复制到 SparkWorker1 和 SparkWorker2 上。 - 如果发现 NetworkManager 和 network 冲突可执行以下命令关闭 NetworkManager:
service NetworkManager stop
配置 Spark
SparkMaster 上
- 进入 spark 的 conf 目录:
cd /usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
修改 slaves 文件
- 首先把 slaves.template 复制为 slaves
cp slaves.template slaves
- 修改 slaves 文件内容为:
SparkWorker1
SparkWorker2
配置 spark-env.sh
- 首先把 spark-env.sh.template 复制为 spark-env.sh
cp spark-env.sh.template spark-env.sh
- 配置如下:
export JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
export SCALA_HOME=/usr/lib/scala/scala-2.10.7
export HADOOP_HOME=/usr/lib/hadoop/hadoop-2.6.5
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export SPARK_MASTER_IP=SparkMaster
export SPARK_WORKER_MEMORY=1g
复制到 SparkWorker1 和 SparkWorker2 上
scp slaves root@SparkWorker1:/usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
scp slaves root@SparkWorker2:/usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
scp spark-env.sh root@SparkWorker1:/usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
scp spark-env.sh root@SparkWorker2:/usr/lib/spark/spark-1.6.3-bin-hadoop2.6/conf
启动 Spark 分布式集群并查看信息
1. 启动 Hadoop 集群
- 在 SparkMaster 使用
jps
命令:
cd $HADOOP_HOME/sbin
./start-dfs.sh
./start-yarn.sh
./mr-jobhistory-daemon.sh start historyserver
2. 启动 Spark 集群
- 启动操作如下:
cd $SPARK_HOME/sbin
./start-all.sh
-
此时使用
jps
命令,发现 SparkWorker1 和 SparkWorker2 上都出现了新进程 Worker
-
可以进入 Spark 集群 Web 页面,访问
http://192.168.80.131:8080
,可以看到有两个 Worker 节点及这两个节点的信息:
-
此时进入Spark 的 bin 目录,使用 spark-shell 控制台。
cd $SPARK_HOME/bin
spark-shell
- 此时进入 Spark 的 shell 世界,根据输出的提示信息,可以通过
http://192.168.80.131:4040
从 Web 的角度看一下 SparkUI 的情况。
- 同时也可以看一下 Executors 。
- 至此,Spark 集群搭建成功!
测试 Spark 集群
- 把 Spark 安装包下文件 README.md 上传到 HDFS 。
cd $SPARK_HOME
hadoop fs -put README.md /data
- 通过
http://192.168.80.131:50070/explorer.html#/data
在 Web 控制台上发现成功上传了文件。
- 使用 MASTER=spark://SparkMaster:7077 ./spark-shell 命令启动 Spark shell。
cd $SPARK_HOME/bin
MASTER=spark://SparkMaster:7077 ./spark-shell
- 接下来通过以下命令读取刚刚上传到 HDFS 上的 README.md 文件:
val file = sc.textFile("hdfs://SparkMaster:9000/data/README.md")
- 对读取的文件进行一下操作:
val count = file.flatMap(line => line.split("")).map(word => (word,1)).reduceByKey(_+_)
- 接下来使用 collect 命令提交并执行 Job。
count.collect
- 从 Web 控制台可以看到程序成功在集群上运行。
- 上述信息表明程序成功在 Spark 集群上运行!