Hadoop1.0.4 HDFS I/O性能测试

分布式RDF查询引擎的项目需要在节点之间传输中间结果,考虑HDFS可以作为一个备选的传输媒介,于是对HDFS的IO性能做了一个粗略的测试,过程和结果如下:

硬件环境:

实验室的8台老机器组成的集群,配置:

Intel 965芯片组
Intel Core E4400 CPU(2GHz双核,2MB L2,800MHz FSB)
1GB*4 双通道 DDR2 667 内存
160GB*1 SATA2 硬盘
集成BCM5754 Gigabit PCI-E 网卡
8台机器用1米长的5类线接到一台48G背板带宽的24口千兆交换机上

软件环境:

8台机器上都装着
CentOS 6.2(2.6.32) x64 系统
Hadoop 1.0.4(集群上启动了map-reduce,还运行着zookeeper和hama0.6.0,但没有运行任何job)

测试过程:

由于只是想知道hdfs大概的io性能,以下的实验都没有多次实验取平均。

首先将hdfs的上传速度和scp的速度做对比,随便在集群中找了一个节点iir455-202,向hdfs  put一个1028MB的文件(hdfs文件块64MB,8个节点,每个节点大约会有2个文件块):

[iir@iir455-202 data]$ time ~/hadoop-1.0.4/bin/hadoop fs -put external_links_en.nt /bhq/

real 0m42.693s
user 0m12.163s
sys 0m3.138s

用了42.693秒,从该节点向另外一个节点scp该文件:

[iir@iir455-202 data]$ time scp external_links_en.nt iir@iir455-200:/data/

external_links_en.nt                          100% 1028MB  36.7MB/s  00:28   

real 0m29.178s
user 0m22.577s
sys 0m3.406s

用了29.178秒,可见hdfs put文件的速度约24MB/s,scp点对点拷贝的速度约35MB/s。

再看看下载的速度,将本地的文件删除,从hdfs上get一个:

[iir@iir455-202 data]$ time ~/hadoop-1.0.4/bin/hadoop fs -get /bhq/external_links_en.nt ./

real 0m16.727s
user 0m8.550s
sys 0m3.693s

下载的速度很快,只用了16.727秒,约61.5MB/s的速度,怀疑是本地有缓存导致速度很快,于是换个目录试试:

[iir@iir455-202 data]$ mkdir 123
[iir@iir455-202 data]$ time ~/hadoop-1.0.4/bin/hadoop fs -get /bhq/external_links_en.nt ./123/

real 0m21.534s
user 0m8.471s
sys 0m3.737s

21.534秒,速度依然挺快的,应该和本地的缓存没啥关系,50-60MB/s的这个速度估计也就接近了老SATA2硬盘、集成网卡和5类网线的极限了。

2019-03-28 13:07

知识点

相关教程

更多

Ubuntu 12.04下Hadoop1.0.4的伪分布式安装

在Ubuntu 12.04下Hadoop1.0.4的伪分布式安装过程记录。 一、安装JDK 1、下载并安装 sudo apt-get install openjdk-6-jdk(安装JDK7为:sudo apt-get install openjdk-7-jdk) 要求输入当前用户密码时输入密码,回车; 要求输入YES/NO时,输入YES,回车,一路向下安装完成; 2、在命令行输入JAVA -VE

Ubuntu 12.10下Hadoop1.0.4集群安装指南

部署环境: OS: Ubuntu 12.10 64bit JDK: jdk1.7.0_9 Hadoop: Hadoop-1.0.4 节点信息: 节点类型 节点名称 节点IP NameNode/SecondaryNameNode/TaskTracker huchm01-vm 192.168.137.134 DataNode/JobTracker huchm02-vm 192.168.137.133

Hadoop的I/O

1. 数据完整性:任何语言对IO的操作都要保持其数据的完整性。Hadoop当然希望数据在存储和处理中不会丢失或损坏。检查数据完整性的常用方法是校验和。     HDFS的数据完整性:客户端在写或者读取HDFS的文件时,都会对其进行校验和验证,当然我们可以通过在Open()方法读取之前,将false传给FileSystem中的setVerifyCheckSum()来禁用校验和。  本地文件系统,ha

Hadoop I/O系统介绍

看过很多Hadoop介绍或者是学习的帖子和文章,发现介绍Hadoop I/O系统的很少。很多文章都会介绍HDFS的架构和使用,还有MapReduce编程等等。尤其是在介绍Hadoop的MapReduce编程之前,首先必须了解下Hadoop的I/O知识,要不一看到IntWritable、LongWritable、Text、NullWritable等概念就有点犯晕,看到和普通的Java程序类似的Map

基于HDFS的FTP

一家公司使用apache的ftpserver开发框架开发了针对Hadoop的hdfs文件系统的ftp服务器,当然是开源的。 安装过程非常简单,本人只是在linux下安装过,windows下没有成功安装,linux下安装步骤如下: 1.下载安装文件并解压 tar zxvf hdfs-over-ftp.tar.bz2 免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都

Hadoop1.0.4集群安装

