YARN应用开发流程

  categories:资料  author:

来源:http://my.oschina.net/u/1434348/blog/193374

1 概况

YARN是Hadoop系统上的资源统一管理平台,其主要作用是实现集群资源的统一管理和调度。YARN是一个高速发展中的资源管理与调度平台,目前还不是很完善,当前只支持CPU和内存的分配。作为资源调度器,YARN支持如下几个资源调度语义:

  • 获取指定节点的特定资源量,如node1上4个虚拟CPU核,1GB内存(YARN上的资源使用容器包装);
  • 获取指定机架上的特定资源量;
  • 支持资源黑名单(添加/删除);
  • 要求某些应用归还指定的资源,通常用于抢占场景。

YARN目前不支持的调度语义有(或者说支持得不是很好):

  • 获取任意节点上的特定资源量;
  • 获取任意机架上的特定资源量;
  • 获取一组或几组符合特定规则的资源量;
  • 细粒度资源分配,如获取主频大于2.4G的CPU等;
  • 动态调整资源容器容量(对长应用比较重要)。

YARN上的应用按其运行的生命周期长短,可以分为长应用和短应用,短应用通常是分析作业,作业从提交到完成,所耗的时间是有限的,作业完成后,其占用的资源就会被释放,归还给YARN进行再次分配。长应用通常是一些服务,应用启动后除非意外或人为终止,将一直运行下去。长应用通常长期占用集群上的一些资源,且运行期间对资源的需求也时常变化,因此,动态调整资源对长应用来说比较重要。目前,YARN对长应用的支持还不是很好,从社区讨论来看,受hortonworks的Hoya项目推动,YARN在2.20版本后加强了对长应用的支持。

 

2 应用开发

 

2.1 概述

YARN的应用开发主要过程如下:

图2.1 YARN应用开发流程

YARN主要由ResourceManager和NodeManager组成,ResourceManager负责资源的管理与分配,NodeManager则负责具体资源的隔离。YARN中,资源使用容器进行封装。用户在YARN上开发应用时,需要实现如下三个模块:

  • Application Client: 应用客户端用于将应用提交到YARN上,使应用运行在YARN上,同时,监控应用的运行状态,控制应用的运行;
  • Application Master: AM负责整个应用的运行控制,包括向YARN注册应用、申请资源、启动容器等,应用的实际工作在容器中进行;
  • Application Worker: 应用的实际工作,并不是所有的应用都需要编写worker。NodeManager启动AM发送过来的容器,容器内部封装了该应用worker运行所需的资源和启动命令。

实现上述模块,涉及如下2个RPC协议:

  • ApplicationClientProtocol:
阅读全文

Java多线程中公平锁

  categories:java资料  author:

概要

本章对“公平锁”的获取锁机制进行介绍(本文的公平锁指的是互斥锁的公平锁),内容包括:
基本概念
ReentrantLock数据结构
参考代码
获取公平锁(基于JDK1.7.0_40)
一. tryAcquire()
二. addWaiter()
三. acquireQueued()
四. selfInterrupt()
“公平锁”的释放锁的机制在后面一章再做介绍,锁的使用示例请参考“Java多线程系列–“JUC锁”02之 互斥锁ReentrantLock”。

转载请注明出处:http://www.cnblogs.com/skywang12345/p/3496147.html

基本概念

本章,我们会讲解“线程获取公平锁”的原理;在讲解之前,需要了解几个基本概念。后面的内容,都是基于这些概念的;这些概念可能比较枯燥,但从这些概念中,能窥见“java锁”的一些架构,这对我们了解锁是有帮助的。
1. AQS — 指AbstractQueuedSynchronizer类。
AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。

2. AQS锁的类别 — 分为“独占锁”和“共享锁”两种。
(01) 独占锁 — 锁在一个时间点只能被一个线程锁占有。根据锁的获取机制,它又划分为“公平锁”和“… 阅读全文

设计用于并发计算的数据结构

  categories:资料  author:

原文:http://www.ibm.com/developerworks/cn/aix/library/au-multithreaded_structures1/index.html

大家都在谈论并行计算;这个主题非常热门。本文是讨论多线程结构的两篇系列文章的第一篇,介绍如何使用 POSIX 库在多线程环境中设计并发数据结构。

简介

现在,您的计算机有四个 CPU 核;并行计算 是最时髦的主题,您急于掌握这种技术。但是,并行编程不只是在随便什么函数和方法中使用互斥锁和条件变量。C++ 开发人员必须掌握的关键技能之一是设计并发数据结构。本文是两篇系列文章的第一篇,讨论如何在多线程环境中设计并发数据结构。对于本文,我们使用 POSIX Threads 库(也称为 Pthreads;见 参考资料 中的链接),但是也可以使用 Boost Threads 等实现(见 参考资料 中的链接)。

