《hadoop权威指南》读书笔记 2011.7.28 morning 供自己参考记忆

map是怎样读取数据的
许多方法是把each line as a record
reduce  多的时候要分区
combiner 指定一个合并函数就可以了
conf.setcombinerClass()

HDFS以流式数据访问模式来存储超大文件

namenode将文件系统的元数据(文件,目录和数据的存储信息)存在内存中 因此文件系统所能存储的文件总数受限于namenode的内存容量

数据块的大小是固定的 分片的大小不固定 若一个split大于一个block的大小 那么对于个处理这个split的map任务,不在这个块上的split可能需要通过网络传输到这个map任务上来 没有充分发挥数据本定性的优越性质

数据块大 就是为了减少寻址开销
文件系统块块地抽象 1 文件的大小可以大于网络中任何一个磁盘的容量 文件的所有块不需要存储在同一个磁盘上 他们可以用网络上的任意一个磁盘来存储 当然也可以用一个磁盘存储一个文件 2 大大简化了子系统的设计 便于管理 信息不与块同时存储  大小一样 便于计算块的多少 3适合用于数据备份和提供容错能力
./hadoop fscd  / -files -blocks 查询块信息

namenode管理文件系统的命名空间
datanode 存储数据 工作节点 根据需要存储并检索数据块 定期想namenode发送他们所存储块地列表

seekable 接口支持在文件中找到指定位置 并提供一个查询单签位置相对于文件其实位置的偏移量(getPos())方法。

public class FileSystemDoubleCat {

  public static void main(String[] args) throws Exception {
    String uri = args[0];
    Configuration conf = new Configuration();//配置信息
    FileSystem fs = FileSystem.get(URI.create(uri), conf);//fs相当于一个指针
    FSDataInputStream in = null;
    try {
      in = fs.open(new Path(uri));
      IOUtils.copyBytes(in, System.out, 4096, false);
      in.seek(0); // go back to the start of the file
      IOUtils.copyBytes(in, System.out, 4096, false);
    } finally {
      IOUtils.closeStream(in);
    }


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值