有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用apachespark进行java开发

我是Spark新手,我想询问一些关于为apachespark框架开发和测试代码的常见准则

  1. 在本地测试代码最常见的设置是什么?有吗 要提升的内置虚拟机(就绪盒等)?我必须在本地设置spark吗?是否有任何测试库来测试我的代码

  2. 在集群模式下,我注意到有一些方法可以 设置集群;就生产而言,最常见的方法是什么 设置群集以运行Spark?这里有三种选择

    • 独立群集设置
    • 使用纱线
    • 使用MESOS

多谢各位


共 (4) 个答案

  1. # 1 楼答案

    1)常见设置:只需在本地机器上下载Spark版本。解压它并按照these步骤在本地进行设置

    2)启动集群进行生产:可用的Spark cluster mode overviewhere解释了运行Spark集群时的关键概念Spark既可以独立运行,也可以在多个现有集群管理器上运行。目前,有几种部署选项可用:

    • 亚马逊EC2

    • 独立模式

    • Apache Mesos

    • Hadoop纱线

    EC2脚本可以让你在5分钟内启动一个集群。事实上,如果您使用的是EC2,最好的方法就是使用spark提供的脚本。独立模式最适合在专用集群上部署Spark

    通常,当我们使用纱线设置现有的Hadoop时,我们使用纱线作为集群管理器,Mesos也是如此。相反,如果您要从灰尘中创建一个新集群,我建议您使用独立模式,因为您没有使用亚马逊EC2实例Thislink显示了一些有助于安排独立Spark集群的步骤

  2. # 2 楼答案

    我用的是霍顿工厂的沙箱。它有hadoop、java和运行spark示例所需的所有环境

    我建议您在IDE中编写简单的Java或Scala类。在“SimpleApp.java”中创建SparkConf和SparkContext对象

    SparkConf conf = new SparkConf().setAppName(appName).setMaster("local[2]");
    JavaSparkContext sc = new JavaSparkContext(conf);
    

    一旦运行maven clean package or maven package,它将在项目的目标文件夹中创建jar文件。如果没有,则使用以下命令创建一个JAR文件。你可以找到SimpleApp。类文件位于“target/classes”文件夹中。cd到这个目录

    jar cfve file.jar SimpleApp.class
    

    将此JAR文件放入目标目录中的项目中。在将作业提交给Spark时,此JAR文件包含SimpleApp类的依赖项。我猜你的项目结构如下

    simpleapp
     - src/main/java
      - org.apache.spark.examples
        -SimpleApp.java
     - lib
      - dependent.jars (you can put all dependent jars inside lib directory)
     - target
      - simpleapp.jar (after compiling your source)
    

    cd到你的spark目录。我使用的是spark-1.4.0-bin-hadoop2。6.你的cmd看起来像这样

    spark-1.4.0-bin-hadoop2.6>
    

    使用以下命令启动主程序和辅助程序

    spark-1.4.0-bin-hadoop2.6> ./sbin/start-all.sh
    

    如果这不起作用,那么分别启动主设备和从设备

    spark-1.4.0-bin-hadoop2.6> ./sbin/start-master.sh
    spark-1.4.0-bin-hadoop2.6> ./sbin/start-slaves.sh
    

    使用spark Submit提交spark计划。如果你有我解释过的结构,那么在课堂上通过这个论点

    --class org.apache.spark.examples.SimpleApp
    

    否则

    --class SimpleApp
    

    最后通过spark submit提交spark计划

    spark-1.4.0-bin-hadoop2.6>./bin/spark-submit --class SimpleApp --master local[2] /PATH-TO-YOUR-PROJECT-DIRECTORY/target/file.jar
    

    在这里,我使用了local[2]作为主控,因此我的程序将在两个线程上运行,但您可以在--master中以--master spark://YOUR-HOSTNAME:7077的形式传递主控URL

    端口号7077是主URL的默认端口号

  3. # 4 楼答案

    对于开发和测试,我建议在本地模式下使用sbt,这样您就可以利用将为代码编写的测试套件。以下是Matei Zaharia关于Spark开发的逐字建议,它一直对我有用:

    “作为一个提示(这可能没有很好的文档记录),我通常使用SBT进行测试 开发以避免缓慢的构建过程,并使用其交互式 控制台只运行特定的测试。SBT的优点是可以保持 Scala编译器跨构建加载和JIT,使其能够更快地 迭代要使用它,可以执行以下操作:

    • 使用SBT/SBT启动SBT交互控制台
    • 通过在程序集中运行“assembly”目标来构建程序集 项目:组装/组装
    • 在一个模块中运行所有测试:核心/测试
    • 运行特定的套件:仅核心/测试组织。阿帕奇。火花rdd。RDDSuite(这个 还支持“制表符完成”

    资料来源: http://mail-archives.apache.org/mod_mbox/spark-dev/201412.mbox/%3cCAAsvFP=V9FL=KvXNUeWVfFz8q04oj1exdwSaSNiab5Vc9hFkUg@mail.gmail.com%3e