加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长资讯 > 评论 > 正文

主流人工智能技术栈的深度探讨和实践总结

发布时间:2021-05-03 14:56:40 所属栏目:评论 来源:互联网
导读:适合用Hadoop处理。 2. Spark是采用更先进的架构 ,其灵活性、易用性、性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性需要大幅提高。 3. Flink既是批处理又是实时处理框架 ,但流处理还是放在***位的,Flink提供了一系列API,包括针对Java和

适合用Hadoop处理。

2. Spark是采用更先进的架构,其灵活性、易用性、性能等方面都比Hadoop更有优势,有取代Hadoop的趋势,但其稳定性需要大幅提高。

3. Flink既是批处理又是实时处理框架,但流处理还是放在***位的,Flink提供了一系列API,包括针对Java和Scala的流API,针对Java,Scala,Python的静态数据API,以及在Java和Scala中嵌入SQL查询的代码。它也自带机器学习和图像处理包。

4. Storm是占领一定市场份额的分布式计算框架,其应用被设计成有向无环图。被设计成容易处理***流,并且可用于任何编程语言。每个节点每秒处理上百万个元组,高度可伸缩,提供任务处理保证。用Clojure写的。可用于实时分析,分布式机器学习,以及大量别的情形,特别是数据流大的。Storm可以运行在YARN上,集成到Hadoop生态系统中。

5. Samza是由LinkedIn开源的一个分布式流处理框架,它是基于Kafka消息队列来实现类实时的流式数据处理的,非常像Twitter的流处理系统Storm。不同的是Samza基于Hadoop,而且使用了LinkedIn的Kafka分布式消息系统,并使用资源管理器Apache Hadoop YARN实现容错处理、处理器隔离、安全性和资源管理。

02

Spark是专为大规模数据处理而设计的快速通用的计算引擎,目前已经发行了2.4版本。Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架,几乎拥有Hadoop MapReduce所具有的优点,借助内存分布数据集,除了能够提供交互式查询外,还可以优化迭代工作负载。Spark今年发布的2.4,除了持续提升Spark的稳定性、易用性和性能之外,还扩展了Spark的生态圈,引入了Spark on K8s, 让用户多了一种部署Spark的方式,还引入了Pandas UDF,可以让用户在Spark上直接运行Pandas函数。我们分析其内核运行架构如下:

1. SparkContext引擎构建分析:

通常而言,用户开发的Spark应用程序的提交与执行都离不开SparkContex的支持。在正式提交应用程序之前,首先需要初始化SparkContext。SparkContext隐藏了网络通信、分布式部署、消息通信、存储体系、计算引擎、度量系统、文件服务、Web UI等内容,应用程序开发者只需要使用SparkContext提供的API完成功能开发。

2. SparkEnv环境构建分析:

Spark执行环境SparkEnv是Spark中的Task运行所必需的组件。SparkEnv内部封装了RPC环境(RpcEnv)、序列化管理器、广播管理器(BroadcastManager)、map任务输出跟踪器(MapOutputTracker)、存储体系、度量系统(MetricsSystem)、输出提交协调器(OutputCommitCoordinator)等Task运行所需的各种组件。

3. 可交换的存储体系分析

Spark优先考虑使用各节点的内存作为存储,当内存不足时才会考虑使用磁盘,这极大地减少了磁盘I/O,提升了任务执行的效率,使得Spark适用于实时计算、迭代计算、流式计算等场景。在实际场景中,有些Task是存储密集型的,有些则是计算密集型的,所以有时候会造成存储空间很空闲,而计算空间的资源又很紧张。Spark的内存存储空间与执行存储空间之间的边界可以是“软”边界,因此资源紧张的一方可以借用另一方的空间,这既可以有效利用资源,又可以提高Task的执行效率。此外,Spark的内存空间还提供了Tungsten的实现,直接操作操作系统的内存。由于Tungsten省去了在堆内分配Java对象,因此能更加有效地利用系统的内存资源,并且因为直接操作系统内存,空间的分配和释放也更迅速。

4. 双级调度系统分析:

调度系统主要由DAGScheduler和TaskScheduler组成,它们都内置在SparkContext中。DAGScheduler负责创建Job、将DAG中的RDD划分到不同的Stage、给Stage创建对应的Task、批量提交Task等功能。TaskScheduler负责按照FIFO或者FAIR等调度算法对批量Task进行调度;为Task分配资源;将Task发送到集群管理器的当前应用的Executor上,由Executor负责执行等工作。即使现在Spark增加了SparkSession和D

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读