- 浏览: 299763 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (165)
- hadoop (47)
- linux (11)
- nutch (7)
- hbase (7)
- solr (4)
- zookeeper (4)
- J2EE (1)
- jquery (3)
- java (17)
- mysql (14)
- perl (2)
- compass (4)
- suse (2)
- memcache (1)
- as (1)
- roller (1)
- web (7)
- MongoDB (8)
- struts2 (3)
- lucene (2)
- 算法 (4)
- 中文分词 (3)
- hive (17)
- noIT (1)
- 中间件 (2)
- maven (2)
- sd (0)
- php (2)
- asdf (0)
- kerberos 安装 (1)
- git (1)
- osgi (1)
- impala (1)
- book (1)
- python 安装 科学计算包 (1)
最新评论
-
dandongsoft:
你写的不好用啊
solr 同义词搜索 -
黎明lm:
meifangzi 写道楼主真厉害 都分析源码了 用了很久. ...
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker -
meifangzi:
楼主真厉害 都分析源码了
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker -
zhdkn:
顶一个,最近也在学习设计模式,发现一个问题,如果老是看别人的博 ...
Java观察者模式(Observer)详解及应用 -
lvwenwen:
木南飘香 写道
高并发网站的架构
HDFS概念:
1.数据块:每个磁盘都有默认的数据块的大小,这是磁盘进行读写的最小单位。构建与单个磁盘上的文件系统通过磁盘块来管理该文
件系统中的块,该文件系统块的大小可以是磁盘块的整数倍
HDFS也有块的概念,默认为64M,与单一磁盘上的文件系统相似,HDFS上的文件也被划分为块的大小的多个分块,作为独
立的存储单元,但是HDFS中小于一个块的大小的文件不会占据整个块的空间
2.为什么HDFS中的数据块如此之大
HDFS数据块比磁盘块大,这是为了最小化寻址开销。如果块设置的足够大,从磁盘传输数据的时间可以明显大于定位这个块开始
位置所需的时间,这样传输一个由多个块组成的文件的时间取决于磁盘传输速率
3.分布式系统中块抽象的好处
1>一个文件的大小可以大于网络中任意一个磁盘的容量
2>简化了存储子系统的设计
3>块适用于数据备份和容错能力
4.namenode 和datanode
HDFS集群中有两类节点。并以管理者-工作者模式运行,namenode(管理者),datanode(工作者)。
namenode 管理文件系统的命名空间,维护者文件系统树及整棵树内所有的目录和文件,这些信息以两类文件的形式永久保存
1>命名空间镜像文件
2>编辑日志文件
namenode 也记录着每个文件中各个块所在的数据节点信息,它并不永久保存块的位置信息
datanode 是文件系统的工作节点。他们根据需要存储并检索数据块,并定期向namenode发送他们所存储的块列表,没有nammode,
文件系统 将无法使用。因为如果namenode失效,则我们不知道如何根据datanode的块来重建文件
hadoop 两种机制来防止namenode失效:
1>备份那些组成文件系统元数据持久状态的文件。hadoop可以通过配置使namenode在多个文件系统上保存元数据的持久状态。这些
写操作时实时的,是 原子的。
2>运行辅助namenode,辅助namenode状态落后滞后于主节点,所以主节点失效时,会丢失部分信息,这种情况下一般把存储在NFS上
的namenode元数据复制到辅助namemode 并作为新的namenode运行
5.dfs.replication
hadoop默认块的副本数为3.
6.基本文件系统操作
1>从本地文件系统将一个文件复制到HDFS
bin/hadoop fs -copyFromLocal input/docs/quangle.txt hdfs://server0:9000/user/suse/quangle.txt
2>将hdfs文件复制回本地文件系统
bin/hadoop fs -copyToLocal quangle.txt quangle.copy.txt
bin/hadoop fs -mkdir newdir 创建目录
7.hadoop 文件系统
HDFS 只是hadoop 抽象文件系统的一个实现,java抽象类 org.apache.hadoop.fs.FileSystem 定义了hadoop的一个文件系统接口
java 接口
DistributedFileSystem
1>hadoop 从URL中读取数据
两种方式:
1>> java.net.URL 类
InputStream in = null;
try{
in = new URL("hdfs://host/path").openStream();
}finally{
IOUtils.closeStream(in);
}
2>>通过FileSystem API 读取数据
hadoop文件系统中通过 Hadoop Path 对象来代表文件,可以将一条路径看做为Hadoop 文件系统的url
获取FileSystem 实例由两种方法
public static FileSystem get(Configuration conf) throws IOException
public static FileSystem get(URL url,Configuration conf) throws IOException
第一个方法返回默认的文件系统
第二个返回给定url的文件系统,url为空则返回默认的文件系统
有了FileSystem 实例后 调用open()函数 来获取文件的输入流
Public FSDataInputStream open(Path f) throws IOExeption //默认缓冲区大小为4kb
Public abstract FSDataInputStream open(Path f,int buffersize)
FSDataInputStream :
实际上open()函数返回的是FSDataInputStream 对象,而不是标准的java.io类对象,这个类是继承了
java.io.DataInputStream 接口的一个特殊的类,支持随机访问,可以从流的任意一个位置读取
public class FSDataInputStream extends DataInputStream implents Seekable,PositionedReadable{
//implements elided
}
Seekable 接口支持在文件中找到指定的位置,并提供一个查询当前位置相对于文件起始位置的偏移量getPos 的查询方法
public interface Seekable{
void seek(long pos) throws IOExpection
long getPos()
}
调用seek()方法定位大于文件长度位置会导致异常。
与java.io.InputStream 中的skip() 不同。seek()可以移动到文件的任何绝对位置,skip()则只能相对于当前位置定位到另一
个新位置
seek 方法是一个相对高开销的操作
2>写入数据
public FSDataOutputStream create (Path f) throws IOException
create()方法 能够为需要写入的且当前不存在的文件创建父目录,如果希望不存在父目录就报错 则先调用
exists()方法
append 新建文件方法
public FSDataOutputStream append(Path f) throws IOException
该追加操作允许一个writer 打开文件后在访问该文件的最后偏移量处追加数据
评论
lz可以使用TestDFSIO来测试HDFS的吞吐量性能....
这个不是抄的.而是我开始接触hadoop的时候看hadoop权威指南 自己做的笔记而已。我知道你想要实际的操作过程也就是代码,但是如果你有能力的话可以自己写,如果没能力的话 就算是抄你可能也不一定抄的明白,不要指望别人给你完整的代码,那样的话 你就是在乞讨像个没有能力的乞丐一样
lz可以使用TestDFSIO来测试HDFS的吞吐量性能....
发表评论
-
博客地址变更
2013-08-16 10:29 1162all the guys of visiting the bl ... -
hadoop 源码分析(六)hadoop taskTracker 生成map 和reduce任务流程
2013-04-09 17:36 2711taskTracker 生成map reduce ... -
hadoop 源码分析(六)hadoop taskTracker 生成map 和reduce任务流程
2013-04-09 17:33 0taskTracker 生成map reduce ... -
hadoop 源码分析(五)hadoop 任务调度TaskScheduler
2013-04-01 11:07 3909hadoop mapreduce 之所有能够实现job的运行 ... -
hadoop 源码分析(四)JobTracker 添加job 到schduler 队列中
2013-03-29 18:37 2844启动 JobTracker 1. 进入main方法: ... -
hadoop 源码分析(三) hadoop RPC 机制
2013-03-28 15:13 2380Hadoop 通信机制采用自己编写的RPC. 相比于 ... -
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker
2013-03-27 12:57 36951.JobClient 客户端类 通过 ... -
hadoop 源码分析(一) jobClient 提交到JobTracker
2013-03-26 13:41 3579Hadoop 用了2年多了.从最初一起创业的 ... -
RHadoop 安装教程
2013-02-01 17:18 1588RHadoop 环境安装 硬件: centos6 ... -
pig
2012-11-16 19:28 1177转自:http://www.hadoopor.c ... -
hadoop与hive的映射
2012-11-15 10:21 2342hadoop与hive的映射 ... -
hadoop distcp
2012-07-31 10:00 2789hadoop distcp 使用:distcp ... -
MapReduce中Mapper类和Reducer类4函数解析
2012-07-20 18:05 2092MapReduce中Mapper类和Reducer类4函数解析 ... -
hadoop metrics 各参数解释
2012-07-17 18:59 1479hadoop metrics 各参数解释 研究使用hadoo ... -
Hbase几种数据入库(load)方式比较
2012-07-17 14:52 13521. 预先生成HFile入库 这个地址有详细的说明http:/ ... -
Hadoop客户端环境配置
2012-05-11 14:59 1740Hadoop客户端环境配置 1. 安装客户端(通过端用户可以 ... -
hadoop 通过distcp进行并行复制
2012-05-02 15:25 2407通过distcp进行并行复制 前面的HDFS访问模型都集中于 ... -
linux crontab 执行hadoop脚本 关于hadoop环境变量引入
2012-04-10 12:11 0crontab问题 crontab的特点:PATH不全和无终 ... -
hadoop fs 命令封装
2012-04-09 09:39 0hadoop fs 命令封装 #!/usr/bin/env ... -
map-reduce编程核心问题
2012-02-22 13:38 12441-How do we break up a large p ...
相关推荐
基于springboot+netty+redis+hdfs实现的一个线上分布式网盘系统,毕业设计项目,个人学习,课设等均可,项目经过测试,可完美运行! 项目结构 项目主要分为一下几个模块 web-service 主要功能是页面展示,交互 ...
Hadoop学习总结之一:HDFS简介
A.2实验二:熟悉常用的HDFS操作 本实验对应第4章的内容。 A.2.1 实验目的 (1)理解 HDFS在Hadoop体系结构中的角色。(2)熟练使用HDFS操作常用的 Shell命令。(3)熟悉HDFS操作常用的Java API。 A.2.2 实验平台 (1)操作...
• HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块。 • 和普通文件系统相同的是...• 不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。
适合刚接触hadoop的学生或小白,内容包括HDFS shell操作及HDFS Java API编程 有图片有代码
hdfs dfs -test -e 文件或目录名 第三步,查看检测结果: echo $? 若输出结果为0,则说明文件或目录存在,若为1,则说明文件或目录不存在。 二、Java代码实现 import org.apache.hadoop.conf.Configuration; ...
本文档是关于hadoop中HDFS的文件读写操作的一份ppt,适用于学习hadoop新手.
HDFS读写数据流程描述,脑图展示,易于理解与记忆,仅供学习使用。HDFS分布式文件系统是一个主从架构,主节点是NameNode,负责管理整个集群以及维护集群的元数据信息;从节点是DataNode,主要负责文件数据存储。
很久之前找到的一个资源,很好用。 web中进行HDFS文件系统操作的demo,由jsp编写,希望对大家有帮助,好好学习,天天向上
java操作Hadoop源码之HDFS Java API操作-创建目录,附带所需全部jar包,欢迎下载学习。
一.实验内容 HDFS编程实践: 1)使用HDFS文件操作的常用Shell命令;...此外,我还学习了如何使用`hdfs dfs -copyFromLocal`和`hdfs dfs -copyToLocal`命令在HDFS之间复制文件。 (3)其次,我利用Hadoop提供的Java AP
python 零基础学习篇-11.HDFS的不同进程使用不同参数--但写在一个文件中.mp4
压缩文件中包含了Hadoop生态系统、体系架构及特点,三大基本组件HDFS,MapReduce,YARN的学习笔记,文件为Markdown格式,进行了详细功能介绍说明,可以帮助大家学习hadoop的三大组件或者作为一份详细资料备份,帮助...
MapReduce——分布式计算框架,运行于YARN之上这篇文章主要是对Hadoop三大基本组件之一的HDFS进行深入的学习。随着数据量越来越大,在一一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,...
Hadoop之HDFS源代码分析 pdf版 ,从源码学习文件系统的精髓,值得一看
Hadoop学习笔记(一):HDFS分布式文件系统(从环境搭建到Java API)-附件资源
这是一个基于Hadoop的视频转码系统,首先视频在本地进行分割成64M左右大小,然后从本地文件夹中上传到HDFS中,然后启动一个MapReduce作业,每一个Map作业下载一个视频到本地,进行转码到在上传到HDFS中,没有reduce...
对于我这种刚开始学习Hadoop的人员,需要频繁的在本地电脑和HDFS之间上传下载以及删除文件,如果全部采用代码操作比较麻烦。 针对windows系统,有一些连接HDFS进行文档管理的工具,比如说HDFS+Explorer。 但是我的是...