龙空技术网

云计算、物联网(IoT)、边缘计算和大数据基础设施(3)

Engineer Fu 67

前言:

现时咱们对“一个算法是由什么组成”大概比较注重,咱们都想要知道一些“一个算法是由什么组成”的相关内容。那么小编同时在网络上网罗了一些关于“一个算法是由什么组成””的相关内容,希望同学们能喜欢,朋友们快快来学习一下吧!

4.4 大数据基础设施

在这一部分,我们将介绍大数据基础设施。首先描述了半导体制造的大数据应用需求。然后,描绘了大数据基础设施的核心软件堆栈组件。接着,说明了如何弥合核心软件堆栈组件和与大数据相关的应用之间的差距。

4.4.1 应用需求

半导体制造是一个高端技术产业,不仅随着时间的推移不断改进其制造技术,还依赖于最先进的信息技术进行生产自动化。在半导体制造业中,数据量在制造过程中呈指数增长,这在监测和改善生产质量方面起到了巨大的帮助。为了容纳过多的数据,通常采用Apache Hadoop。Hadoop本质上是用于大数据的计算和存储设施。也就是说,生成的数据存储在Hadoop中,然后以批处理和/或实时方式进行分析。Hadoop已经发展和使用了十年,其生态系统仍然繁荣。

半导体晶圆制造厂已经采用Hadoop进行大数据应用,包括FDC和良率分析(YA)。我们在本章讨论了两种基础设施服务,即基于Hadoop的Hadoop数据服务(HDS)和分布式R语言计算服务(DRS),用于中国台湾的一个半导体制造厂。HDS和DRS自2015年以来已经被设计、实施和运营。目前,HDS和DRS都是生产系统中的7×24小时运行服务。具体来说,HDS和DRS被开发以满足以下要求:

● 透明度

用户可能会使用他们熟悉的现有工具来访问存储在大数据系统中的数据对象,以防止由于用户学习曲线陡峭而导致生产力降低。特别是,对于访问Hadoop中的数据对象,用户的一个基本步骤是了解Apache Hadoop分布式文件系统(HDFS)的架构和HDFS API的实践。用户需要熟悉这些API,以便充分利用HDFS,从而最大限度地提高HDFS的性能。此外,用户必须接受良好的培训,以操作Hadoop中的分布式数据库(例如Apache HBase)。此外,现有应用程序需要复杂的工作才能迁移到Hadoop。用户已经熟悉传统的统计和/或机器学习分析工具,例如R和Python。具体来说,基于这些分析工具的早期开发已经与生产系统关联了相当长的时间。采用重新发明轮子的方法来拥抱Hadoop等新技术是不太可能的。因此,利用现有工作和经验作为透明地利用新兴解决方案的基础已成为重要的设计考虑因素。

● 自主性

大数据存储和计算技术通常基于服务器农场(或一组大众化的现成服务器)。所谓的“现成服务器”是指配备丰富计算资源(如处理器周期、主内存和二级硬盘空间)和软件堆栈(如Linux操作系统、Java虚拟机和Hadoop)的普通存储和计算设备,这些资源在公共领域可用。如果扩展服务节点的数量,这些技术的容量将呈线性增长。(本章中的服务器和服务节点是可互换的。)每个参与的服务器可能随时发生故障;即,故障是正常的。因此,大规模系统应自组织、自管理和自愈。此外,部署系统范围的服务应尽可能轻松。

● 效率

鉴于一组资源,我们将有效地利用这些资源向用户提供服务。虽然HDFS主要设计用于顺序数据访问模式和大数据对象,但HBase处理小数据对象的随机访问。因此,我们开发的服务将智能选择底层存储设施,以优化用户发出的数据访问请求。优化不仅将最大化资源利用率,还将引入最小的操作开销。为了服务于R语言的计算任务,我们将分配计算资源以有效地执行R任务。具体而言,管理包括自适应资源分配/回收和任务调度。除了对存储和计算设施的优化外,我们还将进一步监控资源的运行时使用情况,以优化系统范围的服务。

我们的HDS和DRS服务考虑了上述设计考虑因素。HDS旨在缩小用户访问Hadoop存储设施的差距。它是一个基于Web的服务,允许用户将数据对象从现有存储设备(如Samba和FTP)复制到Hadoop。用户还可以通过HTTP透明地访问Hadoop中的HDFS和HBase中的数据对象。此外,Hadoop生态系统中的现有分析计算平台(例如Apache Spark)和数据查询工具(例如Apache Hive)对HDS毫不知情。此外,HDS具有自动扩展、自管理和自愈的能力。此外,HDS已经针对在Hadoop中访问数据对象的资源的高效有效使用进行了优化;与原生Hadoop相比,它引入了更为适度的开销。

DRS旨在透明地服务于R语言计算任务。先前在集中式计算环境中实现的现有R任务需要最小的工作量即可享受我们提出的DRS提供的数据并行计算。DRS服务智能地为R计算作业分配和释放资源。它还优化了为作业组装任务而分配的资源,考虑到任务组装的不同资源要求。此外,DRS可靠地在运行时检测和解决整个R作业的潜在故障。此外,我们的DRS服务详细记录并报告了提交的R作业在运行时测量和收集的统计数据。

4.4.2 核心软件堆栈组件

本章我们简要讨论了我们的HDS和DRS服务的基本构建模块。支撑我们系统的构建模块是Hadoop中的生态系统,包括HDFS、HBase、YARN和ZooKeeper,其中HDFS和HBase作为我们的HD存储层。YARN是DRS采用的资源管理框架,而ZooKeeper帮助协调HDS和DRS内部的协作操作。

HDFS

