存在spark时hadoop和流解决方案的相关性

6tqwzwtp  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(476)

我正在为我的初创公司启动一项大数据计划。在2018年,有没有任何理由使用hadoop呢?因为spark被吹捧的速度要快得多,因为它主要不是像hadoop的先生那样将中间数据写入磁盘。
我意识到spark对ram有更高的需求,但这仅仅是资本支出成本的一倍,可以自己支付吗?
一般来说,除非有遗留项目,既然spark是可用的,为什么还要选择hadoop呢?
会很感激现实世界中的两个比较,哥查斯等。?
或者,hadoop可以解决但spark不能解决的用例有哪些?
------实际问题的评论如下----
我将使用yarn作为资源管理器,hdfs作为spark的文件系统。还要意识到,因为spark与hadoop生态系统有点交叉。
比较如下:
mapreduce与spark代码
sparksql与hive
人们也提到Pig,但不是很多人都想学。如果我必须使用pig作为数据科学家,为什么不使用apachenifi和hadoop呢?
也不确定spark如何处理以下问题:
如果数据不适合ram,那怎么办?回到一个基于磁盘的范例(这里不谈论流式使用案例…)那么没有比mapreduce更好的了?tez如何让mr2更好?
hadoop3支持擦除编码以减少数据复制。spark做什么?
我不清楚的是有太多重叠的选择。例如,流媒体本身具有:
Spark流
Apache风暴
Apache萨姆扎
Kafka河
cep商业工具(oracle cep、tibco等)
他们中的许多人使用的dag类似于spark的核心引擎,所以很难从中挑出一个。

用例:

应用程序将数据发送到中间件,直到事件结束。事件可以按指定的周期结束,也可以由于满足业务条件而结束。
中间件必须显示用户从应用程序示例发送的值的实时添加(简化)。公认的中间件是楼层的实际值和实际值之和,可以更高。计划在这里使用kafka streams让消费者以最小的延迟将所有输入添加到缓存中,缓存由应用程序轮询以显示当前的加法值。
中间件记录所有输入
事件结束后,大数据范例扫描日志数据和数据库记录,通过比较所有db值和日志条目(audit)获得准确的计数,并将它们与kafka显示的值进行比较。此方案计算的值为最终值。

设计选择:

我喜欢kafka,因为它将应用程序中间件解耦,并且是低延迟、高吞吐量的消息传递。流代码很容易编写。很高兴有人用spark streams或ApacheStorm或ApacheSamza来反驳争论?
应用程序本身是tomcat服务器上的java代码,带有ios/android客户端的rest端点。由于附加值的显式活跃性,不执行客户端缓存。

9rbhqvlz

9rbhqvlz1#

你把hadoop和mapreduce搞混了。hadoop是一个由mapreduce、hdfs和yarn组成的生态系统。
首先,spark没有文件系统。在我的书中,这就是为什么hadoop很好的主要原因。当然,您可以使用s3,或者许多其他云存储,或者像ceph或glusterfs这样的裸机数据存储,但是根据我的研究,hdfs在处理数据时是最快的。
也许你不熟悉Yarn提供的机架位置的概念。如果您使用spark standalone模式,而spark executors下没有安装任何文件系统,那么您的所有数据请求都需要通过网络连接进行拉入,从而导致网络饱和,并导致瓶颈,而不管内存如何。与运行在yarn节点管理器上的spark执行器相比,hdfs数据节点也是理想的节点管理器。
类似的问题-人们说Hive很慢,sparksql更快。如果你用mapreduce运行hive而不是tez或spark执行模式,那是真的。
现在,如果您想要流式处理和实时事件,而不是通常与hadoop相关的批处理世界。你可能想研究一下那一堆。

更新

pig作为一个数据科学家,我为什么不使用hadoop的ApacheNIFI呢
Pig不能和尼菲相比。
你可以使用nifi;没有什么能阻止你。它比spark微批量更接近实时。它是与Kafka配对的好工具。
重叠选择过多
是的,你甚至没有把它们都列出来。。。你公司的一些大数据架构师需要想出一个解决方案。您会发现来自confluent的供应商支持主要是针对kafka的。我没见过他们怎么谈论桑扎。hortonworks将支持storm、nifi和spark,但是如果您想要像ksql这样的高级功能,它们不会运行最新版本的kafka。streamsets是一家提供与nifi竞争的工具的类似公司,nifi由具有其他批处理/流式处理apache项目背景的员工组成。
据我所知,斯托姆和桑扎是做同一件事的两种方式。我认为flink比storm对程序员更友好。我没有使用samza的经验,尽管我和主要使用kafka流而不是它的人密切合作。而且kafka streams不是基于dag的,它只是一个高级kafka库,可以嵌入任何jvm应用程序中。
如果数据不适合ram,那怎么办?
默认情况下,它溢出到磁盘。。。如果您不想触碰磁盘,spark有参数可供配置。很明显,在这种情况下,你的工作很快就会死于oom。
tez如何让mr2更好?
tez不是mr,它可以像spark那样创建更优化的DAG。去看看吧。
hadoop3支持擦除编码以减少数据复制。spark做什么?
spark没有文件系统。我们已经谈过了。擦除编码主要用于静态数据,而不是在处理过程中。实际上我还不知道spark是否支持Hadoop3。
应用程序本身是tomcat服务器上的java代码,带有ios/android客户端的rest端点
就我个人而言,我会在这里使用kafka流,因为1)您已经在使用java了2)它是代码中的一个独立线程,允许您在没有hadoop/yarn或spark集群的情况下从kafka读取/发布数据。不清楚您的问题与您列出的客户机-服务器体系结构中的hadoop有什么关系,但可以随意从kafka主题中再加上一行代码到您选择的数据库/分析引擎。kafka connect框架有许多连接器供您选择。
您还可以使用nifi作为您的移动restapi,只公开http并向其发送请求,然后根据数据中的属性路由流。然后,操纵并发布到Kafka以及其他系统。

mcvgt66p

mcvgt66p2#

spark和hadoop在解决mapreduce问题的方式上非常相似。
如果你从hdfs的Angular 来讨论,hadoop是非常相关的。hdfs是一个众所周知的用于大数据存储的解决方案。但你的问题是关于mapreduce的。
如果您谈论的是具有真正良好的内存配置和网络吞吐量的好机器,那么spark是最佳选择。但我们知道这类机器很昂贵,有时最好的选择是使用hadoop来处理数据。spark很棒,速度也很快,但是如果你没有一个好的集群,有时你会因为内存中的数据太多而发疯。在这种情况下hadoop会更好。但这一问题年复一年都不那么相关。
所以hadoop在这里是com的补充,hadoop不仅仅是mapreduce,hadoop是一个生态系统。spark没有分布式文件系统,要想spark正常工作,你需要一个,spark没有资源管理器,hadoop称之为yarn。而spark在集群模式下需要一个资源管理器。
结论
hadoop作为一个生态系统仍然是相关的,但是作为惟一的mapreduce,我可以说它已经不再被使用了。

相关问题