Hadoop1.2.1学习之Job建和提交源代码分析

作者: 云计算机网 分类: 云计算知识 发布时间: 2016-10-01 17:22

在Hadoop中,MapReduce的Java作业通常由编写Mapper和Reducer开始,接着创建Job对象,然后使用该对象的set方法设置Mapper和Reducer以及诸如输入输出等参数,最后调用Job对象的waitForCompletion(true)方法提交作业并等待作业的完成。尽管使用了寥寥数语就描述了作业的创建和提交,但实际情况要复杂的多,本篇文章将通过分析源代码来深入学习该过程。

通常使用public Job(Configuration conf, String jobName)创建Job作业对象,都会指定作业名称,hadoop代码只是将jobName设置为参数mapred.job.name的值。除了设置作业名称外,Job的构造函数还会使用Configuration对象初始化org.apache.hadoop.mapred.JobConf对象conf,以及使用UserGroupInformation.getCurrentUser()获取当前用户ugi。其中JobConf是描述MapReduce作业的主要接口,包括设置作业名称在内的许多方法都是由该类完成的。UserGroupInformation类用包含了用户和组的信息,该类封装了JAAS(JavaAuthentication AuthorizationService,Java认证和授权服务),并提供方法确定用户名和组。

当创建了Job对象后通常会设置Mapper和Reducer,比如job.setMapperClass,正像上面提到的,该操作实际是由JobConf对象完成的,具体代码如下,其它的设置方法类似:

public void setMapperClass(Class<? extends Mapper> cls) throws IllegalStateException {    ensureState(JobState.DEFINE);    conf.setClass(MAP_CLASS_ATTR, cls, Mapper.class);}

在设置完作业运行需要的参数后,执行job.waitForCompletion(true)向集群提交作业并等待作业执行完成,其中的boolean类型的参数用于决定是否向用户打印作业的执行进度。该方法的具体代码如下:

public boolean waitForCompletion(boolean verbose) throws IOException, InterruptedException,ClassNotFoundException {    if (state == JobState.DEFINE) {      submit();    }    if (verbose) {      jobClient.monitorAndPrintJob(conf, info);    } else {      info.waitForCompletion();    }    return isSuccessful();}

当新创建一个作业时,该作业的JobState state = JobState.DEFINE,所以上面的代码中会执行submit方法,当在submit返回后会根据参数verbose为true或false执行不同的方法。现在具体submit的实现:

