Hadoop MapReduce工作原理

  categories:资料  tags:  author:

1.剖析MapReduce作业运行机制

1).经典MapReduce–MapReduce1.0

整个过程有有4个独立的实体

  • 客户端:提交MapReduce
  • JobTracker:协调作业的运行
  • TaskTracker:运行作业划分后的任务
  • HDFS:用来在其他实体之间共享作业文件

以下为运行整体图

A.作业的提交

JobClient的runJob是用于新建JobClient实例并调用其submitJob()方法的便捷方式,提交Job后,runJob()每秒轮询检测作业的进度,随时监控Job的运行状态。

其中JobClient的submitJob()方法所实现的作业提交过程:

  • 向JobTracker请求一个新的作业ID
  • 检查作业的输出说明
  • 计算作业的输入分片
  • 将运行作业所需要的资源(Jar文件,配置文件和计算所得输入分片)复制到一个作业ID命名的目录下JobTracker的文件系统中。

B.作业的初始化

JobTracker接收对其提交的作业后,会把这个调用放入一个队列,交由作业调度器调度,初始化。初始化包括创建一个表示正在运行作业的对象—封装任务和记录信息,以便跟踪任务的状态和进程

C.任务的分配

TaskTracker运行简单的循环来对JobTracker发送心跳,告知自己的是否存活,同时交互信息,对于map任务和reduce任务,TaskTracker会分配适当的固定数量的任务槽,理想状态一般遵循数据本地化,和机架本地化

D.任务的执行

第一步:TaskTracker拷贝JAR文件到本地,第二部:TaskTracker新建本地目录,将JAR文件加压到其下面;第三步:TaskTracker新建一个TaskRunner实例运行该任务。

Streaming和Pipes可运行特殊的Map和Reduce任务,Streaming支持多语言的编写,Pipes还可以与C++进程通信,如下图:

E.进程和状态的更新

通过Job的Status属性对Job进行检测,例如作业云习惯状态,map和reduce运行的进度、Job计数器的值、状态消息描述等等,尤其对计数器Counter(计数器)属性的检查。状态更新在MapReduce系统中的传递流程如下

F.作业的完成

当JobTracker收到Job最后一个Task完成的消息时候便把Job的状态设置为”完成“,JobClient得知后,从runJob()方法返回

2).Yarn(MapReduce 2.0)

Yarn出现在Hadoop 0.23和2.0版本中,相对前面 MapReduce的性能有不少的提高

相比较MapReduce1.0,JobTracker在MRv2 中被拆分成了两个主要的功能使用守护进程执行:资源管理和任务的调度与监视。这个想法创建一个全局的资源管理(global ResourceManager (RM))和为每个应用创建一个应用管理(ApplicationMaster (AM))。一个应用可以使一个MR

阅读全文

如何画透视图

  categories:儿童画教程  author:

5方法: 基本透视绘图 一点透视 两点透视法 三点透视法 零点透视

Draw Perspective Intro.jpg

透视图是一种在平面上表现空间视觉关系的绘图技巧。有很多种形式的透视图,例如单点透视、二点透视、三点透视、鸟瞰图、虫眼视图和其他的透视图形 式。本教程将讲解用单点透视来绘制在一个方格途径上表现的场景。单点透视也是一种假设有多条相互平行的线条无限延伸最后汇集到一个消失点的透视绘图方法。

方法 1: 基本透视绘图

  1. Draw Perspective Step 1.jpg
    1
    在纸的中心画一个“X”记号,作为消失点。然后从中心向你的纸张边缘绘制直线,但请确保你绘制的直线可用于你的构图中。

    广告

  2. Draw Perspective Step 2.jpg
    2
    在右边画一系列的柱子。在快要接近中心也就是那个消失点的地方,用一系列的短直线来代替柱子。
  3. Draw Perspective Step 3.jpg
    3
    在左边也画一系列的柱子,并加上竖直的长凳。记住在你画到快要接近中心也就是消失点的时候,再次用线条来代替柱子。
  4. Draw Perspective Step 4.jpg
    4
    下一步用格子图案画出人行道上的屋顶。
  5. Draw Perspective Step 5.jpg
    5
    接下来在画上勾勒出左边的房子和右边的海滩景象。
  6. Draw Perspective Step 6.jpg
    6
    最后勾勒出突出显示小路和屋顶的线条。
  7. Draw Perspective Step 7.jpg
    7
    给你的画作上墨,就算完成了。使用具有不同尖头大小的黑色钢笔或是记号笔来给你的画作上墨,以便会有一些绘图纹理上的变化。

方法 2: 一点透视

