- 浏览: 306576 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1222all the guys of visiting the bl ... -
hadoop 源码分析(六)hadoop taskTracker 生成map 和reduce任务流程
2013-04-09 17:36 2750taskTracker 生成map reduce ... -
hadoop 源码分析(六)hadoop taskTracker 生成map 和reduce任务流程
2013-04-09 17:33 0taskTracker 生成map reduce ... -
hadoop 源码分析(五)hadoop 任务调度TaskScheduler
2013-04-01 11:07 3948hadoop mapreduce 之所有能够实现job的运行 ... -
hadoop 源码分析(四)JobTracker 添加job 到schduler 队列中
2013-03-29 18:37 2883启动 JobTracker 1. 进入main方法: ... -
hadoop 源码分析(三) hadoop RPC 机制
2013-03-28 15:13 2415Hadoop 通信机制采用自己编写的RPC. 相比于 ... -
hadoop 源码分析(二) jobClient 通过RPC 代理提交作业到JobTracker
2013-03-27 12:57 38031.JobClient 客户端类 通过 ... -
hadoop 源码分析(一) jobClient 提交到JobTracker
2013-03-26 13:41 3620Hadoop 用了2年多了.从最初一起创业的 ... -
RHadoop 安装教程
2013-02-01 17:18 1632RHadoop 环境安装 硬件: centos6 ... -
pig
2012-11-16 19:28 1220转自:http://www.hadoopor.c ... -
hadoop与hive的映射
2012-11-15 10:21 2377hadoop与hive的映射 ... -
hadoop distcp
2012-07-31 10:00 2833hadoop distcp 使用:distcp ... -
MapReduce中Mapper类和Reducer类4函数解析
2012-07-20 18:05 2130MapReduce中Mapper类和Reducer类4函数解析 ... -
hadoop metrics 各参数解释
2012-07-17 18:59 1518hadoop metrics 各参数解释 研究使用hadoo ... -
Hbase几种数据入库(load)方式比较
2012-07-17 14:52 13881. 预先生成HFile入库 这个地址有详细的说明http:/ ... -
Hadoop客户端环境配置
2012-05-11 14:59 1778Hadoop客户端环境配置 1. 安装客户端(通过端用户可以 ... -
hadoop 通过distcp进行并行复制
2012-05-02 15:25 2483通过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 12821-How do we break up a large p ...
相关推荐
在大数据处理领域,Hadoop HDFS(Hadoop Distributed File System)是核心组件之一,它提供了分布式存储的能力。本文将深入探讨HDFS的一些基本命令,帮助用户更好地管理和操作HDFS中的数据。 1. `appendToFile`命令...
基于springboot+netty+redis+hdfs实现的一个线上分布式网盘系统,毕业设计项目,个人学习,课设等均可,项目经过测试,可完美运行! 项目结构 项目主要分为一下几个模块 web-service 主要功能是页面展示,交互 ...
Hadoop分布式文件系统(HDFS)是Apache Hadoop项目的核心组件之一,它为大数据处理提供了可靠的、可扩展的分布式存储解决方案。...通过不断的实践和学习,可以更好地利用HDFS这一强大的大数据存储工具。
实验二:“熟悉常用的HDFS操作”旨在帮助学习者深入理解Hadoop分布式文件系统(HDFS)在大数据处理中的核心地位,以及如何通过Shell命令和Java API进行高效操作。HDFS在Hadoop架构中扮演着存储大数据的核心角色,为...
HDFS(Hadoop Distributed File System)是 Hadoop 生态系统中的一个核心组件,负责存储和管理大规模数据。下面是 HDFS 的基本概念和架构: 数据块(Block) HDFS 中的基本存储单位是 64M 的数据块。与普通文件系统...
在学习 HDFS 编程实践前,我们需要启动 Hadoop。执行以下命令可以成功启动 Hadoop: ``` ./bin/hadoop ``` 启动后,我们可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 ...
开文件,这会返回一个FSDataInputStream对象。FSDataInputStream知道如何从HDFS获取数据。 2.2、写文件的过程 写文件时,客户端首先将数据分成多个64M的数据块,每个数据块都会被复制到多个数据节点上以确保容错...
1. **理解HDFS的角色**:HDFS作为Hadoop的核心组件之一,主要负责存储海量数据。理解其在Hadoop生态中的位置对于掌握整个大数据处理流程至关重要。 2. **熟练使用Shell命令**:通过一系列Shell命令的学习与实践,...
这可能是一个软件模块、插件或完整的应用程序,它的主要目标是为不熟悉HDFS命令行接口的用户提供一个熟悉的FTP界面来访问HDFS。 【压缩包子文件的文件名称列表】: 1. "hdfs-over-ftp使用说明.docx":这份文档详细...
### Hadoop学习总结之二:深入理解HDFS读写过程 #### 一、HDFS文件读取流程详解 Hadoop的分布式文件系统(HDFS)是大数据存储与处理的重要基石,其读写机制的设计旨在优化大规模数据集的访问效率与容错性。本文将...
Hadoop-HDFS实践教程是一本专门针对初学者设计的大数据Hadoop分布式存储系统HDFS的学习材料。Hadoop是一个开源的分布式计算框架,它允许用户通过简单易用的编程模型处理大型数据集,而HDFS(Hadoop Distributed File...
适合刚接触hadoop的学生或小白,内容包括HDFS shell操作及HDFS Java API编程 有图片有代码
通过对HDFS配置文件的学习,我们可以了解到HDFS的核心配置是如何工作的,这对于构建和维护一个高效、可靠的HDFS集群至关重要。理解这些配置的意义和作用可以帮助我们在实际部署和使用HDFS时更好地进行调优和问题排查...
#### 一、HDFS架构概述 HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目之一,旨在提供高吞吐量的数据访问,适用于大规模数据集上的应用。HDFS采用了Master/Slave的架构模型,其中包含两大核心...
通过这一实验,我们能够学习到如何配置和使用Oracle HDFS直接连接器进行数据的直接访问和操作。 实验1:直接访问单个HDFS文件 实验1的步骤涉及到配置环境、创建外部表、操作Hadoop文件系统以及检查数据库访问结果:...
通过学习和理解这些基本操作,你可以构建更复杂的Hadoop HDFS数据处理流程,例如批量读取、并行处理和上传结果等。 总结来说,Python操作Hadoop HDFS主要涉及连接HDFS服务、读取文件、写入文件、下载文件以及执行...
HDFS(Hadoop Distributed File System)是Hadoop生态系统中的核心组件之一,它是基于分布式存储技术的文件系统,旨在提供高可靠性、高可扩展性和高性能的数据存储解决方案。HDFS的主要特点是master-slave架构,名称...
WebHDFS Java Client是Hadoop生态系统中的一个关键组件,它为开发者提供了在Java环境中与Hadoop分布式文件系统(HDFS)交互的能力。"webhdfs-java-client-master"这个项目很可能是该客户端库的一个源码仓库主分支,...
在本实验中,我们主要关注的是对Hadoop分布式文件系统(HDFS)的熟悉和操作。HDFS是Hadoop的核心组件之一,它...通过这样的实践,学习者可以更好地理解和掌握Hadoop HDFS的使用,为后续的数据科学项目打下坚实的基础。