- 浏览: 158184 次
- 性别:
- 来自: 厦门
最新评论
-
seandeng888:
xieyuNL 写道601235723 写道 这些好像都太基础 ...
《Java特种兵(上册)》 试读心得 -
seandeng888:
SpringJava 写道不错~看来你已经阅读了一定的源码了, ...
大数据框架hadoop的作业初始化过程(接上编) -
seandeng888:
lvwenwen 写道哥们在hadoop开发? 目前没有 ...
大数据框架hadoop的作业提交过程 -
lvwenwen:
哥们在hadoop开发?
大数据框架hadoop的作业提交过程 -
SpringJava:
不错~看来你已经阅读了一定的源码了,向你学习~~
大数据框架hadoop的作业初始化过程(接上编)
文章列表
本文接上一编文章《大数据框架hadoop的作业提交过程》。
调度器调用JobTracker.initJob()函数对新作业进行初始化。相关代码如下:
// 调度器调用eagerTaskInitializationListener.start()方法。
class JobQueueTaskScheduler ext
作业提交过程比较简单,它主要为后续作业执行准备环境,主要涉及创建目录、上传文件等操作;而一旦用户提交作业后,JobTracker端便会对作业进行初始化。作业初始化的主要工作是根据输入数据量和作业配置参数将作业分解成若干个Map Task以及Reduce Task,并添加到相关数据结构中,以等待后续被高度执行。总之,可将作业提交与初始化过程分为四个步骤,如下所示:
步骤一:用户使用Hadoop提供的Shell命令提交作业。
步骤二:JobClient按照作业配置信息(JobConf)将作业运行需要的全部文件上传到JobTracker文件系统(通常为HDFS)的某个目录 ...
1 读数据
1.1 使用Hadoop URL读数据
想要使java识别出hdfs开头的URL标示需要一点额外的工作要做:通过URL的setURLStreamHandlerFactory()方法为 java设置一个FSUrlStreamHandlerFactory。这个方法在每个JVM中只能调用一次,所以它通常会被放在一个static block中执行(如下所示),但是如果你的某部分程序(例如一个你无法修改源代码的第三方组件)已经调用了这个方法,那你就不能通过URL来这样读取数据了。相关代码如下:
Observer观察者设计模式是行为模式的一种,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态
Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。如下用代码的形式来展现被观察者(新闻出版社)和观察者(与之关联的订户观察者对象)是如何保持信息同步的。
1 被观察者-新闻出版社
/**
* NewsPublisher: 新闻出版社
*/
class NewsPublisher extends Observable {
public void p ...
作为典型的分布式系统,Hadoop中各个实体间存在着大量的交互,远程过程调用让用户可以像调用本地方法一样调用另外一个应用程序提供的服务,而不必设计和开发相关的信息发送、处理和接收等具体代码,是一种重要的分布式计算技术,它提高了程序的互操作性,在Hadoop的实现中得到广泛的应用。
Hadoop没有使用Java RMI,而是实现了一套自己独有的节点间通信机制,理由是有效的IPC(Inter-Process Communication,进程间通信)对于Hadoop来说是至关重要的,Hadoop需要精确控制进程间通信中比如连接、超时、缓存等通信细节。
如下是Hadoop 框架中实现了客户端调用J ...
HDFS(Hadoop Distributed File System)是Hadoop应用用到的一个最主要的分布式存储系统。一个HDFS集群主要由一个NameNode和多个Datanode组成:Namenode管理文件系统的元数据,而Datanode存储了实际的数据。基本上,客户端是通过联系Namenode以获取文件的元数据或修饰属性,而真正的文件I/O操作是Namenode直接和Datanode进行交互的。
调用文件系统命令应使用bin/hadoop fs <args>的形式。所有的FS shell命令使用URI路径作为参数。URI格式是scheme: ...
Hadoop IPC(Inter-Process Communication,进程间通信),这是一种简洁,低消耗的通信机制,可以精确控制进程间通信中如连接、超时、缓存等细节。Hadoop IPC机制的实现使用了Java动态代理,Java NIO等技术。
如下是一个使用Hadoop IPC实现客户端调用服务器端方法的示例,功能是返回服务器端的一个文件信息。
1 文件信息类IPCFileStatus
代码如下所示:
package org.seandeng.hadoop.ipc;
gzip和zip是通用的压缩工具,在时间/空间处理上相对平衡,gzip2压缩比gzip和zip更有效,但速度较慢,而且gzip2的解压缩速度快于它的压缩速度。
当使用MapReduce处理压缩文件时,需要考虑压缩文件的可分割性。如果文件是一个bzip2格式的压缩文件,那么,MapReduce作业可以通过bzip2格式压缩文件中的块,将输入划分为若干输入分片,并从块开始处开始解压缩数据。Bzip2格式压缩文件中,块与块间提供了一个48
对象的序列化(Serialization)用于将对象编码成一个字节流,以及从字节流中重新构建对象。“将一个对象编码成一个字节流”称为序列化该对象(Serializing);相反的处理过程称为反序列化(Deserializing)。
1.1 ...
Hadoop没有使用java.util.Properties管理配置文件,也没有使用Apache Jakarta Commons Configuration管理配置文件,而是使用了一套独有的配置文件管理系统,并提供自己的API,即使用org.apache.hadoop.conf.Configuraiton处理配置信息。1.1 Hadoop ...
项目沟通管理是项目管理的重要组成部分,许多专家认为项目尤其是IT项目失败的重要原因就是沟通的失败。当前信息系统集成企业普遍存在对信息的管理缺乏重视,缺乏信息共享、传递和使用的规范;IT技术人员往往忽视非正式的沟通方式,但又不喜欢将信息按规范的格式写成文档;IT技术人员习惯于专业术语,不擅长和管理层与客户沟通;组织人员内部的需求,也是客户和公司管理层的主观要求。本文根据项目沟通管理的主要过程,并结合该项目实际情况进行论述项目的沟通管理。
启动阶段
做好项目干系人分析
进行项目的干系人分析是项目沟通管理的第一步,也是沟通管理的基础。这就要求项目经理在项目之初进行项目干系人分析 ...
质量是反映实体满足显性和隐性需要的能力的特性总和。项目质量管理的主要目的是确保满足它所应满足的需求,项目管理必须满足或超越利益相关者的需求和期望。优质的产品或服务对于一个公司、企业、对国家来说都具有战略性的重要意义,IT项目质量更是如此,由于我国软件发展的历史较短,自身发展方面也存在许多问题,加上IT行业技术发展速度快,这样就导致软件产品不稳定,软件后期的维护、升级出现麻烦,轻者用户不满意,重者造成重大的经济损失等。因此,必须把质量看做与项目范围、时间和成本同等重要的地位。
下面作者论述了如何在公司质量管理体系的大环境下,在项目初始阶段、项目计划阶段、项目实施阶段、项目监控阶段及项目 ...
项目的成功,除了管理好时间、成本、范围以及质量外,在项目管理中“人”的因素也非常重要。因为项目中的所有工作都是由人来完成的,如何发挥人的作用对项目成败起着至关重要的作用。项目人力资源管理就是有效的充分的发挥每一个参与项目人员作用的过程。人力资源管理包括组织和管理项目团队所需的所有过程。主要包括编制人力资源计划、组建项目团队、建设项目团队、管理项目团队这几个方面。
编制人力资源计划
编制人力资源计划是决定项目的角色、职责以及报告关系的过程。这个过程的输出主要包括角色和职责分配矩阵、报告关系,以及项目的组织结构。 组织结构图如下: 角色职责如下:
项目管理
n 负责项目的 ...
风险,就是会给项目带来威胁或机会的一些不确定事件。
项目是在复杂的自然和社会环境中进行的,受众多因素的影响。对于这些内外因素,项目管理人员往往认识不足或者没有足够的力量加以控制。项目的过程和结果常常出乎人们的意料,有时不但未达到项目主体预期的目的,反而使其蒙受各种各样的损失,而有时又会给他们带来很好的机会。项目同其他经济活动一样带有风险。要避免和减少损失,将威胁化为机会,我们就必须了解和掌握项目风险的来源、性质和发生规律,进而实行有效的管理。下面从项目管理五大过程组中的规划阶段和监控阶段来描述如何进行项目的风险管理。
规划阶段
风险管理计划编制
风险管理计划即如何为项目处理和执 ...
《缔造企鹅:产品经理是这样炼成的》这本书与众不同,作者不吝重墨地、详细地、深入地说着产品经理的切实要求、工作事项、可能遇到的问题及解决方案。本书能帮助读者详细地了解产品经理这样一个角色,并知道产品经 ...