一 安装计划 虚拟机:VMware9.0 http://www.linuxidc.com/Linux/2012-11/73743.htm 操作系统:CentOS5.8 http://www.linuxidc.com/Linux/2012-03/56303.htm Hadoop:Hadoop1.0.4 网段为:192.168.201.1 三个节点分别为: Master:192.168.201.11

Hadoop HDFS的一些操作

HDFS的文件操作 格式化HDFS 命令:user@namenode:Hadoop$ bin/hadoop namenode -format 启动HDFS 命令:user@namenode:hadoop$ bin/start-dfs.sh 列出HDFS上的文件 命令:user@namenode:hadoop$ bin/hadoop dfs -ls 使用hadoop API public List&

Hadoop:HDFS Raid 介绍

在分布式文件系统中,为了提高文件存储的可靠性,一般采用文件分Block的方法,并把每个Block的多个副本分别存储在不同的服务器上,Hadoop开源的分布式文件系统HDFS同样采用了这样的技术。但是,这样的方式会造成空间较大的浪费,HDFS每个文件的Block会有三个副本,如果文件大小为120MB,Block大小为64MB,则需要该文件会有两个Block,每个Block有三个副本,就是说一个120

【Hadoop】Build and Run HDFS

今天再一次配置HDFS,决定记录下来以备不时之需。 首先你的电脑需要安装上java JDK 1.6 这一步就不解释了,网上太多资料 安装ant http://ant.apache.org/bindownload.cgi ant 官网地址可以直接下载,使用命令: wget http://archive.apache.org/dist/ant/binaries/apache-ant-1.8.2-bin

Hadoop HDFS 配置

环境:        Jdk1.6         Hadoop-2.20.1         Fuse-2.8.1                Jdk1.6 下载地址        http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u

HDFS的副本存放策略

HDFS作为Hadoop中的一个分布式文件系统,而且是专门为它的MapReduce设计,所以HDFS除了必须满足自己作为分布式文件系统的高可靠性外,还必须为MapReduce提供高效的读写性能,那么HDFS是如何做到这些的呢?首先,HDFS将每一个文件的数据进行分块存储,同时每一个数据块又保存有多个副本,这些数据块副本分布在不同的机器节点上,这种数据分块存储+副本的策略是HDFS保证可靠性和性能的

关于Hadoop1.0.4运行自带例子WordCount内存溢出问题

关于Hadoop1.0.4运行自带例子WordCount内存溢出问题。 hadoop的安装模式分为三种:1. 单机模式 2.单机伪分布模式 3. 真正的分布模式 当我以单机模式安装成功后想试着运行自带的例子WordCount计算文件中单词的数量,但是运行后不管怎么设置总是提示outofmemory error,我尝试设置conf/hadoop-env.sh 中的 export HADOOP_HEA

HDFS Federation(联邦)

注:这个文档已经有很多译文,但不同的人翻译有不同的理解,时间匆忙,加之英文水平有限,有误的地方请指正。 原文:http://Hadoop.apache.org/common/docs/current/hadoop-yarn/hadoop-yarn-site/Federation.html 本指南是对HDFS联邦的简要介绍及如何配置和管理HDFS联邦。 背景 HDFS主要有两大模块: Namespa

Hadoop HDFS 配置 挂载HDFS文件系统

1、Fuse安装            wget http://nchc.dl.sourceforge.net/project/fuse/fuse-2.X/2.8.1/fuse-2.8.1.tar.gz          tar zxvffuse-2.8.1.tar.gz      cd fuse2.8.1      ./configure --prefix=/usr/      make

Ubuntu 下 Hadoop1.0.4 安装过程 (单机伪分布模式)

前提: 在安装Hadoop 前需要安装java 最好是sunjdk 我装的是jdk1.6.0_23 安装包下载 URL : http://hadoop.apache.org/ 我下载的1.0.4版本: hadoop-1.0.4.tar.gz 解压到安装目录 tar xzf hadoop-1.0.4.tar.gz -C DEST-PATH 配置环境变量 1. JAVA_HOME 这个目录下必须包含

最新教程

更多

java线程状态详解(6种)

java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞

redis从库只读设置-redis集群管理

默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave.  127.0.0.1:6382> set k3 111  (error) READONLY You can't write against a read only slave. 如果你要开启从库

Netty环境配置

netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。

Netty基于流的传输处理

​在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据

Netty入门实例-使用POJO代替ByteBuf

使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。

Netty入门实例-时间服务器

Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现

Netty入门实例-编写服务器端程序

channelRead()处理程序方法实现如下

Netty开发环境配置

最新版本的Netty 4.x和JDK 1.6及更高版本

电商平台数据库设计

电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表

HttpClient 上传文件

我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。

MongoDB常用命令

查看当前使用的数据库    > db    test  切换数据库   > use foobar    switched to db foobar  插入文档    > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new

快速了解MongoDB【基本概念与体系结构】

什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

windows系统安装MongoDB

安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我

Spring boot整合MyBatis-Plus 之二:增删改查

基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baom

分布式ID生成器【snowflake雪花算法】

基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案