Spark环境搭建

Posted yanceyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark环境搭建相关的知识,希望对你有一定的参考价值。

Spark官网和下载地址

官网
http://spark.apache.org/
spark-2.2.0源码下载链接
http://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0.tgz
spark-2.2.0安装包下载连接
http://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.6.tgz

官方文档

进入官网:http://spark.apache.org/
官网查看编译步骤如下图所示,也可以直接访问http://spark.apache.org/docs/latest/building-spark.html
技术图片

技术图片

编译前置条件

自Spark 2.2.0起已删除了对Java 7,Python 2.6和2.6.5之前的旧Hadoop版本的支持。
从2.3.0版本开始,不再支持Scala 2.10。
从Spark 2.4.1开始不支持Scala 2.11,它将在Spark 3.0中删除。

这里以2.2.0为例子
编译环境
jdk8
Scala 2.11.8
mvn 3.5.4

由于maven中没有cdh版本的hadoop版本所以增加cloudera仓库,在spark目录下的pom.xml文件repositories下增加

 <repository>
   <id>cloudera</id>
   <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
 </repository>

设置maven内存

export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m"

编译

mvm编译命令

./build/mvn -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0 -DskipTests clean package

#推荐使用
./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz  -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhadoop.version=2.6.0-cdh5.7.0

第二个命令,.sh文件中默认把maven内存设置了,跳过测试也默认加上了

编译完成后文件名:

spark-$VERSION-bin-$NAME.tgz

spark-2.2.0-bin-2.6.0-cdh5.7.0.tgz

Spark Local模式环境搭建

这里由于编译比较慢,编译到一半就没进行下去,用的是官网的安装包,下载地址如下:
http://archive.apache.org/dist/spark/spark-2.2.0/spark-2.2.0-bin-hadoop2.6.tgz

解压安装包

tar -zxvf spark-2.2.0-bin-hadoop2.6.tgz -C ~/app/

将spark配置到环境变量

$ vim ~/.bash_profile

export SPARK_HOME=/home/hadoop/app/spark-2.2.0-bin-hadoop2.6
export PATH=$SPARK_HOME/bin:$PATH

$ source ~/.bash_profile
$ echo $SPARK_HOME

启动local模式

$ spark-shell --master local[2]

local[2] 2是指定多少个线程,不加默认单线程

监控页面
http://192.168.175.128:4040

Spark Standalong模式环境搭建

Spark Standalong模式的架构和Hadoop HDFS/YARN类似,
1 master + n worker

修改配置文件

spark-env.sh

$ cd $SPARK_HOME/conf
$ cp spark-env.sh.template spark-env.sh
$ vim spark-env.sh

# master 主机地址
SPARK_MASTER_HOST=hadoop000
# 每个worker节点所占有的CPU核数
SPARK_WORKER_CORES=2
# 每个worker节点能够最大分配给exectors的内存大小
SPARK_WORKER_MEMORY=2g
# 每台机器上开启的worker节点数
SPARK_WORKER_INSTANCES=1

spark-config.sh

$ cd $SPARK_HOME/sbin
$ vim spark-config.sh

export JAVA_HOME=/home/hadoop/app/jdk1.8.0_201

在sbin目录下的spark-config.sh文件下未添加JAVA_HOME的索引.

启动master

$ cd $SPARK_HOME/sbin
$ ./start-all.sh

监控页面
http://192.168.175.128:8081/

多台机器可以修改slaves配置文件
hadoop0:master
hadoop1:worker
hadoop2:worker

slaver:
hadoop2
hadoop3

start-all.sh
会在hadoop0机器上启动master进程,在slaves文件配置的所有hostname的机器上启动worker进程

启动客户端

$ cd $SPARK_HOME/bin
$ spark-shell --master spark://hadoop000:7077

启动后在监控页面可以看到 Running Executors (1)

开发环境使用local即可

简单使用

Spark WordCount统计

scala> val file = spark.sparkContext.textFile("file:///home/hadoop/data/hello.txt")
scala> val wordCounts = file.flatMap(line => line.split(",")).map((word => (word, 1))).reduceByKey(_ + _)
scala> wordCounts.collect

hello.txt中内容

hello,world,hello
hello,world
welcome

执行结果

res1: Array[(String,Int)] = Array((hello,3), (welcome,1), (world,2))























以上是关于Spark环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

Spark+ECLIPSE+JAVA+MAVEN windows开发环境搭建及入门实例附详细代码

Spark MLlib速成宝典基础篇01Windows下spark开发环境搭建(Scala版)

Spark编程环境搭建(基于Intellij IDEA的Ultimate版本)

Spark编程环境搭建

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

Spark之环境搭建