2016-05-12 72 views
0

我正在尝试设置Spark JobServer(SJS)以在独立Spark集群上执行作业。我试图在SPARK集群的其中一个非主节点上部署SJS。我没有使用码头工具,但试图手动。StandAlone集群中的Spark Job-Server配置

我很困惑SJS github中的帮助文档,尤其是deployment部分。我是否需要编辑local.conf和local.sh来运行它?

有人能指出在火花集群中设置SJS的步骤吗?

谢谢! 基兰

更新: 我创建了一个新的环境,在集群中的一个节点部署jobserver:这里是它的细节:

env1.sh:

DEPLOY_HOSTS="masked.mo.cpy.corp" 
APP_USER=kiran 
APP_GROUP=spark 
INSTALL_DIR=/home/kiran/job-server 
LOG_DIR=/var/log/job-server 
PIDFILE=spark-jobserver.pid 
JOBSERVER_MEMORY=1G 
SPARK_VERSION=1.6.1 
MAX_DIRECT_MEMORY=512M 
SPARK_HOME=/home/spark/spark-1.6.1-bin-hadoop2.6 
SPARK_CONF_DIR=$SPARK_HOME/conf 
SCALA_VERSION=2.11.6 

env1.conf

spark { 

    master = "local[1]" 
    webUrlPort = 8080 
    job-number-cpus = 2 

    jobserver { 
    port = 8090 
    bind-address = "0.0.0.0" 
    jar-store-rootdir = /tmp/jobserver/jars 
    context-per-jvm = false 
    jobdao = spark.jobserver.io.JobFileDAO 
    filedao { 
     rootdir = /tmp/spark-job-server/filedao/data 
    } 
    datadao { 
     rootdir = /tmp/spark-jobserver/upload 
    } 

    result-chunk-size = 1m 
    } 

    context-settings { 
    num-cpu-cores = 1 
    memory-per-node = 1G 
    } 
    home = "/home/spark/spark-1.6.1-bin-hadoop2.6" 
} 

回答

0

是的,你已经编辑了两个文件,使它们适合你的c光泽。

部署的步骤说明如下:


  1. 复制config/local.sh.template<environment>.sh并根据需要编辑。

这个文件主要是用于由部署脚本,并通过server_start.sh脚本中使用的环境变量。最重要的是:部署主机(它是运行作业服务器的ip或主机名),用户和执行组,JobServer内存(它将成为驱动程序内存),spark版本和spark home。


  • 复印config/shiro.ini.templateshiro.ini和编辑适当。注意:仅当认证=时需要
  • 如果您要使用shiro身份验证,那么您需要执行此步骤。


  • 复印config/local.conf.template<environment>.conf和编辑适当。
  • 这是JobServer和JobServer将创建的上下文的主要配置文件。您可以在此文件中设置的属性的完整列表可以在this link上看到。


  • bin/server_deploy.sh <environment>
  • 编辑配置文件之后,可以部署使用该脚本。该参数必须是您为.conf.sh文件选择的名称。

    运行脚本后,JobServer将连接到在.sh文件中输入的主机,并创建一个包含一些控制文件的新目录。然后,每次需要更改配置条目时,都可以直接在远程计算机上执行:.conf文件将以您选择的名称出现,.sh文件将重命名为settings.sh

    请注意,如果您尚未在运行此脚本的计算机与远程计算机之间配置基于SSH密钥的连接,则会在执行期间提示您输入密码。

    如果你有远程计算机上创建目录的问题,你可以尝试一下mkdir创建它们(他们必须在.sh文件的INSTALL_DIR配置条目匹配),而改变他们的所有者用户和组匹配输入.sh配置文件。


  • 在远程服务器上,与server_start.sh启动它在展开目录并与server_stop.sh
  • 这是非常丰富的停止它。一旦你完成了所有其他的步骤,您可以通过运行该脚本server_start.sh在远程计算机上启动JobServer服务,你可以用server_stop.sh


    +0

    感谢@ Daniel-de-Paula的详细步骤。但我发现,尽管如此,工作服务器并没有启动。我在上面的问题描述中包含了env1.sh和env1.conf。在启动server_start.sh时,我看不到任何事情发生。我可以看到为作业服务器启动了一个新的PID。但8090端口没有打开。因此,所有curl请求都无法通过服务器。任何想法缺少什么? – Kiran

    +0

    @Kiran是否在目标计算机(即在'.sh'文件的第一行中配置的计算机)中启动server_start.sh?也许你可以通过查看'$ LOG_DIR/jobserver'来调试(默认为'/ var/log/jobserver') –

    +0

    @ Daneil-de-Paula:是的,我在目标机器上启动它。这是我从一开始就做的:在本地系统中,sbt使用env1.conf和env1.sh构建了作业服务器。使用server_deploy.sh从本地系统部署到服务器。在目标系统中,启动了火花主控和一个从属实例。可以看到在8080端口上运行的群集。现在尝试启动作业服务器,希望端口8090将会打开。但是netstat -l -n不显示8090端口。但是我看到一个新的进程使用jobserver的新PID运行。 jobserver调试文件不指定是否出现问题。 – Kiran

    1

    停止你为什么不设置JOBSERVER_FG = 1,并尝试运行server_start。 sh,这将在前台运行该进程,并应将错误显示为stderr。