Apache Hadoop HDFS是用于顺序数据访问的大规模分布式文件系统。一个HDFS系统由多台商用服务器机器(或者一个集群)组成。在集群中的机器节点中,一个namenode服务器被选为管理HDFS中存储文件的命名空间,其余节点是datanodes,用于存储文件。在HDFS中发布的文件可以被分割成许多相同大小的数据块。鉴于namenode服务器可能成为性能瓶颈的事实,正常情况下一个数据块的大小是很大的(比如说64或128兆字节)。对于一个有多个数据块的文件,这些块可以分布到多个datanodes,具体取决于HDFS集群的大小以及每个参与的datanode的负载状态。此外,为了可靠性,文件的每个数据块可能被复制到多于一个不同的datanode上。在HDFS中请求和访问数据文件(或对象)的客户端首先需要向namenode查询请求文件的数据块的位置。有了数据块的位置,客户端然后直接操作相应datanode中的数据块。

HBase

虽然HDFS主要处理数据的顺序和批量访问,但Apache HBase主要支持对小数据对象的随机访问。HBase是一个大规模、分布式、基于列的NoSQL数据库存储引擎,本质上是一个键值存储。在HBase中,客户端可以创建多个表。从概念上讲,每个表管理任意数量的行,每行由一个唯一的行键和若干列值组成,其中行中的每一列的值都是一个字节字符串。为了可扩展性,HBase中的(大)表可以被水平分区为多个区域,其中区域是承载连续数据行的基本实体。区域是不相交的,每行只能由一个区域承载。HBase在由多个区域服务器(典型的商用服务器机器)组成的集群计算环境中运行。如果一个表的区域数量是c,可用于该表的区域服务器数量是n,那么HBase理想地为每个区域服务器分配c/n个区域。这里每个区域只能分配给n个区域服务器中的一个。在典型的设置中,HBase是构建在HDFS之上的。确切地说,HBase中的每个区域服务器也是一个HDFS的datanode服务器。在HBase中填充的每个表都存储为HDFS中的一系列区域文件。通过HDFS提供的复制机制,每个区域文件在不同的HDFS datanode服务器上都有一定数量的副本。

YARN

Apache YARN 是 Hadoop 的全局资源管理框架。资源包括加入 Hadoop 系统的服务器上的处理器核心和主存储空间。YARN 是一个统一的资源管理器,意味着用户(例如 MapReduce 作业)需要计算资源来向 YARN 请求满足其需求的资源。一旦与作业相关联的资源完成了计算,这些资源将会被归还给 YARN。例如,一个 MapReduce(MR)作业可能会请求8个容器,每个容器都有2个处理器核心和4GB的主存储空间。在这里,Hadoop 中的容器本质上类似于虚拟机,它是操作系统中的一个进程。一旦 YARN 授予用户所请求的资源,用户需要自行管理这些资源。管理工作包括资源的释放和分配,以及任务调度,确定在指定的容器中应该执行哪些数据项。此外,用户需要确保其计算的可靠性。分配的资源是否被有效利用取决于用户如何监视和利用这些资源。

ZooKeeper

Apache ZooKeeper 是一个协调服务,用于需要协调和同步的协作实体。通过向 ZooKeeper 注册共享变量,实体可以同时读取和写入这些变量。特别地,通过发布和订阅共享变量,感兴趣的实体观察共享变量的值,然后确定它们的计算逻辑和流程。

ZooKeeper 是可靠和容错的,因为它是由一个计算节点集群组成的。ZooKeeper 集群中的节点通过将存储在任何一个节点上的数据复制到其他节点上来同步自己。

我们稍后将讨论的 HDS 和 DRS 服务在协调和同步方面严重依赖于 ZooKeeper。协调和同步包括在 HDS 服务器中进行负载均衡的性能数据同步,HDS 集群中参与服务器的成员管理,以及 DRS 作业级别的调度。

4.4.3 缩小核心软件堆栈组件和应用之间的差距

HDS 和 DRS 基础设施服务用于缩小软件堆栈组件和应用之间的差距,具体如下。

4.4.3.1 Hadoop 数据服务(HDS)

HDS 是一个基于 Web 的分布式数据存储库。HDS 建立在 HDFS 和 HBase 之上。HDS 允许应用程序开发人员(或用户)使用 HTTP 协议将数据对象(通常是文件)从现有的通用存储(如 Samba 和 FTP 服务器)复制到 HDS 存储中,并支持在任意两个现有的异构存储服务器之间复制数据对象。具体来说,用户只需在 HDS 中指定:;to=D:fd,其中 fs(fd)组合了存储服务器名称、文件路径和数据对象名称;S 和 D 分别表示源和目标存储实体;HDS 是从 HDS 集群中任意选择的 HDS 服务器。S 和 D 可以实现不同的存储通信协议,包括 FTP、HTTP、Samba、本地文件系统,甚至是 HDS 本身。

例如,调用“;to=”表示用户通过指定的 HDS 服务器 earth,将位于名为 venus 的 Samba 文件服务器中的文件 /log/XYZ.csv 复制到名为 mars 的 FTP 文件服务器中的文件 /fdc/ABC.csv。值得注意的是,S 和 D 可以被指定为我们的 HDS 存储集群。特别是,我们在半导体制造厂的运行中,HDS 存储是一个统一的数据湖,用于存储从现有的 FTP、HTTP 和 Samba 存储池发送来的数据文件。

HDS 是基于 Web 的,因此对于数据科学家来说易于使用。HDS 基于 Web 的服务还具有可扩展性、可靠性和自我管理性。图 4.13 显示了 HDS 的软件堆栈架构和模块。接下来我们将讨论 HDS 的关键设计和实现特性。

● 可扩展性和可靠性

