在上一篇中,我介绍了关于Hadoop完全分布式的配置,从上一篇博文到现在,这期间由于种种原因一直未能记录Spark集群的配置,今天补上。上篇博文中只是一个简单的测试实验,集群数目也不多,今天增加了一台。由于Spark集群的配置需要在Hadoop的基础之上,所以没配Hadoop的同学请看上一篇博文。
环境介绍
- 系统:Ubuntu14.04 64位
- JDK版本:jdk 1.7
- Hadoop版本:hadoop 2.7.2
- Spark版本:spark 1.6.0
- Scala版本: scala 2.10.4
集群环境:
角色 hostname IP master wlw 192.168.1.112 slave1 wlw1 192.168.1.101 slave2 wlw2 192.168.1.121
环境变量配置
需要为Spark和Scala配置环境变量,根据你自己的存放路径进行相应的更改,具体如下:
# for spark environment
export SPARK_HOME=/opt/spark-1.6.0-bin-hadoop2.6
export PATH=$SPARK_HOME/bin:$PATH
# for scala environment
export SCALA_HOME=/opt/scala-2.10.4
export PATH=$SCALA_HOME/bin:$PATH
需要在master和slave上都进行配置
Spark配置
修改spark的spark环境文件
cd /opt/spark-1.6.0-bin-hadoop2.6/conf/
cp spark-env.sh.template spark-env.shexport SPARK_MASTER_IP=192.168.1.112 export SPARK_MASTER_PORT=7077 export SPARK_WORKER_CORES=4 export SPARK_WORKER_MEMORY=3g export SPARK_EXECUTOR_INSTANCES=2 export SPARK_MASTER_WEBUI_PORT=8090 export SPARK_WORKER_PORT=8092 export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT} # control executor memory export SPARK_EXECUTOR_MEMORY=3g
- 将Hadoop配置文件core-site.xml和hdfs-site.xml复制到spark-1.6.0-bin-hadoop2.6/conf/中
设置slaves
cd spark-1.6.0-bin-hadoop2.6/conf/
vim slaveswlw1 wlw2
从master上分发Spark和Scala到每一台slave,建议先打包再分发
cd /opt
sudo tar -zcf ./spark-1.6.0-bin-hadoop2.6.tar.gz ./spark-1.6.0-bin-hadoop2.6
scp ./spark-1.6.0-bin-hadoop2.6.tar.gz wlw1:/home/hadoop
cd /opt
sudo tar -zcf ./scala-2.10.4.tar.gz ./scala-2.10.4
scp ./scala-2.10.4.tar.gz wlw1:/home/hadoop在slave(wlw1和wlw2)节点上执行:
sudo tar -zxf ~/spark-1.6.0-bin-hadoop2.6.tar.gz -C /opt/
sudo chown -R hadoop:hadoop /opt/spark-1.6.0-bin-hadoop2.6
sudo tar -zxf ~/scala-2.10.4.tar.gz -C /opt/
sudo chown -R hadoop:hadoop /opt/scala-2.10.4
启动Spark
如上都配置完成之后,在master节点上就可以启动spark了,前提是先启动Hadoop:
启动Hadoop:
cd /opt/hadoop-2.7.2
./sbin/start-dfs.sh
./sbin/start-yarn.sh启动Spark:
cd /opt/spark-1.6.0-bin-hadoop2.6
./sbin/start-all.sh通过 jps 命令查看master(wlw)节点的Hadoop和Spark进程:
12630 SecondaryNameNode 12339 NameNode 13221 Master 32203 Jps 12863 ResourceManager 27907 SparkSubmit
通过 jps 命令查看slave(wlw1和wlw2)节点的Hadoop和Spark进程:
6536 Worker 6215 DataNode 6356 NodeManager 6597 Jps
- 通过Web页面看到查看节点的状态:
http://wlw:8090
测试
依旧测试wordcount
val textFile = sc.textFile("hdfs://wlw:9000/input/file4.txt") val counts = textFile.flatMap(line => line.split(" ")) .map(word => (word, 1)) .reduceByKey(_ + _) counts.saveAsTextFile("hdfs://wlw:9000/output/wordcount3")
- 查看结果
至此,spark on yarn模式,全部完成。