Hadoop 升级创建硬链接效率优化

标签: Hadoop-MapReduce Hadoop Hadoop升级 | 发表时间:2012-02-15 18:09 | 作者:Dong
出处:http://dongxicheng.org

1. 问题描述

Hadoop版本升级过程中,namenode会将元数据信息拷贝一份(fsimage,edits等),而datanode会对所有数据块建立硬链接,以防升级过程中出现问题,进行回滚操作。在databode上,采用了ln命令对每个block文件建立硬链接,而当集群规模非常大时,用ln命令(Apache Hadoop-0.20.2以及之前版本采用的方法)对大量文件建立硬链接的代价非常大,为了提高建立硬链接的效率,本文讨论了几种方法。

2. 方案设计

(1) 采用JDK 1.7

JDK 1.7在很多方面,性能有明显提升,本方法试图检验一下与创建硬链接有关的API性能是否有提升。

(2) 采用JDK 1.7中的createLink操作

JDK1.7中新增加了一个java.nio.file.Files包,里面有个createLink函数可用于创建硬链接。

(3) 采用JDK 1.6+ ln [dir] [dir]

ln命令有四种使用方法,Apache Hadoop-0.20.2以及之前版本采用了第一种方法:遍历目录下的每一个文件,依次调用依次ln,为每个文件建立硬链接;而从Hadoop-0.21.0开始,Hadoop采用了另一种ln用法:ln [OPTION]… TARGET… DIRECTORY,其中,TARGET是一个文件列表,而DIRECTORY是一个目录。

3. 效率比较

采用了4个节点,一个为namenode,三个为datanode,数据备三份,采用脚本往HDFS上加载10万个小文件(每个16 byte),这样,每个datanode上有30万个文件。采用的升级版本是,从Apache Hadoop-0.20.2(layoutversion=-18)升级到Cloudera Hadoop-0.20.2-cdh3u2(layoutversion=-19),测试结果如下:

(1) Jdk 1.7:18 min

(2) Jdk 1.7 createLink:53s

(3) JDK 1.6+ ln [dir] [dir]:50s

4. 参考资料

(1) Hadoop upgrade快照创建效率优化

(2) Apache Hadoop -0.21.0 源代码

原创文章,转载请注明: 转载自 董的博客

本文链接地址: http://dongxicheng.org/mapreduce/hadoop-upgrade-hardlinks/


Copyright © 2008
This feed is for personal, non-commercial use only.
The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:
)

相关 [hadoop 升级 链接] 推荐:

Hadoop 升级创建硬链接效率优化

- - 董的博客
Hadoop版本升级过程中,namenode会将元数据信息拷贝一份(fsimage,edits等),而datanode会对所有数据块建立硬链接,以防升级过程中出现问题,进行回滚操作. 在databode上,采用了ln命令对每个block文件建立硬链接,而当集群规模非常大时,用ln命令(Apache Hadoop-0.20.2以及之前版本采用的方法)对大量文件建立硬链接的代价非常大,为了提高建立硬链接的效率,本文讨论了几种方法.

Hadoop升级方案(一):Hadoop 1.0内部版本升级(初稿)

- - 董的博客
Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce-nextgen/hadoop-upgrade-in-version-1/. 本博客的文章集合: http://dongxicheng.org/recommend/.

Hadoop升级方案(二):从Hadoop 1.0升级到2.0(2)

- - 董的博客
Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce-nextgen/hadoop-upgrade-to-version-2-2/. 本博客的文章集合: http://dongxicheng.org/recommend/.

MapR发布最新Hadoop发行版,承诺无风险升级

- - IT经理网
MapR近日宣布3月份将发布最新的Hadoop发行版支持Hadoop2.2 与  YARN(下一代Hadoop资源规划器),向前兼容MapReduce1.x规划器,并向用户承诺无风险升级. 在兼容性方面,MapR与竞争对手Cloudera和Hortonworks的策略明显不同,MapR始终承诺向前兼容性,使企业用户能在相同节点上同时运行Hadoop MapReduce1.x和YARN.

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Hadoop使用(一)

- Pei - 博客园-首页原创精华区
Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,JobTracker,TaskTracker组成. 其中NameNode,secondary NameNode,JobTracker运行在Master节点上,DataNode和TaskTracker运行在Slave节点上.

Hadoop MapReduce技巧

- - 简单文本
我在使用Hadoop编写MapReduce程序时,遇到了一些问题,通过在Google上查询资料,并结合自己对Hadoop的理解,逐一解决了这些问题. Hadoop对MapReduce中Key与Value的类型是有要求的,简单说来,这些类型必须支持Hadoop的序列化. 为了提高序列化的性能,Hadoop还为Java中常见的基本类型提供了相应地支持序列化的类型,如IntWritable,LongWritable,并为String类型提供了Text类型.

Hadoop TaskScheduler浅析

- - kouu's home
TaskScheduler,顾名思义,就是MapReduce中的任务调度器. 在MapReduce中,JobTracker接收JobClient提交的Job,将它们按InputFormat的划分以及其他相关配置,生成若干个Map和Reduce任务. 然后,当一个TaskTracker通过心跳告知JobTracker自己还有空闲的任务Slot时,JobTracker就会向其分派任务.

HADOOP安装

- - OracleDBA Blog---三少个人自留地
最近有时间看看hadoop的一些东西,而且在测试的环境上做了一些搭建的工作. 首先,安装前需要做一些准备工作. 使用一台pcserver作为测试服务器,同时使用Oracle VM VirtualBox来作为虚拟机的服务器. 新建了三个虚拟机以后,安装linux,我安装的linux的版本是redhat linux 5.4 x64版本.

Hadoop Corona介绍

- - 董的博客
Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/hadoop-corona/hadoop-corona/. Hadoop Corona是facebook开源的下一代MapReduce框架. 其基本设计动机和Apache的YARN一致,在此不再重复,读者可参考我的这篇文章 “下一代Apache Hadoop MapReduce框架的架构”.