批处理(Batch processing)是一种计算机技术,用于将一系列命令或任务自动化地按顺序执行。在批处理中,用户可以编写一个脚本文件,其中包含一系列需要执行的命令,然后使用批处理解释器(如Windows中的cmd.exe)运行这个脚本文件。批处理可以用于许多不同的任务,包括文件操作、系统配置、软件安装和升级等。通过批处理,用户可以一次性运行多个命令,而不需要手动逐个输入。这可以提高效率并减少人工错误。
现代批处理系统提供了一系列功能,团队能够更轻松地管理大量数据。 IT 部门的多样化、分布式的和动态化,使得批处理不再依赖于同构大型机和本地数据中心,而是跨混合环境运行。
发展历史
1890 年,Hollerith开发了Herman Hollerith系统用于处理来自美国人口普查的数据。手动打孔后,卡被送入机电设备并由机电设备读取。Hollerith 为他的发明申请了“电子制表机”的专利,后来加入了一群其他发明家和投资者,成立了计算制表记录公司 (CTR),该公司最终成为国际商业机器公司或 IBM。
1945年,第一台计算机问世。在早期,操作系统需要用户将穿孔纸带装入纸带传输机,然后启动它们将纸带上的数据和程序输入计算机,最后取出计算结果。然而,这种人工操作的方式严重降低了计算机资源的利用率。为了解决人机矛盾,后续引入了通道技术、缓冲技术和脱机I/O方式来优化操作过程。
20世纪50年代,最早的操作系统是批处理系统,也称为单道批处理系统(Single-Stream Batch Processing System)。这种操作系统通过将一批作业一次性提交给计算机执行,从而减少了人们手动操作的工作量。批处理系统采用了类似于队列的机制,将多个作业按照提交的先后顺序依次执行。这种系统的目的是减少作业间转换时的人工操作,从而减少CPU的等待时间。
1964年4月7日,IBM年宣布推出一款大型计算机系统家族System/360,并在1965年至1978年间陆续交付此类大型机。该系统采用多道程序设计技术,能够同时处理多个作业,从而提高了CPU和I/O设备的利用率。在S/360系统中,用户提交的作业被放入作业队列中,由操作系统按照一定的调度策略进行执行。每个作业都会被分配一个时间片,时间片内CPU会切换到下一个作业执行。当一个作业的时间片用完后,它就会被移出队列,等待下一次的调度。
1970年6月,IBM发布Syste/370的两个型号:155和165。该系统还引入了虚拟存储的概念。虚拟存储技术可以将内存和外部存储器中的程序和数据统一管理,使得程序和数据可以在内存和外部存储器之间进行动态的迁移。这种技术提高了内存的利用率,同时也增加了系统的灵活性。
20世纪70年代初,随着计算机进入大规模集成电路时代,计算机性能迅速提高,价格不断下降。实时操作系统(RTOS)应运而生。RTOS主要用于过程控制及实时信息处理,具有实时响应能力,可以满足各种时间要求。在RTOS中,任务调度和管理是系统的重要功能之一,系统需要根据任务的重要性和紧急程度来决定任务的执行顺序和优先级。同时,系统还需要考虑资源分配和任务调度的问题,以确保任务能够按时完成。
1973年IBM的OS/360操作系统引入了作业控制语言(Job ctrl Language,JCL)。JCL是一种描述作业运行参数和文件处理的语言,它使得程序员能够更方便地控制批处理作业。
1980 年代末和 1990 年代初,BatchPipes 版本 1作为一种加速 MVS/欧洲航天局 批处理的技术被开发。1997 年,BatchPipes 的功能被集成到一个更大的 IBM 产品 SmartBatch 中。
在20世纪60年代,随着计算机技术的不断进步,批处理系统变得更加强大和灵活。新的操作系统和工具出现,如unix的壳层脚本和dos的批处理脚本。
1980年代末至1990年代初,可视化用户界面(GUI)的出现使得批处理变得不再那么显眼。然而,许多脚本语言仍然在后台运行,并承担着自动化任务的重要角色。
20世纪90年代,分布式操作系统理论出现,目前比较出名的包括QNX、贝尔实验室九号计划等。在分布式操作系统中,批处理是将大量数据或任务一次性提交给系统,由系统按照一定的调度策略进行并行处理。这种处理方式可以充分利用分布式系统的资源优势,提高处理效率。
2000年以后虚拟化和云计算的兴起使得批处理再次受到关注。现代操作系统和云服务提供了各种自动化工具和任务调度器,使得批处理作业能够更高效地执行。
2006年3月份Hadoop正式推出,Hadoop是一个由Apache基金会所开发的分布式系统基础架构。在Hadoop中,批处理主要操作大容量静态数据集(有边界数据),并在计算结束后返回结果。。
2007年,埃森哲与SpringSource共同提出的,基于Spring Batch架构的批处理框架。该框架下的批处理主要是针对大规模数据的处理,以优化和提高处理性能。它提供了丰富的功能和工具,使得开发者可以更方便地编写批处理程序。
2010年,Apache Spark通过BSD许可协议开源发布。Apache Spark框架下的批处理主要基于其RDD(Resilient Distributed Datasets)模型。2013年捐赠给apache软件基金会并切换开源协议到Apache2.0,2014年2月成为Apache的顶级项目。
基本工作原理
输入和输出处理:批处理脚本可以接受输入和生成输出。输入可以来自命令行参数、用户交互、文件等。输出可以通过显示在命令提示符窗口、输出重定向至文件、发送电子邮件等方式呈现。
自动化和脚本化执行:批处理的核心目的是自动化执行一系列操作。通过编写批处理脚本,可以将一组任务和命令整合到一个文件中,然后按需求执行。这种自动化和脚本化执行方式可以提高工作效率和减少手动重复操作。
大规模数据处理:批处理脚本可以用于处理大规模数据。通过循环和条件判断,可以对数据进行逐行处理、筛选、排序等操作。批处理还可以与其他工具和编程语言结合使用,以便处理更复杂的数据操作。
批处理系统的组成部分:批处理系统由多个组成部分构成。
工作流程整理:批处理的工作流程可以简单概括为以下几个步骤。
批处理操作系统
批处理操作系统 (BatchOS) 是一种开源操作系统,旨在按顺序管理多个作业。它基于 CentOS Linux 发行版,并根据 GNU 通用公共许可证获得许可。Batch 操作系统旨在支持广泛的批处理任务,包括数据仓库、OLAP 和数据挖掘、大数据处理、数据集成和时间序列分析。
优势:
缺陷:
与其他计算模型的对比:
在特定场景下的优势和局限性:
相关技术
批处理作业流水线:批处理作业流水线是一种将批处理作业划分成多个连续的阶段,并通过将它们连接起来形成一个流程来加快作业执行效率的技术。每个阶段负责接收输入数据(通常是之前阶段的输出数据),进行一系列处理,并生成输出数据供下一个阶段使用。这种流水线结构可以实现并行执行,充分利用计算资源,从而提高整个作业的处理速度。此外,批处理作业流水线还可以提供更好的可操作性和故障容许度,使作业的执行变得更加灵活和可靠。通过合理划分和优化每个阶段的任务,批处理作业流水线能够有效地管理作业流程,从而实现高效、自动化的批处理作业处理。
分布式批处理:分布式批处理是一种利用多台计算机协同工作,同时处理单个或多个批处理作业的技术。它将作业划分成多个子任务,分发给多个计算节点并行处理,以充分利用计算和存储资源,并提高批处理的处理速度和效率。分布式批处理能够适应较大的数据集和计算任务,实现任务的快速处理,同时提供高可靠性和故障容许度保证。此外,分布式批处理还可以通过动态伸缩计算资源的方式,自适应地应对不同的工作负载,从而更好地满足批处理作业处理的需求。
作业调度:批处理的作业调度是一种管理和控制批处理作业执行顺序和优先级的过程。作业调度器负责根据作业的特定需求和系统资源的可用性,制定合理的调度策略。通过作业调度,可以确保作业按照正确的顺序执行,最大程度地提高系统的吞吐量和效率。
资源管理:批处理的资源管理是指对计算资源的有效分配和利用,以提高批处理作业的执行效率和系统的整体性能。在批处理过程中,File Explorer负责监控和管理系统所涉及的计算资源,如处理器、内存、存储等,并根据作业需求和系统负载情况进行合理分配。
并行批处理:并行批处理是一种利用多个处理单元同时执行批处理作业的方法。它通过将一个大型作业划分为多个子任务,并在多个处理单元上并行执行,以提高批处理作业的处理速度和效率。在并行批处理中,作业调度器和资源管理器负责将作业划分为多个独立的子任务,并将它们分配给不同的处理单元。每个子任务在各自的处理单元上并行执行,通过共享或独立的资源,如CPU、内存和存储等,以完成各自的处理任务。
这些技术和方法可以帮助批处理系统实现作业的高效处理、资源的有效利用,以及系统的稳定性和可靠性。根据具体需求和系统规模,可以选择适合的技术组合和实现方式来构建自己的批处理系统。
批处理的类别与常用命令
批处理,也称为批处理脚本。批处理就是对某对象进行批量的处理。批处理文件的扩展名为bat。目前比较常见 的批处理包含两类:dos批处理和PS批处理。
DOS批处理
DOS批处理是在DOS操作系统下使用的一种批处理技术。DOS(Disk Operating System)是早期的personal computer操作系统,它的批处理功能允许用户通过编写一系列的DOS命令,以批处理文件的形式批量执行任务和操作。DOS批处理文件通常使用扩展名为".bat"的文件,并采用简单的文本编辑器编写。这些批处理文件可以包含一系列的DOS命令,如目录操作、文件操作、环境变量的设置和使用、条件语句、循环语句等。通过编写dos批处理文件,用户可以实现自动化执行多个DOS命令,从而简化重复性的操作,并提高工作效率。例如,可以使用DOS批处理文件批量重命名文件,批量复制或移动文件,批量进行文件搜索和替换等。
PS批处理
PS批处理则是基于微软强大的PowerShell的,用来批量处理一些任务的脚本。与DOS批处理相比,PS批处理提供了更强大和灵活的功能,如脚本编写、任务调度、进程管理等。它广泛应用于系统管理、网络管理、服务器管理等领域。PowerShell的批处理可以使用.ps1扩展名的脚本文件编写。PowerShell支持更复杂的语法和更强大的命令集,包括脚本控制、流程控制、条件语句、循环语句、变量和函数的定义等。
批处理文件
批处理文件是一种脚本文件,适用于DOS、OS/2以及Microsoft Windows等操作系统。这种文件由一系列命令组成,由命令行解释器执行,并以纯文本文件的形式存储。批处理文件具有灵活的控制流程,可以包含交互式解释器接受的任何命令,利用条件分支和循环构造(如IF、FOR和GOTO标签)。尽管“批处理”一词意味着“非交互式执行”,但批处理文件实际上可用于处理各种任务,而不仅限于批量数据处理。类似于作业控制语言(JCL)、DCL以及其他大型机和小型机系统上的系统,批处理文件允许用户设置脚本来自动执行常规任务,从而简化工作流程。在运行批处理文件时,shell程序(通常为COMMAND.COM或cmd.exe)会读取文件并逐行执行其中的命令。此外,在类Unix操作系统(如Linux)中,还有一种类似但更灵活的文件类型,称为shell脚本。
当涉及到批处理的重要标准和技术规范时,有几个关键的标准和规范在实践中被广泛应用:
作业控制语言(Job 监察 Language,JCL):JCL 是 IBM 主要使用的批处理作业控制语言。它提供了一套指令和语法规则,用于定义作业的执行步骤、资源需求、作业间依赖关系等。JCL 还包括了特定的关键字和参数,以控制作业执行的顺序、条件和优先级。
公共工作流规范(Common Workflow Language,CWL):CWL 是一种用于描述和执行科学和工程工作流的开放标准。它提供了一种通用的描述语言,用于定义工作流中的任务和它们之间的关系。CWL 支持并行执行和分布式计算,可以在不同的计算平台上实现批处理作业的自动化和标准化。
可移植操作系统接口(POSIX):POSIX 是一组标准,用于定义操作系统接口,旨在提高程序的可移植性。它包括了对文件、进程、信号等操作的规范,为批处理系统提供了一致的接口和行为。
另外,与批处理系统相关的还有一些信息技术的标准,如GB/T 39788-2021《系统与软件工程 性能测试方法》、GB/T 38633-2020《信息技术 大数据 系统运维和管理功能要求》等。这些标准都是为了提高批处理系统的性能和管理效率而制定的。
批处理工具
批处理工具是一种计算机程序,用于批量执行一系列预定义的命令或操作。它通常用于自动化重复性任务或批量处理大量文件。
批处理框架
Spring Batch是一种用于处理大规模数据和执行批量作业的软件工具或平台。以下是几个常见的批处理框架:
Apache Hadoop:Apache Hadoop是一个开源的分布式计算框架,适用于大规模数据处理。它使用简单的编程模型,为用户提供了可靠和可扩展的解决方案。Hadoop的核心架构由两个主要模块组成:hdfs和MapReduce。hdfs是一个分布式文件系统,能够存储和管理大数据,同时具备高度故障容许度和高吞吐量的特点。而MapReduce则是一种编程模型,用于处理和生成大数据集。通过将大数据分解成许多小任务,并分配给集群中的不同节点进行处理,MapReduce能够实现高效的并行计算,大大提高了数据处理的效率。
Apache CXF Spark:Apache Spark是一个开源的大数据处理框架,由加利福尼亚大学伯克利分校的AMPLab于2009年开发并逐渐成为apache的开源项目之一。它提供了一个全面、统一的编程模型,支持多种语言如Java、Scala、Python和R,使得开发者能够便捷地处理包括批处理数据、实时流数据在内的各种数据集。与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark具有显著的优势。首先,由于其内存计算的特性,Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。其次,Spark自带了超过80个高阶操作符集合,使得开发者可以快速地进行大规模数据处理和分析。
Apache Flink:Apache Flink是一个开源的流处理和批处理的统一分析引擎。它能够支持无界和有界的数据流上的有状态计算,对于事件驱动的应用有着很好的支持。flink的主要特性包括批流一体化、精密的状态管理、事件时间支持以及精确一次的处理等。Flink在内存管理上做的很好,其智能内存管理可以有效防止过度分配或不足的问题,使得开发者可以专注于编写应用程序,而不需要过多地关注内存管理问题。此外,Flink社区也提供了丰富的连接器和扩展,例如flink-connectors和flink-contrib等,帮助用户更好地使用Flink进行数据处理。
Apache Storm:Apache Storm是一个开源的分布式实时计算系统,它能够处理海量数据,尤其擅长处理实时数据流。Storm可以保证数据的可靠性,并支持任意编程语言,使得开发者可以根据自己的需求选择最适合的开发语言。此外,Storm的数据不经过磁盘,所有数据处理都在内存中进行,这大大提高了数据处理的速度和效率。为了提高性能、稳定性和故障容许度,apache Storm团队改进代码并修复重要的错误。例如,在Storm 2.6.0版本中,他们移除了一些不再需要的外部组件/模块以提高系统的运行效率。
Apache Beam:Apache Beam,原名谷歌 DataFlow,是Google在2016年贡献给Apache基金会Apache Beam。它的主要目标是统一批处理和流处理的编程范式,使得无论是无限数据、乱序数据还是Web数据,都能用同一套模型进行处理。Beam提供了一个软件开发工具包,用于定义和构建数据处理管道以及执行这些管道的运行程序。Apache Beam并不是一个流式处理平台,而是一个统一的编程框架。它帮助用户创建自己的数据处理流水线,实现可以运行在任意执行引擎之上的批处理和流式处理任务。目前,支持Apache Beam的分布式处理后端包括:Apache Apex, Apache Flink, Apache Gearpump (incubating), Apache Samza, Apache Spark, 谷歌 Cloud Dataflow以及Hazelcast Jet等。
应用领域
未来展望
参考资料
Batch Processing: An Introduction.bmc.2023-11-06
批处理和工作负载编排:概述.ActiveBatch.2023-11-06
IBM Documentation.IBM.2023-11-05
Batch Operating System.javatpoint.2023-11-23
最快“芯” 引领史上最经典大型主机[图].中关村在线.2023-11-22
最快“芯” 引领史上最经典大型主机[图].中关村在线.2023-11-22
下载 FreeRTOS.freertos.2023-11-22
IBM System/360 Operating System: Job Control Language.计算机历史.2023-11-05
BatchPipes.Jpaulmorrison.2023-11-13
Evolution Of Unix / Linux Shells.Unixmen.2023-11-05
First cmd / DOS batch script example.wishmesh.2023-11-05
The Basics of IT Virtualization.bmc.2023-11-05
用户指南.hadoop.2023-11-22
Spring Batch 批处理框架,真心强啊!!.博客园.2023-11-22
什么是 Apache Spark?.AWS.2023-11-22
Batch Script - Input / Output - GeeksforGeeks.geeksforgeeks.2023-11-23
如何使用 Windows 批处理文件命令自动执行.makeuseof.2023-11-23
Batch Processing: Well-defined Data Pipelines.openbridge.2023-11-23
What is a batch process in chemical engineering?.studybuff.2023-11-23
Guide to Modern Batch Processing Advantages and Tools.xenonstack.2023-11-06
Batch Script – Logging.geeksforgeeks.2023-11-23
BatchProcessingOperatingSystem.GeeksforGeeks.2023-11-05
Summarize The Distinction Between Batch Processing And Interactive Processing.XOLSAB.2023-11-23
流处理与批处理:须知.confluent.2023-11-23
批处理:按计划或定期批处理处理大量数据.talent500.2023-11-23
What are advantages and disadvantages of batch processing systems.itrelease.2023-11-23
Distributed batch processing .subscription.2023-11-23
Job Scheduling and Workload Automation.BMC.2023-11-23
Manage Batch accounts and quotas with the Batch Management client library for .NET.Microsoft.2023-11-23
Scaling and Parallel Processing.Spring.2023-11-23
Basics of Batch Scripting.geeksforgeeks.2023-11-23
DOS Batch - File Examples.dostips.2023-11-23
DOS BATCH FILE TUTORIAL.chebucto.2023-11-23
The Ultimate, Complete List of MS-DOS Commands.lifeware.2023-11-07
从 Powershell 脚本运行 BAT 文件.Deltstack.2023-11-06
What is PowerShell?.Microsoft.2023-11-07
使用批处理文件.Microsoft.2023-11-13
Unix Tip: Use your Unix scripting skills to write a batch file.computerworld.2023-11-13
IBM Documentation.IBM.2023-11-23
All about the 2023 CWL Conference.commonwl.2023-11-23
A Guide to POSIX.baeldung.2023-11-23
标准号:GB/T 38633-2020.国家标准全文公开系统.2023-11-23
标准号:GB/T 39788-2021.国家标准全文公开系统.2023-11-23
What can I do to resolve this?.SNOWPLOW.2023-11-06
How to Run a Batch File from a PowerShell Script?.Sharpoint.2023-11-06
8 ways to speed up your Ansible playbooks.Red Hat.2023-11-06
Jenkins : Building a software project.wiki.jenkins-ci.2023-11-06
SaltStack: schedule highstate in batch.serverfault.2023-11-06
Control-M 概述.Mediuum.2023-11-06
CA 工作负载自动化 - Autosys.c-sharpcorner.2023-11-06
Apache Hadoop.IBM.2023-11-23
Hadoop 文档.hadoop.2023-11-23
SparkSQL&DataFrames.spark.2023-11-23
用于大规模数据分析的统一引擎.spark.2023-11-23
Apache Flink ®.Flink.2023-11-23
Community & Project Info #.flink.2023-11-23
Apache Storm.storm.2023-11-23
版本: 2.6.0.apache.2023-11-23
Beam Overview.beam.2023-11-23
Apache Beam Features.beam.2023-11-23
什么是批处理?.AWS.2023-11-05
What is Batch Automation? A Comprehensive Guide 101.Hevo.2023-11-13