2017-02-21 85 views
1

我想从hadoop中读取数据,在spark上处理数据,并在hadoop和弹性搜索上读取数据。我有几个工人节点来做到这一点。Spark集群 - 在hadoop上读写

星火独立群集就足够了吗?或者我需要让hadoop集群使用纱线或mesos?

如果独立集群模式充足,应该在所有节点上设置jar文件,而不像yarn,mesos模式?

回答

2

首先,您不能在Hadoop中写入数据或从Hadoop读取数据。它是HDFS(Hadoop生态系统组件),负责数据的读写。 现在来到你的问题

  1. 是的,它可以读取从HDFS数据和火花引擎进程,然后写在HDFS输出。

  2. YARN,mesos和spark standalone都是集群管理器,您可以使用它们中的任何一个来管理集群中的资源,它与hadoop无关。但是由于您想要从HDFS读写数据,因此您需要在集群上安装HDFS,因此最好在所有节点上安装hadoop,以便在所有节点上安装HDFS。现在您是否想要使用YARN,mesos或spark独立式,都可以使用HDFS我自己使用spark独立式进行集群管理。

  3. 不清楚你正在与哪个jar文件通话,但我认为它会是火花然后是你需要在每个节点上设置spark jar的路径,这样火花在路径上不会有矛盾运行的。

+0

错误的问题,很好的答案。谢谢:)我决定在系统上使用纱线。如果是这样,这是否能够在单个hdfs上写结果输出数据,所以它可以用于另一个输入数据? –

+0

是的,一旦写入hdfs,它可以用作其他地图缩减作业中的输入。但通过单个hdfs,如果你的意思是单个输出文件,那么你需要采用单个reducer,因为每个reducer创建它是单独的输出文件,尽管所有都保存在同一个目录中。如果你的输出文件太大,那么它将被分割成多个输出文件,但是你也可以通过覆盖RecordWriter来控制它。 reduce任务的输出通常通过TaskInputOutputContext.write(Object,Object)写入RecordWriter。 –