当观看者正好面对构图物体的正面时,常常采用一点透视绘图法。在这种绘图方法中,场景中的水平线和竖直线在图中仍然是水平线和竖直线,离开观看者较远的线,将会有一个倾角指向所谓的“消失点”。点击下面任一视图以近距离查看。

  1. 1
    在你的图中“确定地平线”。用硬铅笔绘制一条水平线当作地平线。地平线决定了根据地形和站在地面上的高度,观看者能看多远。
  2. 2
    “选择消失点”。消失点将决定透视的效果。作为参考,最基本的消失点设在纸张的水平中心,地平线的上面。如果你向右设置消失点,绘图看上去好像视点移到了构图对象的左边。对于某些构图对象,根据相对于地面的俯仰角,消失点也可以设置得高于或低于地平线。
  3. 3

    “勾勒出主要的构图对象”。

    • Perspective2_777.jpg

      要注意将所有的水平线和竖直线绘制得非常水平和竖直。

    • Perspective3_861.jpg

      从靠近观看者开始向远处延伸的线条,应将其画得朝向消失点方向延伸。这样能得到很好的透视效果。

  4. Perspective_595.jpg
    4
    “添加绘图的细节”。沿着你所勾勒的参考线并根据比例绘制更多的细节,丰富构图。
阅读全文

Hadoop的kerberos的实践部署

  categories:资料  tags:  author:
根据原文,结合从网络上查到的资料汇总起来,形成便于阅读的本文

一. Hadoop的认证机制

相关hadoop安全问题参考:大数据安全Hadoop安全模型的演进

hadoop安全认证主要涉及kerberos和HTTP SPNEGO, kerberos下面有介绍, HTTP SPNEGO 和kerberos 的介绍如下:Kerberos and SPNEGO 以及 SPNEGO

另外, 下面是一些早期网络上的有关使用SPNEGO文章,可以部分辅助理解SPNEGO
管理SPNEGO TAI:关于使用Kerberos服务主体名称的提示
如何在Notes中通过account使用SPNEGO单点登录
Kerberos原理
基于 SAML 的 WebSphere Application Server 单点登录的场景设计
跨 KDC 域的 WebSphere Web Services Security 应用中的 Kerberos 加密算法

阅读全文

Yarn的JVM重用功能uber

  categories:资料  tags:  author:

在文章开头,我想先做几点说明:

1、本文的内容来自我对Yarn的相应功能的理解和实践。而我对该部分功能的理解主要来自对Hadoop的开发者之前相应言论的分析,并且我也将我的分析发给了Hadoop community, 并得到了Yarn的创始人兼架构师Arun Murthy的肯定回复。

2、本文中uber的配置部分,主要参考之前Hadoop开发者的言论。但是我当初看该言论的时候对一些细节有所疑惑,因此在本文中我对很多地方做了修改:使一些用词的引用前后一致,并加上了很多描述性的过渡语言。

3、本文为研究性质,并非官方文档的翻译。因此,如果读者发现任何纰漏,希望不吝赐教,万分感激!

首先,简单回顾一下Hadoop 1.x中的JVM重用功能:用户可以通过更改配置,来指定TaskTracker在同一个JVM里面最多可以累积执行的Task的数量(默认是1)。这样 的好处是减少JVM启动、退出的次数,从而达到提高任务执行效率的目的。 配置的方法也很简单:通过设置mapred-site.xml里面参数mapred.job.reuse.jvm.num.tasks的值。该值默认是1,意味着TaskTracker会为每一个Map任务或Reduce任务都启动一个JVM,当任务执行完后再退出该JVM。依次类推,如果该值设置为3,TaskTracker则会在同一个JVM里面最多依次执行3个Task,然后才会退出该JVM。

在 Yarn(Hadoop MapReduce v2)里面,不再有参数mapred.job.reuse.jvm.num.tasks,但它也有类似JVM Reuse的功能——uber。据Arun的说法,启用该功能能够让一些任务的执行效率提高2到3倍(“we’ve observed 2x-3x speedup for some jobs”)。不过,由于Yarn的结构已经大不同于MapReduce v1中JobTracker/TaskTracker的结构,因此uber的原理和配置都和之前的JVM重用机制大不相同。

1) uber的原理:

Yarn的默认配置会禁用uber组件,即不允许JVM重用。我们先看看在这种情况下,Yarn是如何执行一个MapReduce job的。首先,Resource Manager里的Application Manager会为每一个application(比如一个用户提交的MapReduce Job)在NodeManager里面申请一个container,然后在该container里面启动一个Application Master。container在Yarn中是分配资源的容器(内存、cpu、硬盘等),它启动时便会相应启动一个JVM。此 时,Application Master便陆续为application包含的每一个task(一个Map task或Reduce task)向Resource Manager申请一个container。等每得到一个container后,便要求该container所属的NodeManager将此 container启动,然后就在这个container里面执行相应的task。等这个task执行完后,这个container便会被 NodeManager收回,而container所拥有的JVM也相应地被退出。在这种情况下,可以看出每一个JVM仅会执行一Task, JVM并未被重用。