Hadoop 中的每个数据节点都加入了我们的 HDS 服务集群,即每个数据节点(即 HDS 服务器或 HDS 服务节点)也是一个接受 HTTP 请求以访问 HDS 集群的 Web 服务器。用户可以向从 HDS 集群中选择的任何 HDS 服务器发出他的 Hadoop 数据传输请求。给定 k 个 HDS 服务节点,我们的 HDS 集群提供了 k 倍的服务能力。基本上,每个 Hadoop 数据传输请求都利用了 HDS 服务器中的连接和内存空间资源。对于从 S 到 D 的数据对象的批量传输,我们通过管道传输组装对象的数据块从 S 到 D。负责传输的 HDS 服务器可以用来缓冲数据块,以便按顺序传输。根据请求和每个 HDS 服务器的硬件规格,我们的 HDS 服务允许系统管理员配置数据传输的缓冲内存空间,以利用每个 HDS 服务器的物理硬件资源。请注意,我们的 HDS 集群依赖于提供协调服务的 ZooKeeper。准确地说,每个 HDS 服务器通过使用心跳消息在 ZooKeeper 中注册自己,以实现我们的 HDS 成员服务。HDS 服务器可以简单地查询任何其他 HDS 服务节点成员的状态,如其存活状态和负载指标(将在下文讨论)。因此,我们的 HDS 服务在操作时是可靠的,没有单一故障点,因为我们的 HDS 成员管理维护着最新的 HDS 集群消息,任何故障的 HDS 服务器都可以迅速被识别然后移除。虽然我们的 HDS 服务依赖于 ZooKeeper 进行成员管理,但每个 HDS 服务节点另外还获取了 ZooKeeper 以确保数据一致性。具体来说,一旦发出并接受了数据传递请求,其负责的 HDS 服务器将使用 ZooKeeper 协调服务锁定文件,以使文件在传递期间无法读取和写入。我们的 HDS 服务目前实现了顺序一致性内存模型。

● 服务区分

我们的 HDS 服务包括控制面和数据面。控制面处理实时请求,如列举和状态,其中列举了 HDS 中存储的所有数据对象,而状态则报告正在进行中的数据传递请求的进度。每个 HDS 服务器静态分配连接到控制面和数据面。这是因为数据传递请求可能需要时间来执行;如果这些请求占据了 HDS 服务器可用的连接而没有服务区分,那么服务器可能无法及时执行控制消息。

● 负载均衡

我们的 HDS 集群自我平衡参与服务的 HDS 服务器的负载。

我们将 HDS 服务节点 ni 的负载测量为 L(ni) = αCD (ni)+βM(ni),其中 CD(ni) = CDoccupied (ni) / C(ni) 表示正在进行的数据传递请求当前使用的连接数(即 CDoccupied (ni) )与控制面和数据面预定义的总连接数(C(ni))的比率,M(ni) 表示数据面使用的内存空间与控制面和数据面分配的总内存空间之比;0 ≤ α ≤ 1 和 0 ≤ β ≤ 1 是两个预定义参数。我们实现了球和箱模型 [82, 90–92] 来平衡参与的 HDS 服务器的负载。更具体地说,当一个 HDS 服务器 ni 接受到一个数据传递请求 ri 时,ni 从 ZooKeeper(正如之前提到的,ZooKeeper 维护着最新的 HDS 服务器存活状态)中随机选择两个存活的 HDS 服务器(比如,nj 和 nk)。ni 将 ri 重定向到 n,其中 n ∈ {ni, nj, nk},而且 L(n) 是 L(ni),L(nj) 和 L(nk) 中最小的负载。用于平衡 HDS 服务器负载的球和箱模型以明确的轻量级方式操作,因为每个 HDS 服务器都会将其负载转发给另一个独立于 HDS 集群的大小(即 HDS 服务器参与者的总数)和全局知识的 HDS 服务节点。

● 高效的存储管理

我们观察到存储在我们的 HDS 集群中的数据对象呈现出严重的尾部分布,即大多数数据对象都很小,而其中少数数据对象很大。因此,我们设计的 HDS 底层存储基础架构混合了 HDFS 和 HBase。当数据对象很小时(通常 ≤10MBytes),该对象存储在 HBase 中;否则,它将存储在 HDFS 中。考虑到 HDFS 的 namenode 服务器强烈依赖其主内存存储来进行文件命名空间和元数据管理,大量的小文件将迅速耗尽 namenode 中宝贵的主内存空间。此外,小数据对象引入了内部文件块碎片化的问题,因为 HDFS 中文件数据块的大小通常很大。(典型的数据块大小为 64 MBytes 或 128 MBytes。)相比之下,HBase 能够为存储在 HDS 中的小数据对象提供随机数据访问。虽然 Hadoop 存档和序列文件等解决方案存在于 Hadoop 中,可以将小数据对象打包成单个大的 HDFS 文件,但这些解决方案没有提供索引功能,这使得用户无法随意查询任何数据对象。需要注意的是,HDS 会透明地管理 HDFS 和 HBase。用户只需按照 ;to=D:fd 中定义的方式发出其数据访问请求。

● 对现有数据查询语言和分析框架的透明性

HDS 是另一个建立在 Hadoop 上的分布式存储基础架构。许多数据查询语言工具支持 SQL,例如 Apache Hive SQL,这确保了在 Hadoop 中进行数据操作的便捷性。由于 HDS 符合 HDFS API 标准,因此对这些语言工具来说是透明的。因此,例如 Hive 可以访问存储在 HDS 中的数据对象,从而利用基于 Hive 构建的应用程序。像 Apache Spark 这样的分析计算框架也可以透明地操作存储在 HDS 中的数据对象,而无需额外进行向 HDFS 的迁移工作。针对我们的 HDS 服务而言,与 HDFS API 标准的兼容性非常重要,因为现有的应用程序可能已经在 Hadoop 的不同目录文件夹中组织了它们的数据。为了支持层次化命名空间,我们利用 HBase 存储布局结构来索引数据对象。具体来说,数据对象的名称将按字母顺序存储在 HBase 表的逐渐连续的行中。

