• Spark2.1集群安装(standalone模式)


    机器部署

      准备三台Linux服务器,安装好JDK1.7

    下载Spark安装包

      上传spark-2.1.0-bin-hadoop2.6.tgz安装包到Linux(intsmaze-131)上

      解压安装包到指定位置tar -zxvf spark-2.1.0-bin-hadoop2.6.tgz -C /home/hadoop/app/spark2.0/

    原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6569036.html

    微信:intsmaze

    配置Spark

      进入到Spark安装目录

      cd /spark-2.1.0-bin-hadoop2.6/conf

      mv spark-env.sh.template spark-env.sh

      vi spark-env.sh

      在该配置文件中添加如下配置  

    export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
    export SPARK_MASTER_IP=intsmaze-131(指定standalone模式中主节点master是哪一台spark节点)
    export SPARK_MASTER_PORT=7077 

      mv slaves.template slaves

      vi slaves

      在该文件中添加子节点所在的位置(Worker节点)

    intsmaze-131
    intsmaze-132
    intsmaze-134

      将配置好的Spark拷贝到其他节点上(注意节点的路径必须和master一样,否则master启动集群回去从节点中对应目录中去启动work,不一致会报No such file or directory

    scp -r spark-2.1.0-bin-hadoop2.6/ intsmaze-132:/home/hadoop/app/spark2.0/
    scp -r spark-2.1.0-bin-hadoop2.6/ intsmaze-134:/home/hadoop/app/spark2.0/

      Spark集群配置完毕,目前是1个Master,3个Work,在intsmaze-131(master节点)上启动Spark集群

    /home/hadoop/app/spark2.0/spark-2.1.0-bin-hadoop2.6/sbin/start-all.sh(spark集群不需要启动hadoop集群等,与hadoop集群无关。如果配置为spark on yarn上,那么必须启动spark和yarn集群而不需要启动hadoop)

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

    执行第一个spark程序

    /home/hadoop/app/spark2.0/spark-2.1.0-bin-hadoop2.6/bin/spark-submit 
     --class org.apache.spark.examples.SparkPi 
     --master spark://intsmaze-131:7077 
     --executor-memory 1G 
     --total-executor-cores 2 /home/hadoop/app/spark2.0/spark-2.1.0-bin-hadoop2.6/examples/jars/spark-examples_2.11-2.1.0.jar 
     100

     该算法是利用蒙特·卡罗算法求PI。

    启动Spark Shell

      spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用scala编写spark程序。

     /home/hadoop/app/spark2.0/spark-2.1.0-bin-hadoop2.6/bin/spark-shell 
     --master spark://intsmaze-131:7077 
    --executor-memory 2g 
    --total-executor-cores 2
    

    参数说明:

    --master spark://intsmaze-131:7077 指定Master的地址

    --executor-memory 2g 指定每个worker可用内存为2G,现有集群该任务将无法启动,应该修改为512m。

    --total-executor-cores 2 指定整个任务使用的cup核数为2个。

      注意:如果给该任务分配的资源无法达到指定的,将无法成功启动job。比如服务器节点可以内存为为1G,你设置每个worker2G,将会无法启动任务。askSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources

      如果启动spark shell时没有指定master地址,但是也可以正常启动spark shell和执行spark shell中的程序,其实是启动了spark的local模式,该模式仅在本机启动一个进程,没有与集群建立联系。Spark Shell中已经默认将SparkContext类初始化为对象sc。用户代码如果需要用到,则直接应用sc即可。

    在spark shell中编写WordCount程序

    1.首先启动hdfs

    2.向hdfs上传一个文件到intsmaze-131:9000/words.txt

    3.在spark shell中用scala语言编写spark程序

    sc.textFile("hdfs://192.168.19.131:9000/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://192.168.19.131:9000/out")

    4.使用hdfs命令查看结果

    hdfs dfs -ls hdfs://intsmaze-131:9000/out/p*

    说明:

    sc是SparkContext对象,该对象时提交spark程序的入口
    textFile(hdfs://intsmaze-131:9000/words.txt)是hdfs中读取数据
    flatMap(_.split(" "))先map在压平
    map((_,1))将单词和1构成元组
    reduceByKey(_+_)按照key进行reduce,并将value累加
    saveAsTextFile("hdfs://intsmaze-131:9000/out")将结果写入到hdfs中

    配置Spark的高可用

      到此为止,Spark集群安装完毕,但是有一个很大的问题,那就是Master节点存在单点故障,要解决此问题,就要借助zookeeper,并且启动至少两个Master节点来实现高可靠,配置方式比较简单:

      Spark集群规划:intsmaze-131,intsmaze-132是Master;intsmaze-131,intsmaze-132,intsmaze-134是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"

      在node4上执行sbin/start-all.sh脚本,然后在node5上执行sbin/start-master.sh启动第二个Master

  • 相关阅读:
    iOS学习-UITextField
    iOS学习-UIButton->Block
    iOS学习-UIButton
    iOS常用技术-微信下标栏
    学习进度表
    学习进度表
    读后感
    我的学习进度表
    调查问卷
    我的学习进度表
  • 原文地址:https://www.cnblogs.com/intsmaze/p/6569036.html
Copyright © 2020-2023  润新知