用户可以通过启用uber组件来允许JVM重用——即在同一个container里面依次执行多个task。在yarn-site.xml文件中,改变一下几个参数的配置即可启用uber的方法:

阅读全文

VRRP概述

  categories:linux资料  author:

来源:互联网

随着Internet的发展,人们对网络的可靠性的要求越来越高。对于局域网用户来说,能够时刻与外部网络保持联系是非常重要的。

通常情况下,内部网络中的所有主机都设置一条相同的缺省路由,指向出口网关(即图1中的路由器RouterA),实现主机与外部网络的通信。当出口网关发生故障时,主机与外部网络的通信就会中断。

配置多个出口网关是提高系统可靠性的常见方法,但局域网内的主机设备通常不支持动态路由协议,如何在多个出口网关之间进行选路是个问题。

VRRP-1

IETF(Internet Engineering Task Force,因特网工程任务组)推出了VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议,来解决局域网主机访问外部网络的可靠性问题。

VRRP是一种容错协议,它通过把几台路由设备联合组成一台虚拟的路由设备,并通过一定的机制来保证当主机的下一跳设备出现故障时,可以及时将业务切换到其它设备,从而保持通讯的连续性和可靠性。

使用VRRP的优势在于:既不需要改变组网情况,也不需要在主机上配置任何动态路由或者路由发现协议,就可以获得更高可靠性的缺省路由。

VRRP协议对应的是RFC3768,该协议仅适用于IPv4。

VRRP的基本概念

以下是与VRRP协议相关的基本概念:

概念

解释

VRRP路由器(VRRP Router运行VRRP的设备,它可能属于一个或多个虚拟路由器。
虚拟路由器(Virtual Router)由VRRP管理的抽象设备,又称为VRRP备份组,被当作一个共享局域网内主机的缺省网关。
它包括了一个虚拟路由器标识符和一组虚拟IP地址。
虚拟IP地址(Virtual IP Address)虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。
IP地址拥有者(IP Address Owner)如果一个VRRP路由器将虚拟路由器的IP地址作为真实的接口地址,则该设备是IP地址拥有者。
当这台设备正常工作时,它会响应目的地址是虚拟IP地址的报文,如ping、TCP连接等。
虚拟MAC地址是虚拟路由器根据虚拟路由器ID生成的MAC地址。
一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID}。
当虚拟路由器回应ARP请求时,使用虚拟MAC地址,而不是接口的真实MAC地址。
阅读全文

web内容缓存 nginx高性能缓存详解

  categories:nginx  tags:  author:

内容缓存是显著提高web站点的性能最有效的方法之一。下面来说说nginx高性能缓存。

内容缓存的基本原则

nginx

对GET请求进行缓存。

使用:浏览器缓存,内容分发网络和/或反向代理缓存。

nginx

HTTP缓存机制:

1. 源服务器宣称的内容缓存能力。 主要是对http头信息来控制的。

2. 请求的客户端缓存能力,如GET请求。

nginx

nginx对哪些进行缓存?

1. 缓存没有 Set-Cookie 的GET和HEAD的响应。

2. 通过定义独特的原始URL,如proxy_cache_key。

3. 通过定义缓存时间,如X-Accel-Expires、Cache-Control、Expires。

nginx 操作

nginx

nginx配置

nginx

缓存的过程

nginx的可在下列情况下使用陈旧的内容,通过proxy_cache_use_stale指令定义。

nginx

不仅仅对HTTP缓存,还有其他的,如:

1. FastCGI  功能很像HTTP

2. Memcache 检索memcached服务器的内容(必须预先填充)

3. uwsgi and SCGI

如何理解这些

nginx

缓存仪表

$upstrem_cache_status 变量值有:MISS、BYPASS、EXPIRED、STALE、UPDATING、REVALDATED、HIT。

nginx

nginx

扩展状态监控… 阅读全文

Spring Security学习总结

  categories:java资料  author:

来源:http://www.blogjava.net/redhatlinux/archive/2008/08/20/223148.html

在认识Spring Security之前,所有的权限验证逻辑都混杂在业务逻辑中,用户的每个操作以前可能都需要对用户是否有进行该项 操作的权限进行判断,来达到认证授权的目的。类似这样的权限验证逻辑代码被分散在系统的许多地方,难以维护。AOP(Aspect Oriented Programming)和Spring Security为我们的应用程序很好的解决了此类问题,正如系统日志,事务管理等这些系统级的服务一样,我们应 该将它作为系统一个单独的”切面”进行管理,以达到业务逻辑与系统级的服务真正分离的目的,Spring Security将系统的安全逻辑 从业务中分离出来。

 

一  Spring Security 简介