● 性能仪表板

我们的 HDS 服务提供性能度量框架,用于测量和分解服务运行时的性能。性能监控框架允许应用程序开发人员跟踪处理数据传递请求的每个运行时阶段,从而优化其应用程序的数据访问行为。鉴于我们的 HDS 服务正在生产环境下运行,为系统管理员提供监控 HDS 服务的功能也对性能框架至关重要。

● 安全性和服务部署

发出 HDS 数据传输请求的用户需要经过身份验证。我们目前的身份验证是基于角色的,即不同用户可以被允许调用不同的 HDS RESTful API。例如,用户 ui 可能被授权进行复制、列出和删除,而另一个用户 uj 只能调用复制和列出而不能调用删除。我们还提供昵称映射以便于身份验证。至于 HDS 服务的部署,我们的实现目前依赖于 HBase 协处理器框架。更具体地说,当 HBase 启动时,HBase 还会同时初始化 HDS 的引导过程,从而简化了在大规模计算环境中对 HDS 的管理。

4.4.3.2 分布式 R 语言计算服务(DRS)

DRS 是为 R 语言中的分析用户提供的数据并行计算框架服务,即一个 R 程序指定输入数据集,然后并行处理数据集中的数据对象。值得注意的是,不同数据对象的计算任务是相互独立的。因此,DRS 是 R 的大规模数据并行计算框架。

在这里,我们将一个 DRS “作业” 定义为执行一组独立数据对象的单个 R 程序,每个由 R 程序计算的数据对象称为一个 “任务”,从而形成一个包含一组独立任务的计算作业,这些任务可以同时执行。

我们的 DRS 框架服务基于 Apache YARN,类似于 Hadoop MapReduce 批处理。YARN 构建了一个主/从计算范式,其中主节点处理计算作业内部的工作流程,而从节点负责计算。特别地,在我们的 DRS 框架中,主节点通过将用户提供的不同数据对象分配给从节点来安排计算任务的调度。此外,DRS 中的主节点为任务分配和重新分配计算资源以提高性能。此外,它还在作业计算过程中检测潜在的硬件和软件故障,以便我们的 DRS 服务能够可靠地执行计算。相比之下,每个从节点根据主节点指定的数据对象进行计算,并定期报告实时计算的状态,以便主节点监控从节点是否正在进行计算任务。当一个从节点没有收到要执行的任务时,主节点将重新分配从节点占用的资源(此主题将在后面讨论),或者将资源返回给 YARN。我们注意到,在我们的 DRS 框架中,每个作业都与一个单独的主节点和一组协作的从节点相关联。不同的作业不共享它们的主节点和从节点。

图 4.14 展示了在 DRS 中编程的示例,用户需要指定一个描述用户的 R 程序位置和 R 程序输入数据文件路径的配置文件。此外,R 作业用户需要定义计算资源的规范。给定配置描述后,如果成功,请求的计算节点(即 Hadoop 中的容器)将被分配。HDS 被无缝启用以帮助将指定的数据对象复制到容器中。我们注意到,当容器执行其计算时,由容器需求的每个数据对象都以管道方式并发加载。此外,在定义配置描述的同时,R 语言程序仅需要对其输入数据对象进行适度修改。我们将进一步讨论我们的 DRS 设计和实现特性如下。

● 可扩展性和可靠性

用户通过指定作业的元数据消息来获取 DRS 服务。元数据消息主要包括执行作业所需资源的描述以及作业输入数据对象的位置。在资源方面,我们指的是加入计算作业的计算节点(即容器)的数量。此外,需要指定每个容器节点的主内存空间。如果在 Hadoop 中有这些资源可用,作业的容器数量可以任意定义。在我们的 DRS 框架中,每个容器节点定期向其对应的作业主节点发送心跳状态,以防止作业主节点在监视其从节点时引入相当大的开销。如果任何从节点失败,那么作业主节点将通过请求 YARN 替换失败的从节点为健康节点。我们的设计特别检测了已耗尽其分配的内存空间的从节点的软件故障。这种故障发生是因为用户可能低估了他们需求的内存空间。我们将在稍后讨论我们解决此类故障的方案,以便作业可以成功执行。

● 自适应资源管理

在提交给 DRS 的计算作业中,作业的对应主节点管理资源,即从 YARN 分配的从节点,并将任务分派给从节点。由于内存空间不足,从节点可能无法执行计算任务,也就是说,从节点的规范未定义好。根据我们在半导体制造厂中操作 DRS 的经验,从节点对于计算作业所需的主内存空间的大小具有很大的差异性。在任务集合中,只有少数任务需要大的内存空间,而对于大多数任务来说,小的内存空间就足够了。对于每个从节点指定最大的主内存空间大小是显然低效的,考虑到主内存空间是大数据计算系统中稀缺的资源之一。相比之下,如果我们将每个从节点的内存工作空间规范为最小大小,那么对于大任务来说,从节点可能无法完成其计算,从而无法执行整个作业。为了解决这个问题,我们的 DRS 服务自适应地检测任务的资源需求。准确地说,如果作业主节点观察到从节点由于内存空间不足而失败了其计算,那么主节点将创建一个主内存空间相对较大的从节点。此方法可能会删除现有的从节点以聚合资源。然而,我们的 DRS 框架确保了总资源量与作业用户定义的相同。因此,我们鼓励用户适度指定其任务的资源,以便整个系统能够容纳尽可能多的作业。

● 任务调度

