Spark集群部署

本文详细介绍了Spark集群的搭建步骤,包括安装配置、集群启动及多节点测试等内容,并提供了单Master问题解决方案,通过Zookeeper实现高可靠配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下载spark安装包:http://www.apache.org/dyn/closer.lua/spark/spark-1.5.2/spark-1.5.2-bin-hadoop2.6.tgz
2.上传spark-1.5.2-bin-hadoop2.6.tgz安装包到Linux上
3.解压安装包到指定位置:tar -zxvf spark-1.5.2-bin-hadoop2.6.tgz -C /usr/local
4.配置Spark:
       1.cd /usr/local/spark-1.5.2-bin-hadoop2.6
       2.cd conf/
       3.mv spark-env.sh.template spark-env.sh
       4.vi spark-env.sh
       在该配置文件中添加如下配置:
           export JAVA_HOME=/usr/java/jdk1.7.0_45
           export SPARK_MASTER_IP=host1
           export SPARK_MASTER_PORT=7077
       保存退出
       5.重命名并修改slaves.template文件
         mv slaves.template slaves
         vi slaves
         在该文件中添加子节点所在的位置(Worker节点)
           host2
           host3
           host4
       保存退出
5.将配置好的Spark拷贝到其他节点上
       scp -r spark-1.5.2-bin-hadoop2.6/ host2:/usr/local/
       scp -r spark-1.5.2-bin-hadoop2.6/ host3:/usr/local/
       scp -r spark-1.5.2-bin-hadoop2.6/ host4:/usr/local/
6.Spark集群配置完毕,目前是1个Master,3个Work,在host1上启动Spark集群
      1.进入到spark的安装目录,进入bin目录使用start-all.sh启动集群
      2.启动后执行jps命令,主节点上有Master进程,其他子节点上有Work进行,登录Spark管理界面查看集群状态(主节点):http://host1:8080/
到此为止,Spark集群安装完毕。
7.单master问题:
     有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:
     1.Spark集群规划:host1,host2是Master;host3,host4,host5是Worker
     2.安装配置zk集群,并启动zk集群
     3.停止spark所有服务,修改配置文件spark-env.sh,在该配置文件中删掉SPARK_MASTER_IP并添加如下配置
         3.1 export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=/spark"
         3.2 在host1节点上修改slaves配置文件内容指定worker节点
         3.3.在host1上执行sbin/start-all.sh脚本,然后在host2上执行sbin/start-master.sh启动第二个Master
8.多节点测试:
   1. 执行第一个spark程序
         /usr/local/spark-1.5.2-bin-hadoop2.6/bin/spark-submit \
         --class org.apache.spark.examples.SparkPi \
         --master spark://host1:7077 \
         --executor-memory 1G \
         --total-executor-cores 2 \
         /usr/local/spark-1.5.2-bin-hadoop2.6/lib/spark-examples-1.5.2-hadoop2.6.0.jar \
         100
        该算法是利用蒙特·卡罗算法求PI
   2.启动Spark Shell:spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序。
     启动spark shell
        /usr/local/spark-1.5.2-bin-hadoop2.6/bin/spark-shell \
        --master spark://host1:7077 \
        --executor-memory 2g \
        --total-executor-cores 2
     参数说明:
        --master spark://host1: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即可
         在spark shell中编写WordCount程序
            1. 首先启动hdfs
            2. 向hdfs上传一个文件到hdfs://host1:9000/words.txt
            3. 在spark shell中用scala语言编写spark程序
                  sc.textFile("hdfs://host1:9000/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://host1:9000/out")
            使用hdfs命令查看结果
            hdfs dfs -ls hdfs://host1:9000/out/p*
         说明:
         sc                                          是SparkContext对象,该对象时提交spark程序的入口
         textFile(hdfs://host1:9000/words.txt)       是hdfs中读取数据
         flatMap(_.split(" "))                       先map在压平
         map((_,1))                                  将单词和1构成元组
         reduceByKey(_+_)                            按照key进行reduce,并将value累加
         saveAsTextFile("hdfs://host1:9000/out")     将结果写入到hdfs中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值