Apache Toree连接到远程spark集群

时间:2017-02-17 18:15:18

标签: apache-spark apache-toree

有没有办法将Apache Toree连接到远程火花群?我看到常用命令是

jupyter toree install --spark_home=/usr/local/bin/apache-spark/

如何在不必在本地安装的情况下在远程服务器上使用spark?

2 个答案:

答案 0 :(得分:5)

确实有办法让Toree连接到远程Spark集群。

我发现的最简单方法是克隆现有的Toree Scala / Python内核,并创建一个新的Toree Scala / Python Remote内核。这样您就可以选择在本地或远程运行。

<强>步骤:

  1. 制作现有内核的副本。在我特定的Toree安装中,内核的路径位于:/usr/local/share/jupyter/kernels/,因此我执行了以下命令:
    cp -pr /usr/local/share/jupyter/kernels/apache_toree_scala/ /usr/local/share/jupyter/kernels/apache_toree_scala_remote/

  2. 编辑kernel.json中的新/usr/local/share/jupyter/kernels/apache_toree_scala_remote/文件,并将必需的Spark选项添加到__TOREE_SPARK_OPTS__变量中。从技术上讲,只需要--master <path>,但你也可以在变量中添加--num-executors, - executor-memory等。

  3. 重启Jupyter。

  4. 我的kernel.json文件如下所示:

    {
      "display_name": "Toree - Scala Remote",
      "argv": [
        "/usr/local/share/jupyter/kernels/apache_toree_scala_remote/bin/run.sh",
        "--profile",
        "{connection_file}"
      ],
      "language": "scala",
      "env": {
        "PYTHONPATH": "/opt/spark/python:/opt/spark/python/lib/py4j-0.9-src.zip",
        "SPARK_HOME": "/opt/spark",
        "DEFAULT_INTERPRETER": "Scala",
        "PYTHON_EXEC": "python",
        "__TOREE_OPTS__": "",
        "__TOREE_SPARK_OPTS__": "--master spark://192.168.0.255:7077 --deploy-mode client --num-executors 4 --executor-memory 4g --executor-cores 8 --packages com.databricks:spark-csv_2.10:1.4.0"
      }
    }
    

答案 1 :(得分:0)

这是一个可能的示例,其中包含任何远程群集安装的一些直观详细信息。对于我的远程集群,这是一个Cloudera 5.9.2,这些是特定的步骤。 (您也可以使用此示例安装非Cloudera集群并进行一些智能编辑。)