DRS 目前以每批次的方式为作业安排任务。通过将任务调度到从节点计算节点,DRS 指示了与任务相关联的数据对象的位置;一旦从节点接收到数据对象的处理请求以及对象的位置,从节点就获取数据对象,然后使用对象的输入执行计算。值得注意的是,数据对象的位置代表了在 HDS 中的数据对象名称。除了 HDS 外,DRS 还可以操作存储在另一个存储系统(例如 HDFS)中的数据对象。对于计算作业的任务数量 m,我们的 DRS 服务将任务列表均匀地分成 k 个不相交的袋子,即每个任务袋子包含 m/k 个任务。有了 k 个袋子,我们的 DRS 框架可以重叠任务调度和任务计算。准确地说,当 DRS 服务为第 i 个袋子中的任务(在 m/k 个袋子中)计算调度时,它还会分派已分配给从节点的第 (i-1) 个袋子中的任务。在 DRS 中,一个袋子任务的默认任务调度器是最长任务优先,即按照任务袋子中输入数据对象大小的递减顺序安排任务,其中作业中的不同任务均匀分布到不同的袋子中。我们注意到,如果 DRS 作业开发者打算提出自己的专有调度器,则可以替换 DRS 中的任务调度器。但是,对于任何调度器,在我们当前的设计中,任务的元数据存储在 HBase 中。任务的元数据属性包括任务的数据位置、数据对象的大小和访问控制列表。调度程序可以根据需要设计不同的属性。在 HBase 中查询(大量)任务的这些属性需要时间,因此我们的任务调度和计算的管道设计和实现就此结束。

● 性能仪表盘

DRS 支持性能仪表盘,用于监视整个 DRS 框架的运行时指标。该仪表板详细说明了从作业提交到作业计算承诺的执行时间。除了资源分配外,我们的 DRS 框架的执行阶段还包括作业的调度、分派和计算任务。在 DRS 中,不同执行阶段消耗的资源也被测量。这些资源包括分配的容器所花费的时间和占用的主内存空间大小。我们在操作 DRS 时的经验表明,计算作业开发者尤其关注他们的 R 任务经过的时间。

● 多租户

YARN 提供了分层队列机制,允许不同的用户独立地从 Hadoop 中分配资源。例如,Hadoop 可以将 20% 的资源分配给 Spark 作业用户,30% 的资源分配给 MR 作业客户端,剩余的 50% 的资源分配给我们的 DRS 框架。为了同时容纳多个 DRS 作业,我们的 DRS 服务进一步将分配给不同 DRS 作业的资源进行了分区。例如,分配给 DRS 的总资源量的 50% 均匀分成五个 DRS 作业用户,每个用户分配 10%,这样五个 DRS 作业就可以同时并且公平地执行他们的计算。DRS 支持的多个租户可以最大程度地利用 DRS 占用的资源,并最小化任何等待中的 DRS 作业的排队延迟。值得注意的是,为了管理正在进行和待处理的 DRS 作业,DRS 在 ZooKeeper 中关联了每个作业的状态。当一个作业的计算完成时,作业将从 ZooKeeper 中的正在进行的作业队列中移除,并释放给作业分配的资源到 YARN。然后,选择待处理列表中的一些作业,并将其迁移到正在进行的队列以进行执行。DRS 从 YARN 分配资源给这些作业。但是,整个 DRS 服务分配的资源总量仍然在其初始合同下,例如上述示例中提到的资源的 50%。

4.4.4 总结

本节介绍了自 2015 年以来在台湾地区的一家半导体晶圆制造厂中运行的 HDS 和 DRS 基础设施服务。我们讨论了我们的设计需求,并提供了 HDS 和 DRS 的实现。总体而言,HDS 的设计旨在提高易用性,从而降低用户对复杂 Hadoop 软件栈的学习曲线。具体而言,HDS 对于在 Hadoop 生态系统中的数据访问工具(例如 Hive SQL)和计算框架(例如 Spark)是透明的。与原生 HDFS 相比,HDS 在访问存储在 Hadoop 中的数据对象的吞吐量和延迟方面表现良好。

除了 HDS 外,DRS 的设计和实现旨在利用传统 R 语言用户的现有工作和经验。DRS 不仅利用为 R 作业分配的资源来提高作业执行时间,而且智能地、自适应地重新分配资源以提高作业的成功率。特别地,DRS 通过在 Hadoop 分布式计算环境中进行数据并行计算,实现了对 R 用户的透明化。

4.5 结论

本章介绍了工业4.0和智能制造的一些基础核心技术,包括云计算、边缘计算、物联网和大数据基础设施。

在第4.2节中,我们介绍了云计算。首先描述了云计算的基本要素,包括其推动因素、核心相关技术、主要特征和优势。此外,还介绍了云服务模型(即IaaS、PaaS和SaaS),用于分类云计算服务以及特定云提供商的产品和服务。同时,还描述了云部署模型(即公有云、私有云和混合云),以便说明如何利用云计算。还介绍了制造业中的一些云计算应用,包括大数据分析、人工智能应用和CMfg。

在第4.3节中,我们介绍了物联网的基本要素,包括其定义、基础核心技术、潜在应用和带来的好处。我们还提出了一个通用的基于三层云的物联网架构,以展示物联网的工作原理。同时还介绍了两种物联网的消息传输协议(即MQTT和AMQP)以及物联网的物联网。该部分还介绍了边缘计算的基本要素,包括其定义、基础核心元素、潜在应用和带来的好处。还提出了一个带有边缘计算层的基于云的物联网架构,以展示物联网设备如何利用边缘资源进行计算卸载。最后,我们展示了云计算物联网结合边缘计算在车轮加工中的应用。

在第4.4节中,我们介绍了大数据基础设施,包括应用需求、核心软件堆栈组件以及弥合核心软件堆栈组件和应用之间差距的方法。具体地,我们介绍了两个基于Hadoop的大数据基础设施服务,即HDS和DRS,用于台湾地区半导体制造厂。我们描述了设计需求,并描述了HDS和DRS的实现。HDS的设计旨在提高易用性,从而降低用户对复杂Hadoop软件堆栈的学习曲线。DRS的设计和实施旨在利用传统的R语言用户的现有经验。根据本章,读者应能够理解本书中与这些技术相关的内容。

