Apache Hadoop NextGen MapReduce (YARN)

YARN. From Apache.Org

Apache Hadoop NextGen MapReduce (YARN)

MapReduce has undergone a complete overhaul in hadoop-0.23 and we now have, what we call, MapReduce 2.0 (MRv2) or YARN.

The fundamental idea of MRv2 is to split up the two major functionalities of the JobTracker, resource management and job scheduling/monitoring, into separate daemons. The idea is to have a global ResourceManager (RM) and per-application ApplicationMaster (AM). An application is either a single job in the classical sense of Map-Reduce jobs or a DAG of jobs.

The ResourceManager and per-node slave, the NodeManager (NM), form the data-computation framework. The ResourceManager is the ultimate authority that arbitrates resources among all the applications in the system.

The per-application ApplicationMaster is, in effect, a framework specific library and is tasked with negotiating resources from the ResourceManager and working with the NodeManager(s) to execute and monitor the tasks.

MapReduce NextGen Architecture

The ResourceManager has two main components: Scheduler and ApplicationsManager.

The Scheduler is responsible for allocating resources to the various running applications subject to familiar constraints of capacities, queues etc. The Scheduler is pure scheduler in the sense that it performs no monitoring or tracking of status for the application. Also, it offers no guarantees about restarting failed tasks either due to application failure or hardware failures. The Scheduler performs its scheduling function based the resource requirements of the applications; it does so based on the abstract notion of a resource Container which incorporates elements such as memory, cpu, disk, network etc. In the first version, only memory is supported.

The Scheduler has a pluggable policy plug-in, which is responsible for partitioning the cluster resources among the various queues, applications etc. The current Map-Reduce schedulers such as the CapacityScheduler and the FairScheduler would be some examples of the plug-in.

The CapacityScheduler supports hierarchical queues to allow for more predictable sharing of cluster resources

The ApplicationsManager is responsible for accepting job-submissions, negotiating the first container for executing the application specific ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure.

The NodeManager is the per-machine framework agent who is responsible for containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the ResourceManager/Scheduler.

The per-application ApplicationMaster has the responsibility of negotiating appropriate resource containers from the Scheduler, tracking their status and monitoring for progress.

MRV2 maintains API compatibility with previous stable release (hadoop-0.20.205). This means that all Map-Reduce jobs should still run unchanged on top of MRv2 with just a recompile.

25个让Java程序员更高效的Eclipse插件

25个让Java程序员更高效的Eclipse插件_Oracle Java_cnBeta.COM.

Eclipse提供了一个可扩展插件的开发系统。这就使得Eclipse在运行系统之上可以实现各种功能。这些插件也不同于其他的应用(插件的功能是最难用代码实现的)。拥有合适的Eclipse插件是非常重要的,因为它们能让Java开发者们无缝的开发基于J2EE和服务的应用程序。Eclipse的插件也能帮助他们开发不同应用架构上的程序。