本文假设您基本了解基本数据结构,比较熟悉 POSIX Threads 库。您还应该基本了解线程的创建、互斥锁和条件变量。在本文的示例中,会相当频繁地使用 pthread_mutex_lockpthread_mutex_unlockpthread_cond_waitpthread_cond_signalpthread_cond_broadcast

设计并发队列

阅读全文

nginx的HeadersMoreNginxModule模块功能

  categories:nginx  tags:  author:

模块地址:

https://github.com/openresty/headers-more-nginx-module

ngx_headers_more – Set and clear input and output headers…more than “add”!
设置和清除 http的输入和输出头

This module is not distributed with the Nginx source. See the installation instructions.
本模块不是标准模块, 安装需要参照最后的安装指令

Version

This document describes headers-more-nginx-module v0.25 released on 10 January … 阅读全文

ppt学习资料-别告诉我你懂PPT

  categories:资料  author:

ppt是一种演示文档, 用户可以在投影仪或者计算机上进行演示,也可以将演示文稿打印出来,制作成胶片,以便应用到更广泛的领域中。利用Microsoft Office PowerPoint不仅可以创建演示文稿,还可以在互联网上召开面对面会议、远程会议或在网上给观众展示演示文稿。其格式后缀名为:ppt、pptx;或者也可以保存为:pdf、图片格式等。2010及以上版本中可保存为视频格式。演示文稿中的每一页就叫幻灯片,每张幻灯片都是演示文稿中既相互独立又相互联系的内容, 详细内容参见:
http://baike.baidu.com/link?url=2IbxEcHb6BXWKv4szR8QXUMu4qxe8uyoaNHe4-HfqdEkvuk1mq9q3Sn6-qykw2NH2yEam5EY_8WKwVskm8yMdX0TN9ACRAsNLjiJ5vJ8zoe

工作中, 经常接触PPT,可要自己研究并做出卓越的PPT还是有难度的,这就需要一份有效的技能学习指导。

《别告诉我你懂PPT》 是一个讲解如何制作ppt的一个好的书籍, 书籍配套作者还有个视频介绍,分享如下:http://pan.baidu.com/s/1jGrarP0   ak3w
因为PPT,英语长句子还说不利索,满分15分的论文答辩,她居然取得16分;因为PPT,在强手如云的全美研究生演讲比赛中,她照样摘取了榜眼;还是因为PPT,百事全球高级副总裁亲自面试她,并欣然高薪录用;与PPT结缘,她的人生变得精彩无限……
跟着著名外企才女,找到一个雷人的标题,创新一套与众不同的模板,使用5种武器,打造一鸣惊人的PPT。奇思妙想的真实案例,发人深省的职场感悟,一份精彩的PPT报告,助你提升工作效率,受到老板青睐,在职场上一步一步走向成功!
不同于其他PPT书籍,本书没有讲述加入动画、艺术字体等具体的PPT制作技巧,而是教你一种态度,一种让你爱上自己工作的热情,一种提高团队战斗力的工作方式。它是基于PPT之上的创意工作方法,不仅让你的PPT更加漂亮,还让你养成一种正确的职业态度和做人艺术,成为真正的“创新型人才”。
但愿这本书能够帮你开启快乐职场的大门,帮你work smart,工作起来不仅效率高,还不觉得累。打开这本书,找到属于你的大山,营造你的快乐气场,静静地听,那来自大山的回音……

pdf参考书籍地址:
http://vdisk.weibo.com/s/dxQ3BZm3wMmJe?sudaref=www.baidu.com阅读全文

从0开始学编程(17)–面向对象思想了解

  categories:0基础编程  author:

面向对象技术是一种以对象为基础,以事件消息来驱动对象执行处理的程序设计技术。 是我们编程中重要概念,我们还是采用燕老师的 php为例子学习一下什么是面向对象技术。

http://pan.baidu.com/s/1gdpKR9T     d2ue

面向对象技术是个很抽象的例子, 很难一下子学会, 上面的文章大家看一遍, 能熟悉多少都是胜利。

另外下面是从网络上获取的面向对象的介绍, 可以参考。

它以数据为中心而不是以功能为中心来描述系统,数据相对于功能而言具有更强的稳定性。它将数据和对面向对象技术是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。

