spark集群安装


1、准备三台Linux服务器,安装好jdk
2、上传spark-安装包到Linux上
解压安装包到指定位置
tar -zxvf spark-1.5.1-bin-hadoop2.4.tgz -C /home/hadoop/apps
3、配置Spark
进入到Spark安装目录
cd /home/hadoop/apps/spark-1.5.1-bin-hadoop2.4
进入conf目录并重命名并修改spark-env.sh.template文件
cd conf/
mv spark-env.sh.template spark-env.sh
vi spark-env.sh
在该配置文件中添加如下配置:
export JAVA_HOME=/home/hadoop/apps/jdk1.8.0_181
export SPARK_MASTER_IP=hadoop1
export SPARK_MASTER_PORT=7077
保存退出
重命名并修改slaves.template文件
mv slaves.template slaves
vi slaves
在该文件中添加子节点所在的位置(Worker节点)
hadoop1
hadoop2
hadoop3
保存退出
将配置好的Spark拷贝到其他节点上
将hadoop1上的spark安装包分别发送到hadoop2和3上

Spark集群配置完毕,目前是1个Master,3个Work,在hadoop1上启动Spark集群
/home/hadoop/apps/spark-1.5.1-bin-hadoop2.4/sbin/start-all.sh

启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://hadoop1:8080/

到此为止,Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:
Spark集群规划:hadoop1,hadoop2是Master;hadoop3,hadoop4,hadoop5是Worker
安装配置zk集群,并启动zk集群
停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=/spark"
1.在hadoop1节点上修改slaves配置文件内容指定worker节点
2.在hadoop1上执行sbin/start-all.sh脚本,然后在hadoop2上执行sbin/start-master.sh启动第二个Master
二****3.执行Spark程序
1、执行第一个spark程序
/usr/local/spark-2.1.0-bin-hadoop2.6/bin/spark-submit
–class org.apache.spark.examples.SparkPi
–master spark://hadoop1:7077
–executor-memory 1G
–total-executor-cores 2
/usr/local/spark-2.1.0-bin-hadoop2.6/lib/spark-examples-2.1.0-hadoop2.6.0.jar
100
该算法是利用蒙特·卡罗算法求PI
2、启动Spark Shell
spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序。
1)启动spark shell
/usr/local/spark-2.1.0-bin-hadoop2.6/bin/spark-shell
–master spark://hadoop1:7077
–executor-memory 2g
–total-executor-cores 2

参数说明:
–master spark://hadoop1:7077 指定Master的地址
–executor-memory 2g 指定每个worker可用内存为2G
–total-executor-cores 2 指定整个集群使用的cup核数为2个

注意:
如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。

Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可
2)在spark shell中编写WordCount程序
(1).首先启动hdfs
(2).向hdfs上传一个文件到hdfs://hadoop1:9000/words.txt
(3).在spark shell中用scala语言编写spark程序
sc.textFile(“hdfs://hadoop1:9000/words.txt”).flatMap(.split(" "))
.map((
,1)).reduceByKey(+).saveAsTextFile(“hdfs://hadoop1:9000/out”)

(4).使用hdfs命令查看结果
hdfs dfs -ls hdfs://hadoop1:9000/out/p*

说明:
sc是SparkContext对象,该对象时提交spark程序的入口
textFile(hdfs://hadoop1:9000/words.txt)是hdfs中读取数据
flatMap(.split(" "))先map在压平
map((
,1))将单词和1构成元组
reduceByKey(+)按照key进行reduce,并将value累加
saveAsTextFile(“hdfs://hadoop1:9000/out”)将结果写入到hdfs中
3、在IDEA中编写WordCount程序
1.首先启动hdfs
2.向hdfs上传一个文件到hdfs://hadoop1:9000/words.txt
3.在spark shell中用scala语言编写spark程序
sc.textFile(“hdfs://hadoop1:9000/words.txt”).flatMap(.split(" "))
.map((
,1)).reduceByKey(+).saveAsTextFile(“hdfs://hadoop1:9000/out”)

4.使用hdfs命令查看结果
hdfs dfs -ls hdfs://hadoop1:9000/out/p*

说明:
sc是SparkContext对象,该对象时提交spark程序的入口
textFile(hdfs://hadoop1:9000/words.txt)是hdfs中读取数据
flatMap(.split(" "))先map在压平
map((
,1))将单词和1构成元组
reduceByKey(+)按照key进行reduce,并将value累加
saveAsTextFile(“hdfs://hadoop1:9000/out”)将结果写入到hdfs中
3.3.在IDEA中编写WordCount程序
spark shell仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在IDE中编制程序,然后打成jar包,然后提交到集群,最常用的是创建一个Maven项目,利用Maven来管理jar包的依赖。

1.创建一个项目

2.选择Maven项目,然后点击next

3.填写maven的GAV,然后点击next

4.填写项目名称,然后点击finish

5.创建好maven项目后,点击Enable Auto-Import

6.配置Maven的pom.xml

7.新建一个scala class,类型为Object

8.编写spark程序

9.使用Maven打包:首先修改pom.xml中的main class

点击idea右侧的Maven Project选项

点击Lifecycle,选择clean和package,然后点击Run Maven Build

10.选择编译成功的jar包,并将该jar上传到Spark集群中的某个节点上

11.首先启动hdfs和Spark集群
启动hdfs
/usr/local/hadoop-2.6.5/sbin/start-dfs.sh
启动spark
/usr/local/spark-2.1.0-bin-hadoop2.6/sbin/start-all.sh

12.使用spark-submit命令提交Spark应用(注意参数的顺序)
/usr/local/spark-2.1.0-bin-hadoop2.6/bin/spark-submit
–class cn.itcast.spark.WordCount
–master spark://hadoop1:7077
–executor-memory 2G
–total-executor-cores 4
/root/spark-mvn-1.0-SNAPSHOT.jar
hdfs://hadoop1:9000/words.txt
hdfs://hadoop1:9000/out

查看程序执行结果
hdfs dfs -cat hdfs://hadoop1:9000/out/part-00000

//测试IDEA编写的程序
./spark-submit
–master spark://hdp01:7077
–executor-memory 512m
–total-executor-cores 4
–calss cn.lixiaolong.ScalaWC
/root/SparkDemo-1.0-SNAPSHOT.jar
hdfs://hdp01:9000/wc/a.txt
hdfs:?/hdp01:9000/wc/scalaWCOut

./spark-submit --master spark://hsp01:7077 --executor-memory 512m --total-executor-cores 4 --class cn.lixiaolong.JavaLambdaWC /root/SparkDemo-1.0-SNAPSHOT.jar hdfs://hdp01:9000/wc/a.txt hdfs://hdp01:9000/wc/lambdaout

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值