这里提到的Spring Security也就是被大家广为熟悉的Acegi Security,2007年底Acegi Security正式成为Spring Portfolio项目,并更名为Spring Security。Spring Security是一个能够为基于Spring的企业应用系统提供描述性安全访问控制解决方案的安全框架。 它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC(依赖注入,也称控制反转)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

通过在许多项目中实践应用以及社区的贡献,如今的Spring Security已经成为Spring Framework下最成熟的安全系统,它为我们提供了强大而灵活的企业级安全服务,如:

Ø         认证授权机制

Ø         Web资源访问控制

Ø         业务方法调用访问控制

Ø         领域对象访问控制Access Control List(ACL)

Ø         单点登录(Central Authentication … 阅读全文

VMware克隆CentOS 6.4后系统内只有eth1无法配置静态ip地址

  categories:资料  author:

用VMware克隆CentOS后,发现系统内只有eth1,而且/etc/sysconfig/network-scripts/下只有,ifcfg-eth0文件,虽然可以上网,但无法设置静态IP。

vmware-clone-eth1-001

我们把这个虚拟机关闭后, 删除虚拟网卡, 在添加新的虚拟网卡后, 重新启动虚拟机, 只会出现eth2,等等,还是没办法配置静态ip地址,主要是没有找到相关配置文件存放的地方。

centos中网卡硬件相关信息存放在 /etc/udev/rules.d/ 目录中, 如下图

vmware-clone-eth1-002

由于新添加的网卡的mac地址同原理网卡的mac地址不相同, 因此添加了新的网卡的编号来对应

为了修改这个错误我们进行如下图的操作

vmware-clone-eth1-003

1. 编辑文件  vi 70-persistent-net.rules

修改为以下内容

# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You … 阅读全文

树莓派上Java程序作为linux服务并开机自动启动

  categories:资料  author:
刚刚买了, 树莓派, 准备做一些程序, 放到树莓派上, 平时树莓派上不接显示器等各种设备,直接随着adsl开关进行开关。 这样一些java程序启动就有些麻烦。
开发过程中很多要独立运行,他们并不会以web形式发布,传统的做法是将其压缩为jar包独立运行,这种形式简单易行也比较利于维护,但是一 旦服务器重启或出现异常时,程序往往无法自行修复或重启。解决服务器重启的传统做法是编写一段shell脚本随服务器启动而运行,但是这样做只是治标,那 么我们想寻求一种“治本”的方式该怎么办呢?
Java Service Wrapper就轻松而简单的为我们解决了这些问题。”Java Service Wrapper”顾名思义,将我们的Java程序包装成系统服务,这样就可以随着系统的运行而自动运行,当然Java Service Wrapper(下面简称Wrapper)的功能绝不仅于此。
下载地址如下:
http://wrapper.tanukisoftware.com/doc/english/download.jsp
查看一些 树莓派的 cpu类型, 查询如下:
java-linux-services-cpu-001
通过 cat /proc/cpuinfo 查询可以知道 树莓派是 arm类型的cpu,因此在下载页面中
选择如下图的版本:
java-linux-services-002
如上图, 选择 矩形和圆形交叉区域的 版本。

我们选择Linux x86版本下载,解压后目录组成如下图所示:

编写一个最简单的java程序

package cn.iigrowing.linux.java.start;

public class

阅读全文

Confluence基础教程

  categories:资料  author:

一. Wiki和 Confluence

    什么是Wiki

Wiki 是一个Web 站点,它使得人们可以容易地发布信息并把这些信息链接在一起。Wiki 是一种在线交流软件,非常适用于在线的信息协作和交流。

    Wiki有哪些好处

在管理知识和协作方面,Wiki 是一个简单而有效的软件工具:

◇ Wiki 很容易学习和使用。它不像其它类型的内容管理系统那样复杂和难于使用。

◇ 用Wiki,知识和信息就不会被隐藏在大量的Email里、硬盘里或服务器里面。

◇ Wiki 是在线的,人们可随时随地在访问Wiki来共享知识和文件,进行协作交流。

◇ Wiki 也是非常的灵活。您能够对Wiki进行定制,将Wiki与其它的应用系统,数据库和文件系统进行连接。

◇ 和大部分的企业软件相比,Wiki 的投入成本是比较小的。

    什么是Confluence

Confluence 作为一个企业 Wiki 软件,它为企业提供创新的方案来解决团队的信息共享和协作问题。任何企业组织、部门、团队都可以使用 Wiki 来分享信息和内容。

在安全性方面,Confluence 具有完善和精细的权限控制,可以很好地控制用户在Wiki 中创建、编辑内容和添加注释。

Confluence 直观易于使用,您不需要学习任何新的语言就可以使用它,用所见即所得的方式在 Confluence … 阅读全文



快乐成长 每天进步一点点