第一章:
为什么不用数据库对大量硬盘上的大规模数据进行批量分享,而要用map reduce呢?
关乎计算机硬盘的发展趋势:寻址时间的提升远不敌传输速率的提升。寻址是导致硬盘操作延迟的主要原因。
另,M/R对半结构、非结构话数据更有效。
第二章:
气象数据集 详细实战解析
第四章:
序列化:将结构化对象转化为字节流以便在网络上传输或写到磁盘,经常出现在进程间通信和永久存储。
Hadoop多个节点的进程间通信通过RPC,RPC序列化格式4大理想属性:
紧凑;
快速;
可扩安装;
支持互操作。
Hadoop使用自己的序列化格式Writable,紧凑速度快,但不太容易用Java以外的语言进行扩展或使用。
4.3 序列化 一节详细解析了Writable各种子类(primitive的,集合类型的,nullWritable,ObjectWritable,GenericWritable……)。
除了以上Hadoop提供的非常有用的Writable,我们也可根据自己的需求构造新的定制实现,完全控制二进制表示和排序顺序。由于Writable是MapReduce数据路径的核心,挑战二进制表示能对性能产生显著效果。
范例4-7演示了定制Writable TextPair的实现,以及“比较”的改进(干货。简洁演示了避开反序列化进行TextPair的设计和办法)。
Avro是一个独立于编程语言的数据序列化系统。
接下来是一个很有参考价值的实战示例,但没细看。回头参考。
(第四章从这里开始到章末,未细看。)
哪些应用领域不适合运行在hdfs上?
第五-八章:没什么意思,翻过去了,没细看。
第九章:重要。非常全面地介绍了hadoop配置,对实战具有很好的指导意义
9.4.5 hadoop其他属性
也是一些常见有用的属性。包括:
1 集群成员(hosts)
2 缓冲区大小(4KB no ok,128 KB常用)
3 HDFS块大小:64M?128/256更有助于降低namenode内存压力并向mapper传输更多数据。
4 保留的存储空间
5 回收站
6 作业调度:可将默认的FIFO替换为一个具有更多特性的调度器。
7 慢启动reduce
8 任务内存限制(重要)
在共享集群上不允许问题MR影响集群中各节点的正常工作。
可通过设定mapred.child.java.opts参数并锁定(final修饰)来控制mr任务对内存的使用量,但并不总是可行。
比如总有一些合理因素允许部分作业占用更多内存。
另外,有些任务能创建新进程,且其内存使用不受上述参数约束,例如streaming和管道作业就是如此。
怎么办?怎么加强任务的内存限制管理?两种机制:
第十章:管理Hadoop
重要。不过只浏览了一下。有时间最好参考着实操一下。
第十一章:PIG略过
第十二章:HIVE
回头来看
第十三章:HBASE
回头来看
第十四章:Zookeeper
(未细看。非常值得抽时间来细看。包含一个领导者选举示例;包含zk自身实现,其中展示了很多很多分布式开发相关的议题;包括使用zk为服务提供支持……应回来细看)
使用zk并不能避免分布式系统固有的“部分失败”,但它提供一组工具使你在构建分布式应用时能对部分失败进行正确处理。
第十五章:SQOOP略过
第十六章:实例学习
1 Last.fm 简单实用,基本应用。已看透。
2 hive:略过时陈旧,且和当前需求关系不密切,翻过。
3 Nutch:成就。略过。
4 Rackspace 没细看
5 cascading 没细看。
6 万亿数量级排序——没好好看。
7 pig+wukong探索十亿数量级边的网络图
略过
附录没啥可看。没看。