作業上下文是指計算機中作業被處理器調度執行時作業的有關信息,實際上也是作業執行活動全過程的靜態描述,作業是一個比程式更為的概念,它通常由程式、數據和作業說明書組成。作業上下文一般包括程式,數據,作業說明書及作業執行過程中的一些信息。
基本介紹
- 中文名:作業上下文
- 外文名:Job Context
- 學科:計算機科學
- 定義:作業執行時的有關信息
- 意義:提高效率、方便以後執行
- 套用:作業系統、雲平台
- 實現方法:編程接口
定義,意義,編程實現接口,
定義
作業上下文是指計算機中作業被處理器調度執行時作業的有關信息,實際上也是作業執行活動全過程的靜態描述,作業是一個比程式更為的概念,它通常由程式、數據和作業說明書組成,在批處理系統中,是以作業為基本單位從外存調入記憶體的。作業上下文一般包括程式,數據,作業說明書及作業執行過程中的一些信息。
意義
在計算機,CPU資源是很寶貴的,有很多作業需要處理,所以計算機不可能一直都在處理一個作業,為了能處理更多的作業,需要對作業進行調度,作業調度的主要功能根據作業控制塊中的信息審查系統是否滿足用戶作業的需求,以及按照一定的算法,從外存的後備佇列中選取一些符合要求的作業調入記憶體。作業上下文保存了作業執行的信息,當一個作業沒有完成時,使作業下次再被調度運行時不必從頭開始,可以從上次執行的地方繼續執行,提高系統資源的利用率。
編程實現接口
/** * 作業上下文. * * <p> * JobContext 接口主要定義一些配置參數的獲取接口,這些配置參數都是通過 {@link JobConf} 設定的 * </p> */public interface JobContext {
/** * 獲取作業配置. * * 在 {@link JobConf} 設定的配置參數可以從作業配置中讀取 * * <p> * 注意:這裡只能get配置參數,而不能set配置參數 * </p> * * @return 作業配置 */ public JobConf getJobConf();
/** * 獲取實際運行的{@link Reducer}數, 對於Map-only的作業,Reduce個數為0. * * 如果通過{@link JobConf#setNumReduceTasks(int)}設定過{@link Reducer}數,則返回值與其相同; * 否則,為Map Task數的1/4. * 對於pipeline模式的job,返回下一級節點的reducer數目,如果為最後一個reduce節點,則返回該節點的數目, * 如果只有map節點,則返回0 * * @return 實際的{@link Reducer} 數. * @see JobConf#getNumReduceTasks() */ public int getNumReduceTasks();
/** * 獲取Map輸出到Reduce的Key類型 * * @return Map輸出到Reduce的Key類型 * @see JobConf#setMapOutputKeySchema(Column[]) */ public Column[] getMapOutputKeySchema();
/** * 獲取Map輸出到Reduce的Value類型 * * @return Map輸出到Reduce的Value類型 * @see JobConf#setMapOutputValueSchema(Column[]) */ public Column[] getMapOutputValueSchema();
/** * 獲取 {@link Mapper} Java類 * * @return {@link Mapper} Java類 * @throws ClassNotFoundException * @see JobConf#setMapperClass(Class) */ public Class<? extends Mapper> getMapperClass() throws ClassNotFoundException;
/** * 獲取 Combiner Java類 * * @return Combiner Java類(Reducer實現) * @throws ClassNotFoundException * @see JobConf#setCombinerClass(Class) */ public Class<? extends Reducer> getCombinerClass() throws ClassNotFoundException;
/** * 獲取 {@link Reducer} Java類 * * @return {@link Reducer} Java類 * @throws ClassNotFoundException * @see JobConf#setReducerClass(Class) */ public Class<? extends Reducer> getReducerClass() throws ClassNotFoundException;
/** * 獲取Map到Reduce輸出的Key的分組列,用於對Key/Value記錄按Key進行分組. * 如果用戶沒有設定分組列,則默認會使用key的所有列用於分組. * * @return 分組列 * @see JobConf#setOutputGroupingColumns(String[]) */ String[] getGroupingColumns();}