它将数据和对数据的操作封装在一起,作为一个整体来处理,采用数据抽象和信息隐蔽技术,将这个整体抽象成一种新的数据类型——类,并且考虑不同类之间的联系和类的重用性。类的集成度越高,就越适合大型应用程序的开发。另一方面,面向对象程序的控制流程由运行时各种事件的实际发生来触发,而不再由预定顺序来决定,更符合实际。事件驱动程序的执行围绕消息的产生与处理,靠消息循环机制来实现。在实际编程时可以采用搭积木的方式来组织程序,站在“巨人”的肩上实现自己的目标。面向对象程序的设计方法使得程序结构清晰、简单,提高了代码的重用性,有效减少了程序的维护量,提高了软件的开发效率

    接触面向对象思想的时候,接触到的第一个概念应该就是“类”,我们一直在讨论诸如如何设计类、如何实现类等高深的问题,但是我们有没有思索过到底什么叫做“类”,类的本质是什么?。按照大多数的面向对象的书籍中的介绍来看,类就是一个数据结构,封装了数据和操作,对于这样的答案,我估计大家都不会满意。
那到底什么是类呢?在讨论这个问题之前,我们先探讨一下类的由来。“类”在英语对应的单词是“Class”,如果大家翻一翻英语词典就可以查到“Class”的原意是指“种类、把…分类(或分等级)”。Class的概念最早应该是从分类学来的,意思是把对象进行归类(说的可能有些不太准确,欢迎那位高人指正),例如生物学上会根据某一个标准将生物分为动物和植物两大类,然后再根据其它的一些标准将动物又分为鱼类、爬行动物类、两栖动物类等不同的种类,如下图所示:

说到这里,可能大家会欢呼:原来面向对象的类就是分类,太好了!我最擅长这个了!别高兴的太早,谁知道面向对象的分类标准是什么吗?是生物学的标准,还是能不能爬树的标准?不同的标准,导致分类的结果完全不同,如下图所示:

假设现在需要要写一个弹涂鱼的类(又名虾虎鱼,英文名为Goby,一种可以爬上陆地并且会上树的鱼类,据说味道极其鲜美,有海上人参之说) ,怎么写?是不是太容易了,看下面的代码,分分钟就搞定了:
 1 ‘鱼
2 Public Class Fish
3
4 End Class
阅读全文

hadoop2.x本地伪分布环境实践yarn

  categories:资料  tags:  author:

本参照hadoop官方网站的 说明进行操作, 最后在参照文档中遇到一些问题,通过查找百度找到解决方案,把操作过程记录下来。

Purpose

This document describes how to set up and configure a single-node Hadoop installation so that you can quickly perform simple operations using Hadoop MapReduce and the Hadoop Distributed File System (HDFS).

本文介绍配置单节点(本地程序,并非集群)hadoop的方法, 通过这个集群可以快速操作在hdfs文件系统下执行hadoop的mapruduce程序。

Prerequisites

Supported Platforms

阅读全文

Android学习基本概念

  categories:android资料  tags:  author:

一 了解android

Android是非常流行的手机操作系统了, 现在android市场占有率在70%以上, 他的编程自然是一个很大的市场了。 最近也学习了一下android的编程知识,在网络上查找了很多文章, 找了很多资料, 把相关内容总结一下。

android的维基百科:http://zh.wikipedia.org/zh/Android

Android开发用的开发语言:
Java (学习Android之前最好有Java基础 android视频那个人出了一套android的java基础教程, 有时间我分享一下,我看了人家写的很好,值得学习和研究)

Android系统:
Android是基于Linux系统针对手机开发的系统

二 Android的大框架:

Android应用程序开发是基于组件的开发:
Android四大组件:

1. Activities

Activity之间的关系:
一个Activities代表一个单独和用户界面。

相当于windows中的窗口, 其实android程序同windows 的dot net下的 form窗体很像 ,一个程序由多少个窗体组成, 每个窗体内部有多个控件, 控件有消息, 窗体有消息。 各个窗体直接可以相互通讯。连ui线程是不安全都是一样。 仅仅是开发语言不一样了,换成java, 执行环境更换成linux了。
一个程序可以有多个Activity,不同程序里和同一个程序里的Activity可以通过Content Provider来交流(Intent就是Content下的一个类)

Activity的生命周期: — … 阅读全文

测试的几个工具

  categories:原创, 资料  tags:  author:

测试几个简单工具, 尽管简单但是非常必要, 简单才易用, 易用才好用,好用才有效果!

不是说其他工具不好, 下面的一些方法,基本不需要进行任何培训, 可以让您的很多人员 立马成为合格的测试人员, 比如您的会计可以立即成为测试员进行测试, 比如您的产品经理可以立即参与您的测试等等。

