精华内容
下载资源
问答
  • 相对路径 ./spark-submit --class com.dt.spark.WordCont_Cluster --master spark://7077 /root/Document/SparkApps/WordCont.jar .../usr/local/spark/spark-1.6.0/bin/spark-submit --class com.dt.spark.WordCon
    相对路径
    ./spark-submit --class com.dt.spark.WordCont_Cluster --master spark://7077 /root/Document/SparkApps/WordCont.jar
    绝对路径
    /usr/local/spark/spark-1.6.0/bin/spark-submit --class com.dt.spark.WordCont_Cluster --master spark://7077 /root/Document/SparkApps/WordCont.jar
    展开全文
  • 那么start-all是怎么启动Spark集群的呢?在启动集群时又做了哪些事情呢?接下来这篇文章将结合源码的分析向大家详细展示Spark集群的启动流程。 首先来看看调用spark-all脚本时,集群启动的主要流程吧。spark集群...

    引语

      当我们在Linux服务器上输入start-all的时候,Spark集群就被我们启动,紧接着就看到屏幕上打印了一行行的信息。那么start-all是怎么启动Spark集群的呢?在启动集群时又做了哪些事情呢?接下来这篇文章将结合源码的分析向大家详细展示Spark集群的启动流程。 该文章是以spark-1.3.1版本的源码来进行分析的,版本不同里面的源码也略有不同。

    Spark集群启动流程图

      首先来看看调用spark-all脚本时,集群启动的主要流程吧,总共分五个步骤。spark集群启动流程图如下:

    启动流程描述

      1、调用start-all脚本,启动Master服务,首先执行preStart,检查超时的Worker。

      2、再执行receiver方法,不断接收其他Actor发送过来的请求。

      3、调用start的时候,会解析slaves配置文件,决定在那几个节点启动Worker服务,在Worker启动的时候,执行preStart方法,向Master进行注册。

      4、Master接收到Worker的注册信息后,开始持久化注册信息,并响应给Worker。

      5、Worker接收到Master的响应信息,并开始向Master发送心跳。

    源码详细分析部分

    Master启动

      1、调用Master中的main方法

        1.1准备一些用于启动Master服务的配置信息

        1.2创建actorSystem并生成actor(调用startSystemAndActor)

          1.2.1 startSystemAndActor方法调用AkkaUtils的createActorSystem方法创建actorSystem

          1.2.2 再调用actorSystem的actorOf方法调用并启动了属于Master的actor

      2、调用preStart方法

      preStart是生命周期方法,只会执行一次,主要用于初始化。

      2.1 启动一个定时器,定时检查超时的Worker(60秒检查一次),定时器调用了CheckForWorkerTimeOut方法,并且过滤出超时的Worker。

        2.1.1 CheckForWorkerTimeOut又调用了timeOutDeadWorkers()方法进行了超时Worker的过滤。

        timeOutDeadWorkers()过滤超时Worker

          (1)拿到当前的时间

          (2)再把当前的时间-Worker的超时时间得到一个值,如果这个值(_.lastHeartbeat < currentTime - WORKER_TIMEOUT)大于当前Worker的最后一次心跳时间,则这个Worker就认为该Worker已经超时,然后把超时的Worker放到一个数组里。

          (3)得到超时Worker的数组,进行遍历。如果Worker的状态不是Dead状态,就调用removeWorker从内存和磁盘当中移除该Worker。否则直接移除该Worker。

      3、执行receiver方法(真正方法名receiveWithLogging(207行))。receiver方法,会不断地执行,不断接收其他actor发送过来的请求信息。

    Worker启动

      1、调用Worker的main方法

        1.1 准备一些用于启动Worker服务的配置信息

        1.2 创建actorSystem并生成actor(调用startSystemAndActor)

          1.2.1 startSystemAndActor方法调用AkkaUtils的createActorSystem方法创建actorSystem。

          1.2.3 再调用actorSystem的actorOf方法 调用并启动了属于Worker的actor

      2、调用preStart方法

        2.1 调用registerWithMaster()向所有Master进行注册

          2.1.1 registerWithMaster()中调用tryRegisterAllMasters()方法尝试向所有Master进行注册(为什么要向所有的Master进行注册,因为刚开始不知道那个Master是active状态)

          tryRegisterAllMasters()

            1)遍历Master的URL

            2)通过masterUrl获取Master的actor并把所有信息都封装到RegisterWorker这个类当中

            3)通过异步无返回值的方式向Master发送注册信息

    Master接收到Worker发送的注册信息

      1、判断Master的状态,如果是StandBy状态,就什么都不做。

      2、如果找到Id对应的WorkerInfo,证明已经注册过,就不需要注册了,提示Worker的ID重复(Duplicate worker ID)。

      3、如果没有注册,且Master是active状态,就开始进行注册。

        3.1 将注册信息进行封装到WorkerInfo类中

        3.2 判断是否注册成功

          3.2.1 调用registerWorker方法进行注册,注册成功则返回一个true,否则返回一个false

        3.3 如果接收到一个true则表示已经注册

          3.3.1 调用持久化引擎,把注册信息放到磁盘

          3.3.2 向Worker响应注册成功的信息同把url发送给Worker

          3.3.3 Master开始进行资源调度

    Worker收到Master响应过来的信息

      1、调用changeMaster方法,更新MasterURL,哪个机器是Active状态

      2、启动一个定时器,调用SendHeartbeat方法,定时向Master发送心跳。

        2.1 判断是否连接

        2.2 如果是连接状态,就向Master发送心跳(发送workerId)

    Master接收到Worker的心跳(workerId)

      1、遍历WorkerInfo当中的所有Worker,跟传进来的workerId进行比对。

      2、如果从Worker端传来的workerId在WorkerInfo当中存在,说明该Worker已经注册过,就更新该Worker的最后一次心跳时间为当前时间。



    第二篇:Spark源码分析(二)—Spark提交任务流程及运行流程(spark-submit)

    展开全文
  • linux安装spark-2.3.0集群

    2018-03-15 16:06:00
    (安装spark集群的前提是服务器已经配置了jdk并且安装hadoop集群(主要是hdfs)并正常启动,hadoop集群安装可参考《hadoop集群搭建(hdfs)》) 1、配置scala环境  详细配置过程可参考《linux安装scala环境》,...

    (安装spark集群的前提是服务器已经配置了jdk并且安装hadoop集群(主要是hdfs)并正常启动,hadoop集群安装可参考《hadoop集群搭建(hdfs)》)

    1、配置scala环境

      详细配置过程可参考《linux安装scala环境》,此处就不在详细描述

    2、下载spark安装包

      因为我之前安装的hadoop是3.0版本的,所以spark我使用的是spark-2.3.0版本

      wget https://www.apache.org/dyn/closer.lua/spark/spark-2.3.0/spark-2.3.0-bin-hadoop2.7.tgz

    3、解压安装包

      tar zxvf spark-2.3.0-bin-hadoop2.7.tgz

    4、修改配置文件

      1、spark-env.sh

       复制spark-env.sh.template文件成spark-env.sh(cp spark-env.sh.template spark-env.sh)

       在spark-env.sh末尾增加以下配置:

    export JAVA_HOME=/usr/java/jdk1.8.0_11
    export SCALA_HOME=${SCALA_HOME}
    export HADOOP_HOME=/home/hadoop/hadoop-3.0.0

    export STANDALONE_SPARK_MASTER_HOST=node101
    export SPARK_MASTER_IP=$STANDALONE_SPARK_MASTER_HOST

    export SPARK_LAUNCH_WITH_SCALA=0
    export SPARK_LIBRARY_PATH=${SPARK_HOME}/lib
    export SCALA_LIBRARY_PATH=${SPARK_HOME}/lib
    export SPARK_MASTER_WEBUI_PORT=18080

    if [ -n "$HADOOP_HOME" ]; then
    export SPARK_LIBRARY_PATH=$SPARK_LIBRARY_PATH:${HADOOP_HOME}/lib/native
    fi

    export HADOOP_CONF_DIR=/home/hadoop/hadoop-3.0.0/etc/hadoop

      2、slaves

        复制slaves.template文件成slaves(cp  slaves.template slaves)

        修改slave是文件的内容为:

    #
    # Licensed to the Apache Software Foundation (ASF) under one or more
    # contributor license agreements.  See the NOTICE file distributed with
    # this work for additional information regarding copyright ownership.
    # The ASF licenses this file to You under the Apache License, Version 2.0
    # (the "License"); you may not use this file except in compliance with
    # the License.  You may obtain a copy of the License at
    #
    #    http://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    #
    
    # A Spark Worker will be started on each of the machines listed below.
    node101
    node102
    node103

      3、将整个spark解压出来的文件拷贝到另外的两台机器上

    5、启动spark集群

      cd /home/hadoop/spark/sbin

      ./start-all.sj

      启动成功后会有如下的信息

    6、检查各节点spark启动情况

      分别在三台服务器上使用jps命令查看Master进程和worker进程是否存在,一下是分别是三台服务器的情况

    7、使用spark-web在浏览器上查看spark集群的运行情况(之前在配置文件里面配置的端口是18080)

     

     

     

      

       

    转载于:https://www.cnblogs.com/gulang-jx/p/8574156.html

    展开全文
  • Spark集群启动时worker节点启不起来

    千次阅读 2019-06-07 16:54:15
    spark集群中使用命令: sbin/start-all.sh 启动集群时报错: starting org.apache.spark.deploy.master.Master, logging to /home/yxk/cluster/spark/logs/spark-yxk-org.apache.spark.deploy.master.Master-...

    在spark集群中使用命令:

    sbin/start-all.sh

    启动集群时报错:

    starting org.apache.spark.deploy.master.Master, logging to /home/yxk/cluster/spark/logs/spark-yxk-org.apache.spark.deploy.master.Master-1-linux.out
    yxk@linux's password:
    linux: starting org.apache.spark.deploy.worker.Worker, logging to /home/yxk/cluster/spark/logs/spark-yxk-org.apache.spark.deploy.worker.Worker-1-linux.out
    linux: failed to launch: nice -n 0 /home/yxk/cluster/spark/bin/spark-class org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://linux:7077
    linux:   JAVA_HOME is not set
    linux: full log in /home/yxk/cluster/spark/logs/spark-yxk-org.apache.spark.deploy.worker.Worker-1-linux.out

    从日志分析中可以看出启动时找不到JAVA_HOME

    不过检查当前用户下的java环境是正常的,经分析寻找资料在这个博客中找到了 原理https://stackoverflow.com/questions/33955635/why-does-start-all-sh-from-root-cause-failed-to-launch-org-apache-spark-deploy

     

    解决方法

    在当前用户的.bashrc文件中加入java的环境变量

    $ vim ~/.bashrc
    
    加入java环境变量

    重新启动spark集群

    使用jps命令查看当前的进程。显示正常

    展开全文
  • SPARK集群安装配置

    2021-01-13 23:20:46
    SPARK集群安装配置 实验目的 熟悉Linux操作系统基本操作和Spark平台安装配置方法,理解Spark的提交模式和...5.分别以Local、Standalone和YARN三种提交模式启动Spark Shell 6.在上述三种提交模式下测试Spark命令:执行
  • 本文转自:https://www.linuxidc.com/Linux/2018-02/150886.htm一、Spark on Standalone1.spark集群启动后,Worker向Master注册信息2.spark-submit命令提交程序后,driver和application也会向Master注册信息3....
  • spark集群安装

    2018-12-25 15:25:11
    1.准备环境 2.安装JDK 3.下载spark安装包(可以先下载在Windows端再上传到Linux端) ...6.启动spark(sbin/start-all.sh) 问题:Worker怎么知道Master在哪里呢? 给其他机器发送指令其实是调用:spark/sbin/...
  • 1) 拉下来ES集群 spark集群 两套快速部署环境, 并只用docker跑起来,并保存到私库。 2)弄清楚怎么样打包 linux镜像(或者说制作)。 3)试着改一下,让它们跑在集群里面。 4) 弄清楚 Dockerfile 怎么制作镜像...
  • Docker下安装Hadoop和Spark集群

    千次阅读 2017-12-29 17:36:58
    Docker下Spark分布式集群搭建本教程使用docker模拟3台主机搭建分布式Spark集群,属于伪分布式: 1、Docker安装 2、下载已经配置好的Spark集群镜像文件 3、新建3个容器,分别命名为cloud8,cloud9,cloud10 4、...
  • 启动spark shell 本地模式: spark-3.0.1-bin-hadoop3.2/bin/spark-shell 集群模式:启动并指定好master ,worker的内存和核数 7077为RPC通信端口号 spark-3.0.1-bin-hadoop3.2/bin/spark-shell --master ...
  • spark集群的任务提交执行流程

    万次阅读 2018-03-07 20:41:30
    本文转自:https://www.linuxidc.com/Linux/2018-02/150886.htm一、Spark on Standalone1.spark集群启动后,Worker向Master注册信息2.spark-submit命令提交程序后,driver和application也会向Master注册信息3....
  • 在此,一台测试服务器模拟,搭建伪分布spark集群,用standalone模式运行。 文章目录一、集群环境二、项目配置环境 一、集群环境 包版本: 1.java1.8 2.spark 2.3.1 3.scala 2.11 4.CentOS Linux release 7.3....
  • 解决使用Navicat 打开 Linux远程连接mysql很慢的方法 1.在linux 下暂时关闭 mysql服务 service mysql stop 2.找到目录 /usr 下的 my.cnf 在最后一行加入 skip-name-resolve 保存...3.再次启动mysql service mysql start
  • 一、首先查找linux系统下的集群master的ip地址;如图所示:    二、然后在windows电脑上访问该ip地址;端口:50070   这个只是启动了Hadoop集群;         ...
  • Spark-集群安装、部署、启动、测试(1.6.3版) 一、下载地址: http://spark.apache.org/releases/spark-release-1-6-3.html 二、安装 将其放在Linux的目录中,解压 我解压的目录是: /usr/local/spark-...
  • spark分布式集群部署

    2020-07-28 01:01:57
    文章目录一、部署规划1.1 版本说明1.2 服务器规划二、spark部署2.1 解压安装包并配置环境变量2.2 修改核心配置文件2.2.1 配置 spark-env.sh2.2.2 ... server.properties2.2.4 将安装包分发给其他节点2.3 启动spark...
  • 一、启动thrift 因为用到了happybase,需要先在服务器上上启动thrift服务, ...二、linux从本地安装python库 以thriftpy为例 解压 tar zxvf thriftpy-0.3.9.tar.gz 回到当前目录 cd thriftpy-0.3.9 编译 pyth...
  • CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础软件的安装 CentOS6安装各种大数据软件 第四章:Hadoop分布式集群配置 CentOS6安装各种大数据软件 第五章...
  • linuxSpark安装与环境配置

    千次阅读 2020-02-26 12:41:22
    按照上一篇文章安装完Hadoop集群之后,启动hdfs文件系统及yarn资源管理器(也可通过start-dfs.sh和start-yarn.sh完成): start-all.sh 之后通过jps查看是否成功: jps 成功之后如下图: 点击链接...
  • Virtualbox上关于Linux配置spark时所出现的问题+解决方法1.虚拟机配置中无网络连接按钮,需重新配置2.启动Hadoop集群报错3.运行 PI 实例检查集群是否成功时报错 1.虚拟机配置中无网络连接按钮,需重新配置 解决方法...
  • 启动Spark集群 请登录Linux系统,打开一个终端。 启动Hadoop集群 cd /usr/local/hadoop/ sbin/start-all.sh 启动Spark的Master节点和所有slaves节点 cd /usr/local/spark/ sbin/start-master.sh sbin/start-...
  • Hadoop测试:linux下Hadoop安装与环境配置(附详细步骤和安装包下载)按照上一篇文章安装完Hadoop集群之后,启动hdfs文件系统及yarn资源管理器(也可通过start-dfs.sh和start-yarn.sh完成):start-all.sh之后通过jps...
  • spark部署yarn集群

    千次阅读 2015-05-13 11:06:49
    spark官方地址:http://spark.apache.org/docs/latest/running-on-yarn.html 环境 linux centos ...spark部署yarn模式集群,必须先启动hadoop中的yarn,然后在spark上提交应用到yarn集群上运行。步
  • 文章目录系统与版本集群结构安装 系统与版本 在vSphere ESXI服务器中安装大数据集群,系统镜像为CentOS-7-x86_64-Minimal-1908.iso 版本 ...CentOS-7-x86_64-Minimal-1908.iso ...jdk-8u211-linux-x64 ...spark-2.
  • 由于Spark是计算框架,所以需要预先在集群内有搭建好存储数据的持久化层,如HDFS、Hive、Cassandra等,最后可以通过启动脚本运行应用。 1.安装JDK OracleJDK下载地址:http://www.oracle.com/techne...
  • Spark集群在生产环境中,主要部署在linux的集群中,所以需要先安装JDK,SCALA等基础配置。 由于Spark是计算框架,所以需要预先在集群内有搭建好存储数据的持久化层,如HDFS,最后可以通过启动脚本运行应用。 在...
  • Spark应用程序在集群中运行时,需要借助于集群管理器(包括本地集群管理器、YARN、Mesos)来为其实现资源管理...启动Spark集群 请登录Linux系统,打开一个终端。 启动Hadoop集群 cd /usr/local/hadoop/ sb...
  • standalone模式是Spark自带的分布式集群模式,不依赖其他的资源调度框架 搭建步骤 下载spark安装包,下载地址:https://spark.apache.org/downloads.html 上传spark安装包到Linux服务器上 解压spark安装包 ...
  • Hadoop测试:linux下Hadoop安装与环境配置(附详细步骤和安装包下载)按照上一篇文章安装完Hadoop集群之后,启动hdfs文件系统及yarn资源管理器(也可通过start-dfs.sh和start-yarn.sh完成):start-all.sh之后通过jps...

空空如也

空空如也

1 2 3 4
收藏数 67
精华内容 26
关键字:

linux启动spark集群

linux 订阅