References

1 Advanced Manufacturing National Program Office (AMNPO) (2020). Highlighting manufacturing USA. (accessed 2 November, 2020).

2 Kagermann, H., Wahlster, W., and Helbig, J. (2013) Recommendations for Implementing the Strategic Initiative INDUSTRIE 4.0. Germany: Forschungsunion, acatech.

3 Lee, X.E. (2015). Made in china 2025: a new era for Chinese manufacturing. . ckgsb.edu.cn/2015/09/02/technology/made-in-china-2025-a-new-era-for-chinese-manufacturing/ (accessed 2 November, 2020).

4 Drath, R. and Horch, A. (2014). Industrie 4.0: hit or hype? IEEE Industrial Electronics Magazine 8 (2): 56–58. .

5 Lee, J., Bagheri, B., and Kao, H.A. (2015). A cyber-physical systems architecture for industry 4.0-based manufacturing systems. Manufacturing Letters 3: 8–23. . mfglet.2014.12.001.

6 Burke, R., Mussomeli, A., Laaper, S. et al. (2017). The smart factory: responsive, adaptive, connected manufacturing. (accessed 2 November, 2020).

7 Zhou, H. (2013). The Internet of Things in the Cloud: A Middleware Perspective. UK: CRC Press.

8 Bi, Z., Xu, L.D., and Wang, C. (2014). Internet of Things for enterprise systems of modern manufacturing. IEEE Transactions on Industrial Informatics 10 (2): 1537–1546. .

9 Xu, X. (2012). From cloud computing to cloud manufacturing. Robotics and Computer-Integrated Manufacturing 28 (1): 75–86. .

10 Tao, F., Cheng, Y., Xu, L.D. et al. (2014). CCIoT-CMfg: cloud computing and Internet of Things-based cloud manufacturing service system. IEEE Transactions on Industrial Informatics 10 (2): 1435–1442. .

11 Ren, L., Zhang, L., Wang, L. et al. (2017). Cloud manufacturing: key characteristics and applications. International Journal of Computer Integrated Manufacturing 30 (6): 501–515. .

12 He, W. and Xu, L. (2015). A state-of-the-art survey of cloud manufacturing. International Journal of Computer Integrated Manufacturing 28 (3): 239–250. .

13 Georgakopoulos, D., Jayaraman, P.P., Fazia, M. et al. (2016). Internet of Things and edge cloud computing roadmap for manufacturing. IEEE Cloud Computing 3 (4): 66–73. .

14 Chen, B., Wan, J., Celesti, A. et al. (2018). Edge computing in IoT-based manufacturing. IEEE Communications Magazine 56 (9): 103–109. .

15 Chen, X.W. and Lin, X. (2014). Big data deep learning: challenges and perspectives. IEEE Access 2: 514–525. .

16 Babiceanu, R.F. and Seker, R. (2015). Manufacturing cyber-physical systems enabled by complex event processing and big data environments: a framework for development. Service Orientation in Holonic and Multi-agent Manufacturing, Studies in Computational Intelligence Series 594: 165–173.

17 Bradley, J.M. and Atkins, E.M. (2015). Coupled cyber-physical system modeling and coregulation of a CubeSat. IEEE Transactions on Robotics 31 (2): 443–456. TRO.2015.2409431.

18 Thramboulidis, K. (2015). A cyber-physical system-based approach for industrial automation systems. Computers in Industry 72: 92–102. .

19 Yang, C., Shen, W., and Wang, X. (2018). The Internet of Things in manufacturing: key issues and potential applications. IEEE Systems, Man, and Cybernetics Magazine 4 (1): 6–15. . org/10.1109/MSMC.2017.2702391.

20 Hu, H., Wen, Y., Chua, T.S. et al. (2014). Toward scalable systems for big data analytics: a technology tutorial. IEEE Access 2: 652–687. .

21 Lee, J., Kao, H.A., and Yang, S. (2014). Service innovation and smart analytics for Industry 4.0 and big data environment. Procedia CIRP 16: 3–8. .

22 Fekete, J.D. (2013). Visual analytics infrastructures: from data management to exploration. Computer 46 (7): 22–29. .

23 Dikaiakos, M.D., Katsaros, D., Mehra, P. et al. (2009). Cloud computing: distributed Internet computing for IT scientific research. IEEE Internet Computing 13 (5): 10–13. . org/10.1109/MIC.2009.103.

24 Sadiku, M.N.O., Musa, S.M., and Momoh, O.D. (2014). Cloud computing: opportunities and challenges. IEEE Potentials 33 (1): 34–36. .

25 Sultan, N.A. (2011). Reaching for the “Cloud”: how SMEs can manage. International Journal of Information Management 31 (3): 272–278. .

26 National Institute of Standards and Technology (NIST) (2011). The NIST definition of cloud computing. NIST Special Publication 800-145. (accessed 2 November, 2020).

27 Wright, N. (2019). IaaS vs SaaS vs PaaS: a guide to Azure cloud service types. (accessed 2 November, 2020).

28 Khan, A.R., Othman, M., Madani, S.A. et al. (2014). A survey of mobile cloud computing application models. IEEE Communication Surveys & Tutorials 16 (1): 393–413. . org/10.1109/SURV.2013.062613.00160.

29 Linthicum, D.S. (2017). Making sense of AI in public clouds. IEEE Cloud Computing 4 (6): 70–72. .

30 Hofmann, P. and Woods, D. (2010). Cloud computing: the limits of public clouds for business applications. IEEE Internet Computing 14 (6): 90–93. .