若是学习一套教程后在进行测试, 那么您至少也要招聘到愿意学习的人, 然后让他学习一个星期或者几天。。。。

1. 测试第一工具  截图

各种测试, 都要测试出bug为目的, 测试出bug后一定要告诉相关开发人员, 你如何告诉他们? 时间长了,他还如何记得。另外你是否真的了解你的测试情况,你的测试环境,操作系统环境等等。。。

因此截图是测试的第一工具, 他能记录你想不到, 记不住的, 复杂的, 难说的。。。。 等等各种词汇吧, 总之还是截图!!

截图一定要向大截, 不要仅仅截图一小点, 这样信息太少,会丢失非常重要的信息,最好您截全屏的图, 全尺寸, 信息最多, 这些信息都会对程序员有帮助的。 那些信息没有帮助测试人员一般不知道的, 因此全屏图示最有效的。… 阅读全文

Apache kafka原理与特性

  categories:mq, 资料  author:

前 言: Kafka是一个轻量级的/分布式的/具备replication能力的日志采集组件,通常被集成到应用系统中,收集”用户行为日志”等,并可以使用各种 消费终端(consumer)将消息转存到HDFS等其他结构化数据存储系统中.因为日志消息通常为文本数据,尺寸较小,且对实时性以及数据可靠性要求不 严格,但是需要日志存储端具备较高的数据吞吐能力,这种”宽松”的设计要求,非常适合使用kafka。

一.入门

1.1 简介

Kafka是一个”分布式的”/”可分区的(partitioned)”/”基于备份的(replicated)”/”基于commit-log存储”的服务. 它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现.

kafka消息是根据Topic进行归类,发送消息者成为Producer,消息接收者成为Consumer;此外kafka集群有多个kafka实例组成,每个实例(server)称为broker.

无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性以及保存一些meta信息.

 

其中client与server的通讯,都是基于TCP,而且消息协议非常轻量级.

Topics/logs

一个Topic可以认为是一类消息,每个topic将被分成多个partition(区),每个partition在存储层面是append log文件.任何发布到此partition的消息都会直接追加到log文件的尾部,每条消息在文件中的位置称为offset(偏移量),offset为 一个long型数字,它唯一的标记一条消息.kafka并没有提供其他额外的索引机制来存储offset,因为在kafka中几乎不允许对消息进行”随机 读-写”,一旦消息写入log日志之后,将不能被修改.

kafka和JMS实现(activeMQ)不同的是:即使消息被消费,消息仍然不会被立即删除.日志文件将会根据broker中的配置要求,保留 一定的时间之后删除;比如log文件保留2天,那么两天后,文件会被清除,无论其中的消息是否被消费.kafka通过这种简单的手段,来释放磁盘空间.此 外,kafka的性能并不会因为日志文件的太多而低下,所以即使保留较多的log文件,也不不会有问题.

对于consumer而言,它需要保存消费消息的offset,对于offset的保存和使用,有consumer来控制;当consumer正常 消费消息时,offset将会”线性”的向前驱动,即消息将依次顺序被消费.事实上consumer可以使用任意顺序消费消息,它只需要将offset重 置为任意值..(offset将会保存在zookeeper中,参见下文)

kafka集群几乎不需要维护任何consumer和producer状态信息,这些信息有zookeeper保存;因此producer和consumer的客户端实现非常轻量级,它们可以随意离开,而不会对集群造成额外的影响.

partitions的设计目的有多个.最根本原因是kafka基于文件存储.通过分区,可以将日志内容分散到多个server上,来避免文件尺寸 达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存;可以将一个topic切分多任意多个partitions(备 注:基于sharding),来消息保存/消费的效率.此外越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力. (具体原理参见下文).

Distribution

一个Topic的多个partitions,被分布在kafka集群中的多个server上;每个server(kafka实例)负责 partitions中消息的读写操作;此外kafka还可以配置每个partition需要备份的个数(replicas),每个partition将 会被备份到多台机器上,以提高可用性.[replicas特性在0.8V才支持]

基于replicated方案,那么就意味着需要对多个备份进行调度;一个partition可以在多个server上备份,那么其中一个 server作为此partiton的leader;leader负责此partition所有的读写操作,如果leader失效,那么将会有其他 follower来接管(成为新的leader);follower只是单调的和leader跟进,同步消息即可..由此可见作为leader的 server承载了全部的请求压力,因此从集群的整体考虑,有多少个partitions就意味着有多少个”leader”,kafka会 将”leader”均衡的分散在每个实例上,来确保整体的性能稳定.[备注:kafka中将leader角色权限下放到partition这个层级]

kafka-cluster… 阅读全文



快乐成长 每天进步一点点