使用OS / X构建CDH版本(如果使用发行版则跳过):

  1. 转到https://github.com/Myllyenko/incubator-toree并克隆此回购

  2. 下载Docker

  3. 设置&#39;签名&#39; - 自从我设置它以来已经过了一段时间 - 你需要签署上面的版本。 TBD

  4. &#39; new branch git&#39;,编辑.travis.xml,README.md和build.sbt文件,将5.10.x更改为5.9.2

  5. 启动Docker,在make release目录中执行cd,使用make release进行构建,等待,等待,签署3版本

  6. 将文件./dist/toree-pip/toree-0.2.0-spark-1.6.0-cdh5.9.2.tar.gz复制到可以到达YARN控制的Spark群集的spark-shell计算机

  7. 如果这将是关键任务,请将您的回购合并,提交等回到您的主仓库

  8. Spark Machine安装:

    警告:某些步骤可能需要以root用户身份完成

    1. 安装pip / anaconda(参见其他文档)

    2. 安装Jupyter sudo pip install jupyter

    3. 安装toree sudo pip install toree-0.2.0-spark-1.6.0-cdh5.9.2或使用apache-toree发布

    4. 配置Toree与Jupyter一起运行(示例): 编辑&amp;添加到~/.bash_profile

      echo $PATH
      PATH=$PATH:$HOME/bin
      export PATH
      echo $PATH
      
      export CDH_SPARK_HOME=/opt/cloudera/parcels/CDH/lib/spark
      export SPARK_HOME=/opt/cloudera/parcels/CDH-5.9.2-1.cdh5.9.2.p0.3/lib/spark
      export PYTHONPATH=$PYTHONPATH:$SPARK_HOME/python:$SPARK_HOME/python/lib
      export SPARK_CONF_DIR=/etc/spark/conf
      export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
      PATH=$PATH:$SPARK_HOME/bin
      export PATH
      echo $PATH
      
      export SPARK_PKGS=$(cat << END | xargs echo | sed 's/ /,/g'
      com.databricks:spark-csv_2.10:1.5.0
      END
      )
      
      export SPARK_JARS=$(cat << END | xargs echo | sed 's/ /,/g'
      /home/mymachine/extras/someapp.jar
      /home/mymachine/extras/jsoup-1.10.3.jar
      END
      )
      
      export TOREE_JAR="/usr/local/share/jupyter/kernels/apache_toree_scala/lib/toree-assembly-0.2.0-spark-1.6.0-cdh5.9.2-incubating.jar"
      
      export SPARK_OPTS="--master yarn-client --conf spark.yarn.config.gatewayPath=/opt/cloudera/parcels --conf spark.scheduler.mode=FAIR --conf spark.executor.extraLibraryPath=/opt/cloudera/parcels/CDH-5.9.2-1.cdh5.9.2.p0.3/lib/hadoop/lib/native:/opt/cloudera/parcels/CDH-5.9.2-1.cdh5.9.2.p0.3/lib/hadoop --conf spark.driver.extraLibraryPath=/opt/cloudera/parcels/CDH-5.9.2-1.cdh5.9.2.p0.3/lib/hadoop/lib/native:/opt/cloudera/parcels/CDH-5.9.2-1.cdh5.9.2.p0.3/lib/hadoop --conf spark.yarn.am.extraLibraryPath=/opt/cloudera/parcels/CDH-5.9.2-1.cdh5.9.2.p0.3/lib/hadoop/lib/native:/opt/cloudera/parcels/CDH-5.9.2-1.cdh5.9.2.p0.3/lib/hadoop --conf spark.yarn.historyServer.address=http://yourCDHcluster.net:18088  --conf spark.default.parallelism=20  --conf spark.driver.maxResultSize=1g --conf spark.driver.memory=1g  --conf spark.executor.cores=4 --conf spark.executor.instances=5  --conf spark.executor.memory=1g --packages $SPARK_PKGS --jars $SPARK_JARS"
      
      function jti() {
          jupyter toree install \
          --replace \
          --user \
          --kernel_name="CDH 5.9.2 Toree" \
          --debug \
          --spark_home=${SPARK_HOME} \
          --spark_opts="$SPARK_OPTS" \
          --log-level=0
      }
      function jn() {
          jupyter notebook --ip=127.0.0.1 --port=8888 --debug --log-level=0
      }
      

      如果你想要一个不同的端口来攻击Toree - 现在你有机会编辑8888

      1. 退出您的Toree / spark-shell机器

      2. ssh回到那台机器ssh -L 8888:localhost:8888 toreebox.cdhcluster.net(假设8888是bash文件中的端口)

      3. 我希望作为用户(非root用户),您可以键入jti将Toree安装到Jupyter中(注意:理解此步骤可能有助于将其他内核安装到Jupyter中 - 侧栏:@jamcom提到 生成的文件,但此步骤自动生成此部分。该文件作为用户而不是root用户隐藏在您的主目录树中。

      4. 作为用户,键入jn以启动Jupyter Notebook。等待几秒钟,直到浏览器网址可用并将该网址粘贴到您的浏览器中。

      5. 您现在正在运行Jupyter,因此请选择新的CDH 5.9.2 Toree或您安装的版本。这将启动一个新的浏览器窗口。由于你有一些Toree经验,选择像sc.getConf.getAll.sortWith(_._1 < _._1).foreach(println)这样的东西,以获得懒惰的实例化火花上下文。当您的作业已提交到群集时,要非常耐心,如果群集繁忙或需要一段时间让您的作业在群集中处理,您可能需要等待很长时间。

      6. 提示和技巧:

        我在第一次运行中遇到了一个问题,随后的运行从未见过这个问题。 (问题可能在github中修复)

        有时,我必须杀死旧的#Apache Toree&#39; YARN上的app开始新的Toree。

        有时,我的VM可能有一个孤立的JVM。如果您在启动Jupyter Notebook / Toree时出现内存错误或意外断开连接,请使用top检查您的进程列表。并且...杀死额外的JVM(小心识别丢失的进程)。