31 Weins, K. (2020). Cloud computing trends: 2020 state of the cloud report. . com/blog/industry-trends/trend-of-cloud-computing-2020/ (accessed 2 November, 2020).

32 Amazon Web Services, Inc (2020). Amazon Web Services (AWS). aws.amazon.com (accessed 2 November, 2020).

33 Microsoft (2020). Microsoft Azure. azure.microsoft.com/en-us/ (accessed 2 November, 2020).

34 Google (2020). Google. cloud cloud.google.com/gcp/ (accessed 2 November, 2020).

35 Microsoft (2020). Azure service bus messaging documentation.

azure/service-bus-messaging/ (accessed 2 November, 2020).

36 Amazon Web Services, Inc (2020). Data lakes and analytics on AWS.

big-data/datalakes-and-analytics/ (accessed 2 November, 2020).

37 Cloud Academy Inc. (2020). Big data analytics on Azure. -

paths/big-data-analytics-on-azure-200/ (accessed 2 November, 2020).

38 Google (2020). Google BigQuery. cloud.google.com/bigquery/ (accessed 2 November, 2020).

39 Srinivasan, S. (2019). Data and analytics on Google cloud platform. (accessed 2 November, 2020).

40 Wang, X.V. and Xu, X.W. (2013). An interoperable solution for cloud manufacturing. Robotics and Computer-Integrated Manufacturing 29 (4): 232–247. .

41 Wu, D., Greer, M.J., Rosen, D.W. et al. (2013). Cloud manufacturing: strategic vision and state-of-the-art. Journal of Manufacturing Systems 32 (4): 564–579. .

42 Wu, D., Thames, J.L., Rosen, D.W. et al. (2013). Enhancing the product realization process with cloud-based design and manufacturing systems. Journal of Computing and Information Science in Engineering 13 (4): 041004. .

43 Huang, H.C., Lin, Y.C., Hung, M.H. et al. (2015). Development of cloud-based automatic virtual metrology system for semiconductor industry. Robotics and Computer-Integrated Manufacturing 34: 30–43. .

44 Hung, M.H., Li, Y.Y., Lin, Y.C. et al. (2017). Development of a novel cloud-based multi-tenant model creation service for automatic virtual metrology. Robotics and Computer-Integrated Manufacturing 44: 174–189. .

45 Feki, M.A., Kawsar, F., Boussard, M. et al. (2013). The Internet of Things: the next technological revolution. Computer 46 (2): 24–25. .

46 Jin, J., Gubbi, J., Marusic, S. et al. (2014). An information framework for creating a smart city through Internet of Things. IEEE Internet of Things Journal 1 (2): 112–121. .

47 Kelly, S.D.T., Suryadevara, N.K., and Mukhopadhyay, S.C. (2013). Towards the implementation of IoT for environmental condition monitoring in homes. IEEE Sensors Journal 13 (10): 3846–3853. .

48 Michahelles, F., Thiesse, F., Schmidt, A. et al. (2007). Pervasive RFID and Near Field Communication technology. IEEE Pervasive Computing 6 (3): 94–97. MPRV.2007.64.

49 Ullo, S.L. and Sinha, G.R. (2020). Advances in smart environment monitoring systems using IoT and sensors. Sensors 20 (11): 3113. .

50 Kulitski, A. (2017). What you need to know about machine-to-machine communication. https:// smart-it.io/blog/machine-to-machine-m2m-how-does-it-work/ (accessed 2 November 2020).

51 Samtani, S., Yu, S., Zhu, H. et al. (2018). Identifying SCADA systems and their vulnerabilities on the Internet of Things: a text-mining approach. IEEE Intelligent Systems 33 (2): 63–73. .

52 Zhou, J., Cao, Z., Dong, X. et al. (2017). Security and privacy for cloud-based IoT: challenges, countermeasures, and future directions. IEEE Communications Magazine 55 (1): 26–35. https:// doi.org/10.1109/MCOM.2017.1600363CM.

53 Wheeler, A. (2007). Commercial applications of wireless sensor networks using ZigBee. IEEE Communications Magazine 45 (4): 70–77. .

54 Gomez, C., Minaburo, A., Toutain, L. et al. (2020). IPv6 over LPWANs: connecting Low Power Wide Area Networks to the Internet (of Things). IEEE Wireless Communications 27 (1): 206–213. .

55 Al-Fuqaha, A., Khreishah, A., Guizani, M. et al. (2015). Toward better horizontal integration among IoT services. IEEE Communications Magazine 53 (9): 72–79. .

56 MQTT.org (2020). MQTT: the standard for IoT messaging. mqtt.org (accessed 2 November 2020).

57 OASIS® (2020). Advanced Message Queuing Protocol (AMQP). ().

58 Object Management Group, Inc (2020). Data Distribution Service (DDS). (accessed 2 November 2020).

59 EDUCBA (2020). AMQP vs MQTT. (accessed 2 November 2020).

60 Guinard, D. and Trifa, V. (2016). Building the Web of Things: With examples in Node.js and Raspberry Pi. New York: Manning Publications.

61 Varghese, B., Reaño, C., and Silla, F. (2018). Accelerator virtualization in fog computing: moving from the cloud to the edge. IEEE Cloud Computing 5: 28–37. .

62 Aazam, M. and Huh, E.N. (2016). Fog computing: the cloud-IoT/IoE middleware paradigm. IEEE Potentials 35 (3): 40–44. .

63 Ren, J., Guo, H., Xu, C. et al. (2017). Serving at the edge: a scalable IoT architecture based on transparent computing. IEEE Network 31 (5): 96–105. .

64 Sun, W., Liu, J., and Yue, Y. (2019). AI-Enhanced offloading in edge computing: when machine learning meets industrial IoT. IEEE Network 33 (5): 68–74. .

