我正在研究Hadoop和Spark,这引起了一个疑问。请帮我澄清一下。
Hadoop从HDFS(硬盘)读取并处理内存中的数据,并将产生的输出写回到HDFS(硬盘)。如果这里不对,请纠正我。
Spark还将从硬盘读取数据(否则它会在第一次出现在哪里?)并将这些数据填充到RDD(在内存中创建)中,然后进行处理,如果不做进一步处理,则稍后将该数据写入硬盘。需要。在Spark中,可以创建多个RDD来处理不同类型的数据处理。这些RDD可以彼此交互。如果这里不对,请纠正我。
建议使用Spark进行实时处理。为什么呢Hadoop不能完成同一件事吗?因为最后,源和目标是硬盘。(如果存在其他情况,请共享)。在hadoop中,我无法创建类似于概念的RDD,但是可以扩展代码,这将与多个RDD所做的事情相同。(有意义)
请分享您对我的想法的观点,并在错误之处进行纠正。
答案 0 :(得分:1)
因为最后,源和目标是硬盘。
可以,但不一定是HDFS硬盘。可以是Mysql服务器或Kafka Broker。
建议使用Spark进行实时处理。为什么呢Hadoop不能完成同一件事吗?
首先,Hadoop不是处理引擎-YARN提供了作业处理的抽象,许多应用程序都在YARN上运行。包括Flink,Storm / Heron,它们是引用较少的(不确定为什么?)实际的实时流媒体平台(通常由Kafka而非Hadoop加载)。 Spark至少可以在几秒钟的时间内进行“小批量”处理,而其他框架则可以在更短的时间内运行
在hadoop中,我无法创建概念之类的RDD
RDD是Spark的概念,Spark利用Hadoop库执行其任务,因此该语句为false。
如果您不能创建延迟计算的动作,则可能要看一下Pig,它也创建了DAG执行计划,该计划仅在执行动作时才计算。就像RDD(或DataFrame)如何彼此交互。
火花也将从硬盘读取数据(否则可能是第一次读取数据?)
假设您指的是HDFS硬盘,替代方案可以是本地文件系统,S3,Kafka(如上所述)或SQL数据库,或Mongo,Elasticsearch等。Hadoop只是存在数据且Spark可以读取数据的一种可能的地方。
答案 1 :(得分:0)
Spark和Hadoop不等效。 RDD是纯粹来自Spark框架的概念,可以映射HDFS中损坏的文件。 Spark可以处理磁盘并且永远不会写入磁盘,就像传输数据一样。
Hadoop由HDFS和YARN组成。 HDFS旨在提供利用磁盘的分布式存储,而YARN使您可以使用基础结构来处理RAM。 Spark可以访问它们两者。
我认为您需要至少举两个例子来了解Spark和Hadoop之间的关系: