Java 使用apachespark进行开发

Java 使用apachespark进行开发,java,apache-spark,Java,Apache Spark,我是Spark的新手,我想询问一些关于为ApacheSpark框架开发和测试代码的常见准则 在本地测试代码最常见的设置是什么?有吗 要提升的内置虚拟机(就绪盒等)?我必须在本地设置spark吗?是否有任何测试库来测试我的代码 在集群模式下,我注意到有一些方法可以 设置集群;就生产而言,最常见的方法是什么 设置群集以运行Spark?这里有三种选择 独立群集设置 用纱线 与MESOS 谢谢1)常见设置:只需在本地计算机上下载Spark版本。解压缩它并按照步骤在本地进行设置 2)启动群集进行生产:

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

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

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

    • 独立群集设置
    • 用纱线
    • 与MESOS
  • 谢谢

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

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

    • 亚马逊EC2

    • 独立模式

    • 阿帕奇Mesos

    • Hadoop纱线

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


    通常,当我们有一个现有的Hadoop设置时,我们使用Thread作为集群管理器,Mesos也是如此。相反,如果您正在从dust创建一个新集群,我建议您使用独立模式,因为您没有使用Amazon的EC2实例。链接显示了一些有助于安排独立Spark群集的步骤。

    Hortonworks hope的Sandbox将提供帮助

    HDP2.2.4沙盒,带有Apache Spark和Ambari视图

    我使用的第二个资源是

    该图像确实包含Hadoop、HBase、Impala、Spark和许多其他功能。
    需要4gb RAM、1个CPU和62.5GB磁盘。种类大,但是免费的,并满足所有要求,而不是在云上付费版本

    我正在使用Hortonworks的沙箱。它有hadoop、java和运行spark示例所需的所有环境

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

    运行
    maven clean package或maven package
    后,它将在项目的目标文件夹中创建jar文件。如果没有,则使用以下命令创建一个JAR文件。您可以在“target/classes”文件夹中找到SimpleApp.class文件。将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
    
    否则

    最后通过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,因此我的程序将在两个线程上运行,但您可以将主URL作为
    --master传递到--master中spark://YOUR-HOSTNAME:7077


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

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

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

    • 使用SBT/SBT启动SBT交互控制台
    • 通过在程序集中运行“assembly”目标来构建程序集 项目:组装/组装
    • 在一个模块中运行所有测试:核心/测试
    • 运行特定套件:core/test only org.apache.spark.rdd.RDDSuite(此 还支持“制表符完成”)
    资料来源:

    您好,谢谢您的回复,问题:启动spark是否还需要安装hadoop?例如,Hadoop2.4的预构建:您不需要。只需下载上面的tar并解压缩,然后按照步骤进行操作。你可以运行简单的程序。没有必要安装hadoop。如果您想从HDFS读取文件以使用spar进行处理,那么您需要HDFS设置。因此,hadoop的预构建是在我需要使用hadoop 2.4版的情况下进行的,好的。为什么没有独立的预构建?还是我遗漏了什么?为hadoop进行预构建的好处是什么?我的代码逻辑不能与hadoop交互并获取我需要的数据吗?我正试图更好地理解它。。。再次感谢hadoop预构建版本提供了hadoop核心库,以便可以访问hadoop API。例如saveashadoopfile。它只是提供了库,以便可以访问hadoop功能。请查看此处()。正如@SandeshDeshmane所述,为了与文件分区交互,您需要某种分布式文件系统。Hadoop提供的HDFS是Spark的适当解决方案,这就是为什么许多人将Hadoop与Spark一起使用。Spark不依赖Hadoop来工作,但它需要一些类似Hadoop(HDFS)所使用的DFS。如果你想在独立集群中运行测试,这篇文章可能会有所帮助:(这是来自Spark sou开发的上下文)
    --class SimpleApp
    
    spark-1.4.0-bin-hadoop2.6>./bin/spark-submit --class SimpleApp --master local[2] /PATH-TO-YOUR-PROJECT-DIRECTORY/target/file.jar