65 Patel, P., Ali, M.I., and Sheth, A. (2017). On using the intelligent edge for IoT analytics. IEEE Intelligent Systems 32 (5): 64–69. .

66 Johansson, C. (2020). How edge computing will unleash the potential of IIoT. (accessed 2 November 2020).

67 The Apache Software Foundation (2020). Apache Hadoop. hadoop.apache.org (accessed 2 November 2020).

68 The Apache Software Foundation. (2008). HDFS architecture guide. docs/r1.2.1/hdfs_design.html (accessed 2 November 2020).

69 McKusick, K. and Quinlan, S. (2010). GFS: evolution on fast-forward. Communications of the ACM 53 (3): 42–49. .

70 Ghemawat, S., Gobioff, H.B. and Leung, S.T. (2003). The Google file system. Proceedings of the 19th ACM Symposium on Operating Systems Principles (SOSP’03), Bolton Landing, NY, USA (19-22 Oct. 2003). New York, USA: ACM.

71 The Apache Software Foundation (2020). Welcome to Apache HBaseTM. hbase.apache.org (accessed 2 November 2020).

72 Leavitt, N. (2010). Will NoSQL databases live up to their promise? Computer 43 (2): 12–14. https:// doi.org/10.1109/MC.2010.58.

73 Chang, F., Dean, J., Ghemawat, S. et al. (2006). Bigtable: a distributed storage system for structured data. Proceedings of the 7th USENIX Symposium on Operating Systems Design and Implementation (OSDI’06), Seattle, WA, USA (6-8 Nov. 2006). USA:USENIX Association.

74 The R Foundation (2020). The R project for statistical computing. r-project.org (accessed 2 November 2020).

75 Python Software Foundation (2020). PythonTM. (accessed 2 November 2020).

76 The Samba team (2020). Samba. (accessed 2 November 2020).

77 The Apache Software Foundation (2018). Apache SparkTM. spark.apache.org (accessed

2 November 2020).

78 Zaharia, M., Xin, R.S., Wendell, P. et al. (2016). Apache Spark: a unified engine for big data processing. Communications of the ACM 59 (11): 56–65. .

79 The Apache Software Foundation (2014). Apache HiveTM. hive.apache.org (accessed 2 November 2020).

80 Thusoo, A., Sarma, J.S., Jain, N. et al. (2010). Hive - a petabyte scale data warehouse using Hadoop. Proceeding of the 2010 IEEE 26th International Conference on Data Engineering (ICDE 2010), Long Beach, CA, USA (1-6 Mar. 2010). USA: IEEE.

81 Ihaka, R. and Gentleman, R. (1996). R: a language for data analysis and graphics. Journal of Computational and Graphical Statistics 3 (5): 299–314.

82 Hsiao, H.C., Chung, H.Y., Shen, H. et al. (2013). Load rebalancing for distributed file systems in clouds. IEEE Transactions on Parallel and Distributed Systems 24 (5): 951–962. .

83 The Apache Software Foundation (2020). Apache Hadoop YARN. (accessed 2 November 2020).

84 Vavilapalli, V. K., Murthy, A. C., Douglas, C. et al. (2013). Apache Hadoop YARN: yet another resource negotiator. Proceedings of the 4th ACM Symposium on Cloud Computing (SOCC’13), Santa Clara, CA, USA (1-3 Oct. 2013). New York, USA: ACM.

85 Dean, J. and Ghemawat, S. (2004). MapReduce: simplified data processing on large clusters. Proceedings of the 6th USENIX Symposium on Operating System Design and Implementation (OSDI’04), San Francisco, CA, USA (6-8 Dec. 2004). USA:USENIX Association.

86 The Apache Software Foundation (2020). Apache ZooKeeperTM. zookeeper.apache.org (accessed 2 November 2020).

87 Hunt, P., Konar, M., Junqueira, F. P. et al. (2010). ZooKeeper: wait-free coordination for Internet-scale systems. Proceedings of the 2010 USENIX Annual Technical Conference (USENIX ATC’10), Boston, MA, USA (23-25 Jun. 2010). USA:USENIX Association.

88 Tsai, C.P., Hsiao, H.C., Chao, Y.C. et al. (2018). Bridging the gap between big data system software stack and applications: the case of semiconductor wafer fabrication foundries. Proceeding of the 2018 IEEE International Conference on Big Data, Seattle, WA, USA (10-13 Dec. 2018). USA: IEEE.

89 Adve, S.V. and Gharachorloo, K. (1996). Shared memory consistency models: a tutorial. Computer 29 (12): 66–76. .

90 Hsiao, H.C. and Chang, C.W. (2013). A symmetric load balancing algorithm with performance guarantees for distributed hash tables. IEEE Transactions on Computers 62 (4): 662–675. https:// doi.org/10.1109/TC.2012.13.

91 Hsiao, H.C., Liao, H., Chen, S.T. et al. (2011). Load balance with imperfect information in structured peer-to-peer systems. IEEE Transactions on Parallel and Distributed Systems 22 (4): 634–649. .

92 Mitzenmacher, M. and Upfal, E. (2005). Probability and Computing: Randomized Algorithms and Probabilistic Analysis. Cambridge: Cambridge University Press.

93 The Apache Software Foundation (2020). Hadoop archives guide. current/hadoop-archives/HadoopArchives.html (accessed 2 November 2020).

94 ASF Infrabot (2019). Hadoop SequenceFile. HADOOP2/SequenceFile (accessed 2 November 2020).

95 The Apache Software Foundation (2012). Apache HBase coprocessor introduction. . apache.org/hbase/entry/coprocessor_introduction (accessed 2 November 2020).

标签: #一个算法是由什么组成 #一个算法是由什么组成的 #一个算法是由什么组成的呢