要下载哪个版本的Spark?

时间:2015-10-02 22:35:56

标签: hadoop amazon-web-services amazon-s3 apache-spark

据我所知,您可以为各种版本的Hadoop下载Spark源代码(1.5.1)或预构建的二进制文件。截至2015年10月,Spark网页http://spark.apache.org/downloads.html已预先构建了针对Hadoop 2.6 +,2.4 +,2.3和1.X的二进制文件。

我不确定要下载哪个版本。

我想使用AWS机器以独立模式运行Spark集群。

<EDIT>

我将运行24/7流媒体流程。我的数据将来自Kafka流。我想过使用spark-ec2,但由于我已经拥有了持久的ec2机器,我想我也可以使用它们。

我的理解是,由于我的持久工作人员需要执行checkpoint(),因此需要访问主节点的某种共享文件系统。 S3似乎是一个合乎逻辑的选择 </EDIT>

这意味着我需要访问S3,而不是hdfs。我没有安装Hadoop。

我为Hadoop 2.6预装了Spark。我可以在本地模式下运行它,例如wordcount示例。但是,每当我启动它时,我都会收到此消息

WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

这是一个问题吗?我需要hadoop吗?

<EDIT>

这不是一个节目限制但我想确保我理解这个警告信息的原因。我假设Spark不需要Hadoop,为什么它甚至出现? </EDIT>

2 个答案:

答案 0 :(得分:1)

  

我不确定要下载哪个版本。

此考虑因素还将取决于您使用的现有代码,所需功能以及容错能力。

  

我想使用AWS实例以独立模式运行Spark集群。

您是否考虑过简单地运行Apache Spark on Amazon EMR?另请参阅Spark常见问题解答中的How can I run Spark on a cluster?,以及他们对EC2 scripts的引用。

  

这意味着我需要访问S3,而不是hdfs

一个并不意味着另一个。您可以在EC2实例上完全运行Spark集群,而不必访问S3。虽然许多示例是通过开箱即用的S3 "fs" drivers for the Hadoop library使用S3访问编写的,但请注意现在有3种不同的访问方法。根据需要进行配置。

但是,您选择要加载的库取决于数据的位置。 Spark可以访问Hadoop支持的任何文件系统from which there are several to choose

您的数据甚至在文件中吗?根据您的应用程序和数据的位置,您可能只需要使用SQLCassandra或其他人的数据框!

  

但是,每当我启动它时,我都会收到此消息

     
    

WARN NativeCodeLoader:无法为您的平台加载native-hadoop库...使用适用的builtin-java类     这是一个问题吗?我需要hadoop吗?

  

不是问题。它告诉你它正在回归到非最佳实现。其他人也有asked this question

一般来说,听起来你现在没有任何应用程序需求,所以你没有任何依赖关系。依赖性将驱动不同的配置,例如访问S3,HDFS等。

  

我可以在本地模式下运行它,例如wordcount示例。

那么,你好吗?

<强>更新

  
    

我已编辑过原帖

  
     

我的数据将来自Kafka流。 ......我的理解是......我的持久工作人员需要执行checkpoint()

是的,可以从Spark 1.3上获得Direct Kafka方法,并且根据该文章,使用检查点。这些需要"fault-tolerant, reliable file system (e.g., HDFS, S3, etc.)"。有关具体的警告,请参阅Spark Streaming + Kafka Integration Guide版本。

  

那么为什么[我能看到Hadoop警告消息]吗?

Spark下载只附带了这么多Hadoop客户端库。通过完全配置的Hadoop安装,还可以为某些软件包提供特定于平台的本机二进制文件。如果可用,这些将被使用。要使用它们,augment Spark's classpath;否则,加载程序将回退到性能较低的版本。

根据您的配置,您可以利用完全配置的Hadoop或HDFS安装。您提到利用现有的持久EC2实例,而不是使用新的实例。在S3和HDFS之间需要权衡:S3是一种新资源(成本更高),但在实例离线时可以存活(可以减少计算并保持存储);但是,与HDFS相比,S3可能会遇到延迟(你已经有了机器,为什么不在它们上运行文件系统?),以及在所有情况下都不是behave like a filesystem。微软为choosing Azure storage vs. HDFS描述了这种权衡,例如,使用HDInsight时。

答案 1 :(得分:1)

我们还在针对S3的EC2上运行Spark(通过s3n文件系统)。我们在Hadoop 2.x的预构建版本上遇到了一些问题。遗憾的是,我不记得这个问题是什么。但最终我们使用预先构建的Spark for Hadoop 1.x运行并且它运行良好。