下面列出来的是25个最好的免费Eclipse插件,可以让开发者更高效的工作 。
eclipse logo
提高代码质量的插件
1. FindBugs
FindBugs可以帮你找到Java代码中的bug,它使用Lesser GNU Public License的自由软件许可。
2. Checkstyle
Checkstyle插件可以集成到Eclipse IDE中去,能确保Java代码遵循标准代码样式。
3. ECLemma
ECLemma是一款拥有Eclipse Public License许可的免费工具,它提供了方便快捷的开发和测试环境。你可以使用代码覆盖模式下的“launch”功能,用起来就像是真正的运行/调试模式。你可以通过使用代码覆盖试图,高亮源文件,计数来分析代码。
4. JDepend4Eclipse
JDepend4Eclipse可以帮助你遍历文件夹,协助你量化设计的质量。它使用Eclipse Public License v1.0许可。
5. PMD
PMD是一款代码分析器,用来检测变量和写得不好的代码。(更新网址-http://pmd.sourceforge.net/eclipse/
6. SourceHelper
SourceHelper可以协助编码和调试,对写好的代码提供说明。
7. Structure101
Structure101帮助修改代码的架构,就是说你可以改变架构,而不打乱代码。
文本编辑插件
8. AnyEdit Tools
AnyEdit为输出控制台和工具栏增加了新的编辑器,帮助导入和导出数据。它使用Eclipse Public License v1.0许可。
9. Eclim
Eclim给Eclipse引入了Vim的功能,Vim是最好的编辑器之一。开发者可以采用不同的语言来编写代码,它也提供bug纠错功能。Eclim使用GPLV3许可。
10. Eclipse-rbe
Eclipse-rbe用来编辑Java文件,它的功能有为缺失变量发出警告信息,排序键值,转变Unicode编码等。它使用GNU库或LGPL许可。
依赖管理
11. Apache IvyDE
Apache IvyDE集成了Apache Ivy的依赖管理功能。它能管理’ivy.xml’中的依赖,也能够配合WPT和Ant插件的使用。
12. M2eclipse (Maven插件)
M2eclipse能够管理简单的项目,也能管理多模块项目,它能在Eclipse中启动maven。它提供依赖管理,能提供自动下载。
版本控制插件
13. Subclipse
Subclipse是一个SVN插件,它为Eclipse IDE提供subversion支持,使用EPL 1.0许可。
14. EGit
EGit提供同步视图,可以读.git/ 下排除的文件,提供rebase功能,为pull和push提供精简的操作。
15. MercurialEclipse
MercurialEclipse是个流行的版本控制系统。它提供了clone repository功能,push-pull同步功能,以及简单的回滚功能。
16. P4Eclipse
P4Eclipse吸纳了Perforce管理系统的特长。它提供了以开发者为导向的一系列的功能,并且支持许多Agile开流程发以及传统开发流程。
框架开发插件
17. Spring Tool Suite
Spring Tool Suite提供了XML文件预览以及图形化的spring配置编辑器等开发环境和工具,它能让开发变得更简单。
18. Spring IDE
Spring IDE帮助你开发Spring应用,它提供了图形编辑界面。它还能用图形的方式显示bean之间的关系。(更新网址 – http://springide.org/updatesite
19. Hibernator
Hibernator能够创建或更新数据库schema,运行hibernate查询语句,创建映射文档。用户可以将一个Java类和一个相关的映射文件同步起来。
20. JbossTools
JbossTools 3.2x支持JBoss,Hibernate,Drools,XHTML,Seam等。(更新网址-http://download.jboss.org/jbosstools/updates/JBossTools-2.1.2.GA
其他功能插件
21. ASM – 二进制预览插件
ASM Bytecode Outline插件可以显示当前的Java文件或class文件的分解的二进制代码,便于Java/class文件的二进制比较,也可以显示当前二进制代码的ASMifier代码。你可以用Eclipse更新管理器来安装ASM。(更新网址-http://download.forge.objectweb.org/eclipse-update/
22. Mylyn – 任务管理
Mylyn采用任务为中心的界面,它为开发者提供了任务管理工具。另外,也集成了富文本编辑工具,以及监测工具。
23. Eclipse Launcher
Eclipse launcher采用Delphi 6写成,使用它你可以自定义启动Eclipse IDE时的配置。
24. FileSync
FileSync拥有Eclipse Pulic License v1.0许可,它是一个文件同步工具,可以创建,删除,映射文件。
25. Log4E
Log4E可以帮你更容易的写日志,而不需要受特定日志框架的约束。当然你也可以自定义你自己的日志模版。
总而言之,插件能让Eclipse用其他语言来编写。Eclipse插件是必不可少的,因为它们让Java应用无缝连接,降低了Java的复杂度。然而,装了过多的插件会让你的Eclipse变慢,所以你需要有选择性的安装插件。
除了以上提到的插件,当然还有其他的高效率的插件,如Jadclipse。如果你还有其他让你觉得好用的插件,请写下来吧。