Hadoop权威指南

1、Hadoop基础知识

第1章 初识Hadoop

  • Hadoop代替配有大量硬盘的数据库来进行大规模数据分析的原因是:
    1. 传输速率(取决于硬盘的带宽)的提升远大于寻址时间(将磁头移动到特定硬盘位置进行读/写操作的过程)的提升,而数据库采用的是硬盘寻址数据访问模式,其相较于流数据读取模式(主要取决于传输速率)会花费更多时间;
    2. 关系型数据库使用的数据结构是B树(受限于寻址的速率),当其只更新一小部分数据时更有优势;但遇到大规模数据时,因为需要使用**”排序/合并“来重建数据库,所以B树**的效率会明显落后于MapReduce;
  • MapReduce是一个批处理系统,更适合没有用户在现场等待查询结果的离线使用场景,并不适合交互式分析;
  • MapReduce适合一次写入、多次读取数据的应用,关系型数据库则更适合持续更新的数据集以及索引后数据集的点查询和更新(建立索引的数据库系统能够提供对小规模数据的低延迟数据检索快速更新);
  • Hadoop采用的是读时模式(在处理数据时才对数据进行解释,使得数据加载成为一个文件拷贝操作),因此更适合半结构化数据(例如电子表格在结构上由单元格组成,但每个单元格内可以保存任何形式数据)和非结构化数据(例如纯文本或图像等没有特别的内部结构);RDBMS适合结构化数据(例如XML文档),但会在数据加载阶段带来大量时间开销;
  • RDBMS为保持数据的完整性且不含冗余,其数据通常是规范的,但这并不适合Hadoop,因为这会使读取记录成为非本地操作(为什么???),其适合如日志文件(当每次都需要记录客户端主机全名时,会导致同一客户端的全名可能多次出现)的非规范化数据
  • 对数据进行分区后,函数原语(如map和reduce)能够在各分区上并行工作,因此处理模型可以随着数据规模线性收缩,即若输入数据量增加一倍,但集群规模也扩展一倍,仍能使得作业的运行速度与原来一样快;

第2章 关于MapReduce

  • MapReduce任务过程分为两个处理阶段:map阶段和reduce阶段。每个阶段都以键-值对作为输入和输出,其中map的键是某一行起始位置相对于文件起始位置的偏移量,但两个阶段的键和值的类型由程序员来选择;
  • map函数的输出经由MapReduce框架处理后,最后发送到reduce函数,这个处理过程基于来对键-值对进行排序分组(中间有个shuffle过程,将相同键的合并);
  • 在设置形参类型的时候,Hadoop不直接使用Java内嵌的类型,而是使用在org.apache.hadoop.io包中一套可优化网络序列化传输的基本类型,如LongWritableTextIntWritable类型相当于JavaLongStringInterger类型;
  • map和reduce提供Context实例用于输出内容的写入;
  • reduce函数的输入类型必须匹配map函数的输出类型

第3章 Hadoop分布式文件系统

第4章 关于YARN

第5章 Hadoop的I/O操作

2、关于MapReduce应用开发

第6章 MapReduce应用开发

第7章 MapReduce的工作机制

第8章 MapReduce的类型与格式

第9章 MapReduce的特性

3、Hadoop的操作

第10章 构建Hadoop集群

第11章 管理Hadoop

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值