2.5.1 Ruby版本 .40 2.5.2 Python版本 .43 2.6 Hadoop Pipes …44 第3章 Hadoop分布式文件系统 .49 3.1 HDFS的设计… …49 32HDFS的概念 51 3.2.1 数据块… .51 3.2.2 namenode datanode ..52 3.2.3联邦HDFS. .53 3.2.4HDFS的高可用性… 54 3.3命令行接口… .56 3.4 Hadoop文件系统… 58 3.5JaVa接口… …62 3.5.1从Hadoop URL读取数据 63 3.5.2通过FileSystem API读取数据 .64 3.5.3写入数据… .68 3.5.4目录… .70 3.5.5查询文件系统… .70 3.5.6删除数据 .75 3.6数据流… .75 3.6.1剖析文件读取.… .75 3.6.2剖析文件写入… .78 3.6.3一致模型.… .81 3.7通过Fume和Sqoop导入数据… .83 3.8通过distcp并行复制… .84 3.9Hado0p存档 486 3.9.1使用Hadoop存档工具 …86 3.9.2不足 88 第4章Hadoop的/O操作.… 89 4.1 数据完整性… .89 4.1.1HDFS的数据完整性 .89 4.1.2 LocalFileSystem......... 91 4.1.3 ChecksumFileSystem.... .91 xviⅷ 目录
4.2压缩.… .92 4.2.1 codec........ .93 4.2.2压缩和输入分片 98 4.2.3在MapReduce中使用压缩 99 4.3序列化.….… .102 4.3.1 Writable接口.... 103 4.3.2 Writable类.… 105 4.3.3实现定制的Writable集合 114 43序列化框架… 118 4.4AVr0… …121 4.4.1Avro数据类型和模式… 122 4.4.2内存中的序列化和反序列化 .126 4.4.3Avr0数据文件 129 4.4.4互操作性 130 4.4.5模式的解析 .133 4.4.6排列顺序… .135 4.4.7关于Avro MapReduce, 137 4.4.8使用Avro MapReduce进行排序 141 4.4.9其他语言的Avro MapReduce.. …143 4.5基于文件的数据结构… 143 4.5.1关于SequenceFile. 143 4.5.2关于MapFile. 151 第5章MapReduce应用开发 157 5.1用于配置的AP1 157 5.1.1资源合并. 159 5.1.2可变的扩展… 160 5.2配置开发环境… .160 5.2.1管理配置.. …162 5.2.2 辅助类GenericOptionsParser,Tool和ToolRunner.l65 5.3用MRUnit来写单元测试 168 5.3.1关于Mapper. 168 5.3.2关于Reducer. .170 5.4本地运行测试数据… .171 目录 xix
5.4.1在本地作业运行器上运行作业 171 5.4.2测试驱动程序 .175 5.5 在集群上运行 .176 5.5.1打包作业 177 5.5.2启动作业. …179 5.5.3 MapReduce的Web界面 …181 5.5.4获取结果 184 5.5.5作业调试. 185 5.5.6 Hadoop日志 .190 5.5.7远程调试 .192 5.6作业调优… .193 5.7 MapReduce的工作流 .196 5.7.1将问题分解成MapReduce作业… .197 5.7.2关于JobControl… .198 5.7.3关于Apache0ozie.… .199 第6章 MapReduce的工作机制.… 205 6.1剖析MapReduce作业运行机制.. .205 6.1.1经典的MapReduce(MapReduce1)....206 6.1.2 YARN (MapReduce 2)................ .213 6.2失败… .219 6.2.1经典MapReduce中的失败 219 6.2.2YARN中的失败.… …222 6.3作业的调度… .224 6.3.1公平调度器. .225 6.3.2容量调度器 ,225 6.4 shuffle和排序.. 226 6.4.1map端. ,226 6.4.2 reduce端 228 6.4.3配置调优 .230 6.5任务的执行. .232 6.5.1任务执行环境 232 6.5.2 推测执行 .233 6.5.3关于OutputCommitters ...235 6.5.4任务JVM重用 …237 XX 目录
6.5.5跳过坏记录 238 第7章 MapReduce的类型与格式… 241 7.1 MapReduce的类型. 241 7.l.1默认的MapReduce作业 .245 7.l.2默认的Streaming作业.… .249 7.2输人格式 .252 7.2.1输人分片与记录 .252 7.2.2文本输人… 264 7.2.3二进制输人… 268 7.2.4多个输入… 269 7.2.5数据库输入(和输出) 270 7.3输出格式 271 7.3.1文本输出… 271 7.3.2 二进制输出 272 7.33多个输出 272 7.3.4延迟输出 277 7.3.5数据库输出 277 第8章 MapReduce的特性… .279 8.1计数器… …279 8.1.1内置计数器… 279 8.1.2用户定义的Java计数器.… .284 8.l.3用户定义的Streaming计数器 .289 8.2 排序… .289 8.2.1 准备… 290 8.2.2 部分排序 …291 8.2.3 全排序 …295 8.2.4 辅助排序… 299 8.3 连接 .305 8.3.1map端连接 .307 8.3.2 reduce端连接. …307 8.4 边数据分布… .311 8.4.1利用JobConf来配置作业 .311 目录 xxi
8.42分布式缓存.… 311 8.5 MapReduce库类 ,318 第9章 构建Hadoop集群 …321 9.1集群规范 .321 9.2集群的构建和安装 .325 9.2.1安装Java. .326 9.2.2创建Hadoop用户 .326 9.2.3安装Hado0p .326 9.2.4测试安装 …327 9.3SSH配置 …327 9.4 Hadoop配置.… .328 9.4.1 配置管理… .329 9.4.2环境设置 332 9.4.3 Hadoop守护进程的关键属性 .336 9.4.4 Hadoop守护进程的地址和端口 .341 9.4.5Hado0p的其他属性.… …343 9.4.6创建用户帐号… 346 9.5YARN配置 .346 9.5.1YARN守护进程的重要属性. .347 9.5,2YARN守护进程的地址和端口 .350 9.6安全性. .352 9.6.1 Kerberos和Hadoop… ..353 9.6.2委托令牌 355 9.6.3其他安全性改进 .356 9.7利用基准评测程序测试Hadoop集群 …358 9.7,1 Hadoop基准评测程序 358 9.7.2用户作业… 361 9.8云端的Hadoop. 361 第10章管理Hadoop .367 10.1 HDFS.... .…367 10.1.1永久性数据结构 .367 10.1.2 安全模式 373 xxii 目录