public void submit() throws IOException, InterruptedException, ClassNotFoundException {    ensureState(JobState.DEFINE);    setUseNewAPI();//默认使用新版本中的API,除非显示设置了老版本的API        // Connect to the JobTracker and submit the job    connect();    info = jobClient.submitJobInternal(conf);    super.setJobID(info.getID());    state = JobState.RUNNING;}

在submit中,先确认Job的state为JobState.DEFINE,并最后在将作业提交后设置为JobState.RUNNING。connect方法用于打开到JobTracker的连接,该方法的代码为:

private void connect() throws IOException, InterruptedException {    ugi.doAs(new PrivilegedExceptionAction<Object>() {      public Object run() throws IOException {        jobClient = new JobClient((JobConf) getConfiguration());            return null;      }    });} 
  • 浙江大学陈文智:校园安全云,核心是要保护学校信息资产

    陈文智 浙江大学信息技术中心主任

    高校网络信息安全现状

      高校网络信息安全为什么重要?实际上数据是一种资产,资产即猎物,数据自然也就成为猎物之一。特别在教育行业中,被攻击的目标主要是高校的各种数据。

      教育行业客观存在的困难和需求都有哪些?一是安全意识薄弱,对安全不重视、安全培训少,资产底数不清晰。二是在落实安全政策要求方面不足。三是应急响应能力弱,在面对攻击和重大节日保障时不足。四是技术储备不足,缺少专职的网络安全人员,很多信息安全人员都是曾经从事网络的人员转型过去;安全技术更新快,而数据恢复能力差。五是安全人才奇缺,全球目前对网络信息安全的人才缺口大概为300万。

      在这样的背景下,浙江大学希望建立一个人机共生的办学体系--网上浙大,建立新式办学空间。在实际建设过程中,浙江大学的信息资产非常复杂,首先是基数大,校区跨地域、人员多,网络计划由过去的1万个AP改造成4万个AP,每日收发的邮件接近200万封,数据中心、云盘需要有几P的存储空间提供给师生。其次,系统繁多,包括境外黑客攻击多、多方监管通报多、孤站僵尸网站多,缺少专业维护,缺少基础防护。面对这样的现状,具体要怎么做?

    安全大数据和态势感知技术

      从技术角度来看,大数据与人工智能技术的发展为综合分析判断安全态势提供了可能。高校在运维管理过程中会出现大量的数据,包括安全类、管理类、流量、基础数据等,数据来源多且结构复杂,而价值密度低。大数据与人工智能技术使海量数据的处理成本降低到了可接受的程度,能通过大量低价值数据的挖掘,获得有意义的信息。因此,需要通过大数据和人工智能技术把数据价值挖掘出来。

      以安全大数据关联分析为例,以全流量为线索,可以解决以往分析难以发现整个攻击链的问题,做到风险挖掘、联动防护,既能够提供决策支持,进行拦截+阻断等,甚至能够对关联威胁的攻击者进行溯源分析,查清攻击者的过去、团队、目标,同时可以对自己的资产进行溯源,摸清资产的安全状态,包括各种漏洞、脆弱性,为今后的防范起到保护作用。

      网络安全态势感知。态势感知(SituationAwareness)指在特定时空下对动态环境中各元素或对象的觉察、理解以及对未来的预测。它分成三个过程,态势感知察觉,态势感知理解,态势感知应用。

      第一阶段,网络安全态势察觉,它可从海量的安全数据中,包括安全设备、日志、主动扫描、分布式的各种资源收集、分辨出异常活动,发现攻击事件与安全漏洞,为后续理解、评估异常做准备。

      第二阶段,网络安全态势理解,根据识别的异常活动,利用安全态势模型、大数据统计、机器学习和数据挖掘等各种技术,推断攻击意图。

      第三阶段,网络安全态势应用,评估已有攻击行为的危害,预测可能要发生的攻击行为的潜在威胁。

      随着网络规模和应用的迅速扩大,网络安全威胁不断增加,单一利用某种技术,很难解决所有问题,所以必须把态势感知技术,同大数据、人工智能等各种技术结合在一起,从整体上动态地反映出安全的各种状况,对网络安全的发展趋势进行预测和预警,然后迅速响应和处置,从而提高整个校园的网络安全防护能力。

    安全实践探索

    构建浙江大学校园安全运营中心

      建立浙江大学校园安全运营中心,以保护信息资产为核心目标,通过安全事件的收集、业务流量分析、重大事件、IT基础设施数据的输入等,能够做到安全事件的监控服务、Web应用防护、安全预警服务、安全应急响应、风险合规管理等,做到发现、响应、决策、处置、恢复,实现7×24小时安全运营服务。

      1.安全运营中心的体系框架。围绕运营中心的六大核心职能,监测预警、安全防护、应急响应、态势感知、运行监控和教育培训,基于大数据平台,建设安全态势分析系统、安全应急管理系统、事件通报预警系统和追溯系统。

      2.基于安全大数据的运行模式框架。通过主动发现,监测资产、指纹、漏洞、入侵事件、攻击行为、异常行为等,做到监测预警数据提供给云端防护,使得云端防护能够更精确,从而实现主动防御。

    浙江大学陈文智:校园安全云,核心是要保护学校信息资产

      图1 基于安全大数据的运行模式框架

      3.构建动态的安全运营保障能力。通过安全运维标准、运维制度流程、技术操作流程等规范化支撑,构建检测、响应、预测、防护四大能力。

    #p#分页标题#e#

      4.基于安全大数据的分析业务架构。从资产安全状态的识别和系统漏洞识别分析,包括系统漏洞、Oday漏洞、已防护漏洞等;在分析的基础上对攻击事件进行深度分析,包括异常访问行为深度分析、攻击事件趋势分析,攻击事件、攻击者的态势分析等;最终提供安全事件的各种处置方法。

      5.安全运营服务--通报预警与应急响应。态势感知通报预警平台,主要包括:来自外部安全大数据中心的感知数据,来自内部安全大数据中心的事件数据与威胁数据,重要信息系统、安全监测集群,出口流量探针,第三方安全数据等。通过对安全事件和威胁进行分析预警,检测出相应的警报,通过终端监控,以短信、邮件、APP通知等方式发送预警,再把通知处理的事件反馈回来,形成一个闭环。

    让安全可视化,打造浙大安全云

      浙大的安全云是基于阿里云的飞天底座,私有化部署在浙大。基于安全的考虑,云安全总体框架实际分成两大部分,一部分是云平台本身的安全,另一部分是云租户安全。

      浙江大学云安全运营体系,是要构建一个集交付、交易、分析为一体的云安全管理平台。整个运维体系,包括智云实验室和信息技术中心,实际上搭建了一个生态,围绕着云安全运营,按照自主开通、统一管理的模式,学校各下属学院、分校等都可以按照需求自主开通云服务,然后自动交付、交易,最终统一管理。通过把接口提供给各个厂商,包括云检测、云防御、云审计、专家服务等,将各个厂商的产品服务应用在其中。

      理清安全责任边界,包括阿里云、云安全商、信息技术中心、租户,每一个单位都有各自的职责和边界。阿里云的安全职责是提供一个安全、可靠的云平台和安全资源池,安全边界是保障云平台自身安全。信息技术中心的安全职责是制定云安全标准,持续监督云安全态势,安全边界是监督云平台和云租户的安全态势,制定安全标准等。

    统一应用入口,打造浙江大学APP

      "浙江大学APP"基于钉钉平台搭建,采用钉钉专有云服务,也是钉钉专有云服务全球第一家落地的客户。浙大使用自有机房和服务器,钉钉提供软件和专有云的方式,解决了对于云服务的个性化需求。浙江大学APP建立了全面的安全防护策略,提供企业级的密钥,数据享受国秘级的保护。另外对敏感数据的保护贯穿整个数据的生命周期,能达到银行级的数据加密存储级别,使得浙大APP能够达到全面安全防护。

      未来浙大还要在其他方面继续进行探索,比如浙大与阿里云联合发起打造面向未来的智云实验室;在5G移动环境下开展安全合作,2018年5月同浙江移动签订了战略协议,共同建设具有国内领先水平的5G/NB-IoT试验网络,开展基于5G网络环境下的WLAN、LTE、5G新无线接入等多种接入条件下的安全认证体系研究,推进浙江省5G产业联盟发展,共同打造先进水平的实验网络、技术以及安全。

  • 相关推荐:

  • 浙江大学陈文智:校园安
  • 积木云参加2018中国区块
  • 在华为P30发布会上 华为
  • shell脚本学习指南
  • 网页开发工具有哪些?
  • 服务器租用找景安
  • 戴尔全新解决方案将机器
  • 王东临:用科学家精神做
  • 浪潮服务器助力甘肃行政
  • 浪潮服务器SR助力南京森
  • 网站内容禁止违规转载,转载授权联系中国云计算网