出版日期:2017年07月
ISBN:9787302465133
[十位:7302465134]
页数:--
定价:¥148.00
店铺售价:¥28.40
(为您节省:¥119.60)
店铺库存:1
本
正在处理购买信息,请稍候……
我要买:
本
* 如何购买
联系店主:
18179217950
店主推荐图书:
-
¥25.80
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2025-01-04 13:24:54]
刘*
临沂市
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2025-01-03 13:27:57]
小*
平顶山市
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2025-01-01 22:59:07]
葛**
金华市
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2024-12-30 19:46:33]
王*
威海市
-
100分
满分
确认收货后30天未评价,系统默认好评!
[2024-12-30 10:12:25]
钟**
佛山市
《Hadoop权威指南:大数据的存储与分析(第4版)》图书目录:
第Ⅰ部分 Hadoop基础知识
第1章 初识Hadoop 3
MapReduce作业 37
数据 56
读取数据 58
压缩 106
集合 121
面向列的格式 136
第Ⅱ部分 关于MapReduce
第6章 MapReduce应用开发 141
Tool和ToolRunner 149
运行作业 156
界面 165
MapReduce作业 177
《Hadoop权威指南:大数据的存储与分析(第4版)》文章节选:
第Ⅰ部分 Hadoop基础知识
第1章 初识Hadoop 3
MapReduce作业 37
数据 56
读取数据 58
压缩 106
集合 121
面向列的格式 136
第Ⅱ部分 关于MapReduce
第6章 MapReduce应用开发 141
Tool和ToolRunner 149
运行作业 156
界面 165
MapReduce作业 177<div class="Section0"> <p><span style="font-family: 方正小标宋简体;">第</span>Ⅰ部分 Hadoop基础知识</p> </div> <br clear="all" /> <div class="Section1"> <p class="23">第1<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">初识</span>Hadoop 3</p> <p class="22">1.1 数据!数据! 3</p> <p class="22">1.2 数据的存储与分析 5</p> <p class="22">1.3 查询所有数据 6</p> <p class="22">1.4 不仅仅是批处理 7</p> <p class="22">1.5 相较于其他系统的优势 8</p> <p class="20">1.5.1 关系型数据库管理系统 8</p> <p class="20">1.5.2 网格计算 10</p> <p class="20">1.5.3 志愿计算 11</p> <p class="22">1.6 Apache Hadoop发展简史 12</p> <p class="22">1.7 本书包含的内容 16</p> <p class="23">第2<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>MapReduce 19</p> <p class="22">2.1 气象数据集 19</p> <p class="22">2.2 使用Unix工具来分析数据 21</p> <p class="22">2.3 使用Hadoop来分析数据 22</p> <p class="20">2.3.1 map和reduce 23</p> <p class="20">2.3.2 Java MapReduce 24</p> <p class="22">2.4 横向扩展 31</p> <p class="20">2.4.1 数据流 31</p> <p class="20">2.4.2 combiner函数 35</p> <p class="20">2.4.3 运行分布式的<br />MapReduce作业 37</p> <p class="22">2.5 Hadoop Streaming 37</p> <p class="20">2.5.1 Ruby版本 38</p> <p class="20">2.5.2 Python版本 40</p> <p class="23">第3<span style="font-family: 黑体;">章</span> Hadoop分布式文件系统 42</p> <p class="22">3.1 HDFS的设计 42</p> <p class="22">3.2 HDFS的概念 44</p> <p class="20">3.2.1 数据块 44</p> <p class="20"> </p> <p class="20">3.2.2 namenode和datanode 45</p> <p class="20">3.2.3 块缓存 46</p> <p class="20">3.2.4 联邦HDFS 47</p> <p class="20">3.2.5 HDFS的高可用性 47</p> <p class="22">3.3 命令行接口 50</p> <p class="22">3.4 Hadoop文件系统 52</p> <p class="22">3.5 Java接口 56</p> <p class="20">3.5.1 从Hadoop URL读取<br />数据 56</p> <p class="20">3.5.2 通过FileSystem API<br />读取数据 58</p> <p class="20">3.5.3 写入数据 61</p> <p class="20">3.5.4 目录 63</p> <p class="20">3.5.5 查询文件系统 63</p> <p class="20">3.5.6 删除数据 68</p> <p class="22">3.6 数据流 68</p> <p class="20">3.6.1 剖析文件读取 68</p> <p class="20">3.6.2 剖析文件写入 71</p> <p class="20">3.6.3 一致模型 74</p> <p class="22">3.7 通过distcp并行复制 76</p> <p class="23">第4<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>YARN 78</p> <p class="22">4.1 剖析YARN应用运行机制 79</p> <p class="20">4.1.1 资源请求 80</p> <p class="20">4.1.2 应用生命期 81</p> <p class="20">4.1.3 构建YARN应用 81</p> <p class="22">4.2 YARN与MapReduce 1相比 82</p> <p class="22">4.3 YARN中的调度 85</p> <p class="20">4.3.1 调度选项 85</p> <p class="20">4.3.2 容量调度器配置 87</p> <p class="20">4.3.3 公平调度器配置 89</p> <p class="20">4.3.5 延迟调度 93</p> <p class="20">4.3.5 主导资源公平性 94</p> <p class="22">4.4 延伸阅读 95</p> <p class="23">第5<span style="font-family: 黑体;">章</span> Hadoop的I/O操作 96</p> <p class="22">5.1 数据完整性 96</p> <p class="20">5.1.1 HDFS的数据完整性 97</p> <p class="20">5.1.2 LocalFileSystem 98</p> <p class="20">5.1.3 ChecksumFileSystem 98</p> <p class="22">5.2 压缩 99</p> <p class="20">5.2.1 codec 100</p> <p class="20">5.2.2 压缩和输入分片 105</p> <p class="26"> </p> <p class="20">5.2.3 在MapReduce中使用<br />压缩 106</p> <p class="22">5.3 序列化 109</p> <p class="20">5.3.1 Writable接口 110</p> <p class="20">5.3.2 Writable类 112</p> <p class="20">5.3.3 实现定制的Writable<br />集合 121</p> <p class="20">5.3.4 序列化框架 125</p> <p class="22">5.4 基于文件的数据结构 127</p> <p class="20">5.4.1 关于SequenceFile 127</p> <p class="20">5.4.2 关于MapFile 135</p> <p class="20">5.4.3 其他文件格式和<br />面向列的格式 136</p> </div> <br clear="all" /> <div class="Section2"> <p align="center"><span style="font-family: 方正小标宋简体;">第</span>Ⅱ部分 关于MapReduce</p> </div> <br clear="all" /> <div class="Section3"> <p class="23">第6<span style="font-family: 黑体;">章</span> MapReduce应用开发 141</p> <p class="22">6.1 用于配置的API 142</p> <p class="20">6.1.1 资源合并 143</p> <p class="20">6.1.2 变量扩展 144</p> <p class="22">6.2 配置开发环境 144</p> <p class="20">6.2.1 管理配置 146</p> <p class="20">6.2.2 辅助类GenericOptionsParser,<br />Tool和ToolRunner 149</p> <p class="22">6.3 用MRUnit来写单元测试 152</p> <p class="20">6.3.1 关于Mapper 152</p> <p class="20">6.3.2 关于Reducer 156</p> <p class="22">6.4 本地运行测试数据 156</p> <p class="20">6.4.1 在本地作业运行器上<br />运行作业 156</p> <p class="20">6.4.2 测试驱动程序 158</p> <p class="22">6.5 在集群上运行 160</p> <p class="20">6.5.1 打包作业 160</p> <p class="20">6.5.2 启动作业 162</p> <p class="20">6.5.3 MapReduce的Web<br />界面 165</p> <p class="20">6.5.4 获取结果 167</p> <p class="20">6.5.5 作业调试 168</p> <p class="20">6.5.6 Hadoop日志 171</p> <p class="20">6.5.7 远程调试 173</p> <p class="22">6.6 作业调优 174</p> <p class="22">6.7 MapReduce的工作流 176</p> <p class="20">6.7.1 将问题分解成<br />MapReduce作业 177</p> <p class="20">6.7.2 关于JobControl 178</p> <p class="20">6.7.3 关于Apache Oozie 179</p> <p class="23">第7<span style="font-family: 黑体;">章</span> MapReduce的工作机制 184</p> <p class="22">7.1 剖析MapReduce作业运行<br />机制 184</p> <p class="20">7.1.1 作业的提交 185</p> <p class="20">7.1.2 作业的初始化 186</p> <p class="20">7.1.3 任务的分配 187</p> <p class="20">7.1.4 任务的执行 188</p> <p class="20">7.1.5 进度和状态的更新 189</p> <p class="20">7.1.6 作业的完成 191</p> <p class="22">7.2 失败 191</p> <p class="20">7.2.1 任务运行失败 191</p> <p class="20">7.2.2 application master<br />运行失败 193</p> <p class="20">7.2.3 节点管理器运行失败 193</p> <p class="20">7.2.4 资源管理器运行失败 194</p> <p class="22">7.3 shuffle和排序 195</p> <p class="20">7.3.1 map端 195</p> <p class="20">7.3.2 reduce端 197</p> <p class="20">7.3.3 配置调优 199</p> <p class="22">7.4 任务的执行 201</p> <p class="20">7.4.1 任务执行环境 201</p> <p class="20">7.4.2 推测执行 202</p> <p class="20">7.4.3 关于<br />OutputCommitters 204</p> <p class="23">第8<span style="font-family: 黑体;">章</span> MapReduce的<br />类型与格式 207</p> <p class="22">8.1 MapReduce的类型 207</p> <p class="20">8.1.1 默认的MapReduce<br />作业 212</p> <p class="20">8.1.2 默认的Streaming<br />作业 216</p> <p class="22">8.2 输入格式 218</p> <p class="20">8.2.1 输入分片与记录 218</p> <p class="20">8.2.2 文本输入 229</p> <p class="20">8.2.3 二进制输入 233</p> <p class="20">8.2.4 多个输入 234</p> <p class="20">8.2.5 数据库输入(和输出) 235</p> <p class="22">8.3 输出格式 236</p> <p class="20">8.3.1 文本输出 236</p> <p class="20">8.3.2 二进制输出 237</p> <p class="20">8.3.3 多个输出 237</p> <p class="20">8.3.4 延迟输出 242</p> <p class="20">8.3.5 数据库输出 242</p> <p class="23">第9<span style="font-family: 黑体;">章</span> MapReduce的特性 243</p> <p class="22">9.1 计数器 243</p> <p class="20">9.1.1 内置计数器 243</p> <p class="20">9.1.2 用户定义的Java<br />计数器 248</p> <p class="20">9.1.3 用户定义的Streaming<br />计数器 251</p> <p class="22">9.2 排序 252</p> <p class="20">9.2.1 准备 252</p> <p class="20">9.2.2 部分排序 253</p> <p class="20">9.2.3 全排序 255</p> <p class="20">9.2.4 辅助排序 259</p> <p class="22">9.3 连接 264</p> <p class="20">9.3.1 map端连接 266</p> <p class="20">9.3.2 reduce端连接 266</p> <p class="22">9.4 边数据分布 270</p> <p class="20">9.4.1 利用JobConf来配置<br />作业 270</p> <p class="20">9.4.2 分布式缓存 270</p> <p class="22">9.5 MapReduce库类 276</p> </div> <br clear="all" /> <div class="Section4"> <p align="center"><span style="font-family: 方正小标宋简体;">第</span>Ⅲ部分 Hadoop的操作</p> </div> <br clear="all" /> <div class="Section5"> <p class="23">第10<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">构建</span>Hadoop集群 279</p> <p class="22">10.1 集群规范 280</p> <p class="20">10.1.1 集群规模 281</p> <p class="20">10.1.2 网络拓扑 282</p> <p class="22">10.2 集群的构建和安装 284</p> <p class="20">10.2.1 安装Java 284</p> <p class="20">10.2.2 创建Unix 用户账号 284</p> <p class="20">10.2.3 安装Hadoop 284</p> <p class="20">10.2.4 SSH配置 285</p> <p class="20">10.2.5 配置Hadoop 286</p> <p class="20">10.2.6 格式化HDFS 文件<br />系统 286</p> <p class="20">10.2.7 启动和停止守护<br />进程 286</p> <p class="20">10.2.8 创建用户目录 288</p> <p class="22">10.3 Hadoop配置 288</p> <p class="20">10.3.1 配置管理 289</p> <p class="20">10.3.2 环境设置 290</p> <p class="20">10.3.3 Hadoop守护进程的<br />关键属性 293</p> <p class="20">10.3.4 Hadoop守护进程的<br />地址和端口 300</p> <p class="20">10.3.5 Hadoop的其他属性 303</p> <p class="22">10.4 **性 305</p> <p class="20">10.4.1 Kerberos和Hadoop 306</p> <p class="20">10.4.2 委托令牌 308</p> <p class="20">10.4.3 其他**性改进 309</p> <p class="22">10.5 利用基准评测程序测试<br />Hadoop集群 311</p> <p class="20">10.5.1 Hadoop基准评测<br />程序 311</p> <p class="20">10.5.2 用户作业 313</p> <p class="23">第11<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">管理</span>Hadoop 314</p> <p class="22">11.1 HDFS 314</p> <p class="20">11.1.1 **性数据结构 314</p> <p class="20">11.1.2 **模式 320</p> <p class="26"> </p> <p class="20">11.1.3 日志审计 322</p> <p class="20">11.1.4 工具 322</p> <p class="22">11.2 监控 327</p> <p class="20">11.2.1 日志 327</p> <p class="20">11.2.2 度量和JMX(Java<br />管理扩展) 328</p> <p class="22">11.3 维护 329</p> <p class="20">11.3.1 日常管理过程 329</p> <p class="20">11.3.2 委任和解除节点 331</p> <p class="20">11.3.3 升级 334</p> </div> <br clear="all" /> <div class="Section6"> <p align="center"><span style="font-family: 方正小标宋简体;">第</span>Ⅳ部分 Hadoop相关开源项目</p> </div> <br clear="all" /> <div class="Section7"> <p class="23">第12<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>Avro 341</p> <p class="22">12.1 Avro数据类型和模式 342</p> <p class="22">12.2 内存中的序列化和<br />反序列化特定API 347</p> <p class="22">12.3 Avro数据文件 349</p> <p class="22">12.4 互操作性 351</p> <p class="20">12.4.1 Python API 351</p> <p class="20">12.4.2 Avro工具集 352</p> <p class="22">12.5 模式解析 352</p> <p class="22">12.6 排列顺序 354</p> <p class="22">12.7 关于Avro MapReduce 356</p> <p class="22">12.8 使用Avro MapReduce<br />进行排序 359</p> <p class="22">12.9 其他语言的Avro 362</p> <p class="23">第13<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>Parquet 363</p> <p class="22">13.1 数据模型 364</p> <p class="22">13.2 Parquet文件格式 367</p> <p class="22">13.3 Parquet的配置 368</p> <p class="22">13.4 Parquet文件的读/写 369</p> <p class="20">13.4.1 Avro、Protocol Buffers<br />和Thrift 371</p> <p class="20">13.4.2 投影模式和读取<br />模式 373</p> <p class="22">13.5 Parquet MapReduce 374</p> <p class="23">第14<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>Flume 377</p> <p class="22">14.1 安装Flume 378</p> <p class="22">14.2 示例 378</p> <p class="22">14.3 事务和可靠性 380</p> <p class="22">14.4 HDFS Sink 382</p> <p class="22">14.5 扇出 385</p> <p class="20">14.5.1 交付保证 386</p> <p class="20">14.5.2 复制和复用选择器 387</p> <p class="22">14.6 通过代理层分发 387</p> <p class="22">14.7 Sink组 391</p> <p class="22">14.8 Flume与应用程序的集成 395</p> <p class="22">14.9 组件编目 395</p> <p class="22">14.10 延伸阅读 397</p> <p class="23">第15<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>Sqoop 398</p> <p class="22">15.1 获取Sqoop 398</p> <p class="22">15.2 Sqoop连接器 400</p> <p class="22">15.3 一个导入的例子 401</p> <p class="22">15.4 生成代码 404</p> <p class="22">15.5 深入了解数据库导入 405</p> <p class="20">15.5.1 导入控制 407</p> <p class="20">15.5.2 导入和一致性 408</p> <p class="20">15.5.3 增量导入 408</p> <p class="20">15.5.4 直接模式导入 408</p> <p class="22">15.6 使用导入的数据 409</p> <p class="22">15.7 导入大对象 412</p> <p class="22">15.8 执行导出 414</p> <p class="22">15.9 深入了解导出功能 416</p> <p class="20">15.9.1 导出与事务 417</p> <p class="20">15.9.2 导出和SequenceFile 418</p> <p class="22">15.10 延伸阅读 419</p> <p class="23">第16<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>Pig 420</p> <p class="22">16.1 安装与运行Pig 421</p> <p class="20">16.1.1 执行类型 422</p> <p class="20">16.1.2 运行Pig程序 423</p> <p class="20">16.1.3 Grunt 424</p> <p class="20">16.1.4 Pig Latin编辑器 424</p> <p class="22">16.2 示例 425</p> <p class="22">16.3 与数据库进行比�� 428</p> <p class="22">16.4 PigLatin 429</p> <p class="20">16.4.1 结构 430</p> <p class="20">16.4.2 语句 431</p> <p class="20">16.4.3 表达式 436</p> <p class="20">16.4.4 类型 437</p> <p class="20">16.4.5 模式 438</p> <p class="20">16.4.6 函数 443</p> <p class="20">16.4.7 宏 445</p> <p class="22">16.5 用户自定义函数 446</p> <p class="20">16.5.1 过滤UDF 447</p> <p class="20">16.5.2 计算UDF 450</p> <p class="20">16.5.3 加载UDF 452</p> <p class="22">16.6 数据处理操作 455</p> <p class="20">16.6.1 数据的加载和存储 455</p> <p class="20">16.6.2 数据的过滤 455</p> <p class="20">16.6.3 数据的分组与连接 458</p> <p class="20">16.6.4 数据的排序 463</p> <p class="20">16.6.5 数据的组合和切分 465</p> <p class="22">16.7 Pig实战 465</p> <p class="20">16.7.1 并行处理 465</p> <p class="20">16.7.2 匿名关系 466</p> <p class="20">16.7.3 参数代换 467</p> <p class="22">16.8 延伸阅读 468</p> <p class="23">第17<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>Hive 469</p> <p class="22">17.1 安装Hive 470</p> <p class="20">Hive的shell环境 471</p> <p class="22">17.2 示例 472</p> <p class="22">17.3 运行Hive 473</p> <p class="20">17.3.1 配置Hive 473</p> <p class="20">17.3.2 Hive服务 476</p> <p class="20">17.3.3 Metastore 478</p> <p class="22">17.4 Hive与传统数据库相比 480</p> <p class="20">17.4.1 读时模式vs.写时<br />模式 480</p> <p class="20">17.4.2 更新、事务和索引 481</p> <p class="20">17.4.3 其他SQL-on-Hadoop<br />技术 482</p> <p class="22">17.5 HiveQL 483</p> <p class="20">17.5.1 数据类型 484</p> <p class="20">17.5.2 操作与函数 487</p> <p class="22">17.6 表 488</p> <p class="20">17.6.1 托管表和外部表 488</p> <p class="20">17.6.2 分区和桶 490</p> <p class="20">17.6.3 存储格式 494</p> <p class="20">17.6.4 导入数据 498</p> <p class="20">17.6.5 表的修改 500</p> <p class="20">17.6.6 表的丢弃 501</p> <p class="22">17.7 查询数据 501</p> <p class="20">17.7.1 排序和聚集 501</p> <p class="20">17.7.2 MapReduce脚本 502</p> <p class="20">17.7.3 连接 503</p> <p class="20">17.7.4 子查询 506</p> <p class="20">17.7.5 视图 507</p> <p class="22">17.8 用户定义函数 508</p> <p class="20">17.8.1 写UDF 510</p> <p class="20">17.8.2 写UDAF 512</p> <p class="22">17.9 延伸阅读 516</p> <p class="23">第18<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>Crunch 517</p> <p class="22">18.1 示例 518</p> <p class="22">18.2 Crunch核心API 521</p> <p class="20">18.2.1 基本操作 522</p> <p class="20">18.2.2 类型 527</p> <p class="20">18.2.3 源和目标 530</p> <p class="20">18.2.4 函数 532</p> <p class="20">18.2.5 物化 535</p> <p class="22">18.3 管线执行 537</p> <p class="20">18.3.1 运行管线 538</p> <p class="20">18.3.2 停止管线 539</p> <p class="20">18.3.3 查看Crunch计划 540</p> <p class="20">18.3.4 迭代算法 543</p> <p class="20">18.3.5 给管线设置检查点 544</p> <p class="22">18.4 Crunch库 545</p> <p class="22">18.5 延伸阅读 547</p> <p class="23">第19<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>Spark 548</p> <p class="22">19.1 安装Spark 549</p> <p class="22">19.2 示例 549</p> <p class="20">19.2.1 Spark应用、作业、<br />阶段和任务 551</p> <p class="20">19.2.2 Scala独立应用 552</p> <p class="20">19.2.3 Java示例 553</p> <p class="20">19.2.4 Python示例 554</p> <p class="22">19.3 弹性分布式数据集 555</p> <p class="20">19.3.1 创建 555</p> <p class="20">19.3.2 转换和动作 557</p> <p class="20">19.3.3 持久化 561</p> <p class="20">19.3.4 序列化 563</p> <p class="22">19.4 共享变量 564</p> <p class="20">19.4.1 广播变量 564</p> <p class="20">19.4.2 累加器 565</p> <p class="22">19.5 剖析Spark作业运行机制 565</p> <p class="20">19.5.1 作业提交 566</p> <p class="20">19.5.2 DAG的构建 566</p> <p class="20">19.5.3 任务调度 569</p> <p class="20">19.5.4 任务执行 570</p> <p class="22">19.6 执行器和集群管理器 570</p> <p class="22">19.7 延伸阅读 574</p> <p class="23">第20<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>HBase 575</p> <p class="22">20.1 HBase基础 575</p> <p class="22">20.2 概念 576</p> <p class="20">20.2.1 数据模型的<br />“旋风之旅” 576</p> <p class="20">20.2.2 实现 578</p> <p class="22">20.3 安装 581</p> <p class="22">20.4 客户端 584</p> <p class="20">20.4.1 Java 584</p> <p class="20">20.4.2 MapReduce 588</p> <p class="20">20.4.3 REST和Thrift 589</p> <p class="22">20.5 创建在线查询应用 589</p> <p class="20">20.5.1 模式设计 590</p> <p class="20">20.5.2 加载数据 591</p> <p class="20">20.5.3 在线查询 595</p> <p class="22">20.6 HBase和RDBMS的比较 598</p> <p class="20">20.6.1 成功的服务 599</p> <p class="20">20.6.2 HBase 600</p> <p class="22">20.7 Praxis 601</p> <p class="20">20.7.1 HDFS 601</p> <p class="20">20.7.2 用户界面 602</p> <p class="20">20.7.3 度量 602</p> <p class="20">20.7.4 计数器 602</p> <p class="22">20.8 延伸阅读 602</p> <p class="23">第21<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">关于</span>ZooKeeper 604</p> <p class="22">21.1 安装和运行ZooKeeper 605</p> <p class="22">21.2 示例 607</p> <p class="20">21.2.1 ZooKeeper中的<br />组成员关系 608</p> <p class="20">21.2.2 创建组 608</p> <p class="20">21.2.3 加入组 611</p> <p class="20">21.2.4 列出组成员 612</p> <p class="20">21.2.5 删除组 614</p> <p class="22">21.3 ZooKeeper服务 615</p> <p class="20">21.3.1 数据模型 615</p> <p class="20">21.3.2 操作 618</p> <p class="20">21.3.3 实现 622</p> <p class="20">21.3.4 一致性 624</p> <p class="20">21.3.5 会话 626</p> <p class="20">21.3.6 状态 628</p> <p class="22">21.4 使用ZooKeeper来构建<br />应用 629</p> <p class="20">21.4.1 配置服务 629</p> <p class="20">21.4.2 可复原的ZooKeeper<br />应用 633</p> <p class="20">21.4.3 锁服务 637</p> <p class="20"><br clear="all" />21.4.4分布式数据<br />结构和协议 639</p> <p class="22">21.5 生产环境中的ZooKeeper 640</p> <p class="20">21.5.1 可恢复性和性能 641</p> <p class="20">21.5.2 配置 642</p> <p class="22">21.6 延伸阅读 643</p> </div> <br clear="all" /> <div class="Section8"> <p align="center"><span style="font-family: 方正小标宋简体;">第</span>Ⅴ部分 案例学习</p> </div> <br clear="all" /> <div class="Section9"> <p class="23">第22<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">**公司塞纳</span>(Cerner)<br />的可聚合数据 647</p> <p class="22">22.1 从多CPU到语义集成 647</p> <p class="22">22.2 进入Apache Crunch 648</p> <p class="22">22.3 建立全貌 649</p> <p class="22">22.4 集成健康**数据 651</p> <p class="22">22.5 框架之上的可组合性 654</p> <p class="22">22.6 下一步 655</p> <p class="23">第23<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">生物数据科学:</span><br />用软件拯救生命 657</p> <p class="22">23.1 DNA的结构 659</p> <p class="22">23.2 遗传密码:将DNA字符<br />转译为蛋白质 660</p> <p class="22">22.3 将DNA想象成源代码 661</p> <p class="22">23.4 人类基因组计划和参考<br />基因组 663</p> <p class="22">22.5 DNA测序和比对 664</p> <p class="22">23.6 ADAM,一个可扩展的<br />基因组分析平台 666</p> <p class="22">23.7 使用Avro接口描述语言进行<br />自然语言编程 666</p> <p class="22">23.8 使用Parquet进行面向列的<br />存取 668</p> <p class="22">23.9 一个简单例子:用Spark和<br />ADAM做<i>k</i>-mer计数 669</p> <p class="22">23.10 从个性化广告到个性化<br />** 672</p> <p class="22">23.11 联系我们 673</p> <p class="23">第24<span style="font-family: 黑体;">章</span> <span style="font-family: 黑体;">开源项目</span>Cascading 674</p> <p class="22">24.1 字段、元组和管道 675</p> <p class="22">24.2 操作 678</p> <p class="22">24.3 Taps,Schemes和Flows 680</p> <p class="22">24.4 Cascading实践应用 681</p> <p class="22">24.5 灵活性 684</p> <p class="22">24.6 ShareThis中的Hadoop和<br />Cascading 685</p> <p class="22">24.7 总结 689</p> <p class="23">附录A <span style="font-family: 黑体;">安装</span>Apache Hadoop 691</p> <p class="23">附录B <span style="font-family: 黑体;">关于</span>CDH 697</p> <p class="23">附录C <span style="font-family: 黑体;">准备</span>NCDC气象数据 699</p> <p class="23">附录D <span style="font-family: 黑体;">新版和旧版</span>Java <br />MapReduce API 702</p> </div> <br clear="all" />显示全部信息前 言
第2版新增内容《Hadoop权威指南》(第2版)新增两章内容,分别介绍Sqoop和Hive(第15章和第17章),新增一个小节专门介绍Avro(参见第12章),补充了关于Hadoop新增**特性的介绍(参见第10章)以及一个介绍如何使用Hadoop来分析海量网络图的新实例分析。
1005 Gravenstein Highway North
Sebastopol, CA 95472
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
http://www.oreilly.com.cn/book.php?bn=978-7-302-46513-3(中文版)
http://www.oreilly.com.cn<p> </p> <p class="22"> </p> <h1>前言</h1> <p> </p> <p> </p> <p>数学科普作家马丁·<span style="font-family: 汉仪书宋一简;">加德纳</span>(Martin Gardner)<span style="font-family: 汉仪书宋一简;">曾经在一次采访中谈到:</span></p> <p>“在我的世界里,只有微积分。这是我的专栏取得成功的奥秘。我花了很多时间才明白如何以大多数读者都能明白的方式将自己所知道的东西娓娓道来。”<sup> </sup></p> <p>这也是我对Hadoop的诸多感受。它的内部工作机制非常复杂,是一个集分布式系统理论、实际工程和常识于一体的系统。而且,对门外汉而言,Hadoop<span style="font-family: 汉仪书宋一简;">更像是</span>“天外来客”。</p> <p><span style="font-family: 汉仪书宋一简;">但</span>Hadoop<span style="font-family: 汉仪书宋一简;">其实并没有那么让人费解,抽丝剥茧,我们来看看它的“庐山真面目”。</span><span style="font-family: 'Times New Roman';">H</span>adoop<span style="font-family: 汉仪书宋一简;">提供的用于处理大数据的工具都非常简单。如果说这些工具有一个共同的主题,那就是它们更抽象,为</span>(<span style="font-family: 汉仪书宋一简;">有大量数据需要存储和分析却没有足够的时间、技能或者不想成为分布式系统专家的</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">程序员提供一套组件,使其能够利用</span><span style="font-family: 'Times New Roman';">Hadoop</span><span style="font-family: 汉仪书宋一简;">来构建一个处理数据的基础平台。</span></p> <p>这样一个简单、通用的特性集,促使我在开始使用Hadoop时便明显感觉到Hadoop<span style="font-family: 汉仪书宋一简;">真的值得推广。但*开始的时候</span>(2006<span style="font-family: 汉仪书宋一简;">年初</span>)<span style="font-family: 汉仪书宋一简;">,安装、配置和</span>Hadoop<span style="font-family: 汉仪书宋一简;">应用编程是一门高深的艺术。之后,情况确实有所改善:文档增多了;示例增多了;碰到问题时,可以向大量活跃的邮件列表发邮件求助。对新手而言,*大的障碍是理解</span>Hadoop<span style="font-family: 汉仪书宋一简;">有哪些能耐,它擅长什么,它如何使用。这些问题使我萌发了写作本书的动机。</span></p> <p>Apache Hadoop<span style="font-family: 汉仪书宋一简;">社区的发展来之不易。从本书的第</span>1<span style="font-family: 汉仪书宋一简;">版发行以来,</span>Hadoop<span style="font-family: 汉仪书宋一简;">项目如雨后春笋般发展兴旺。</span>“大数据”已成为大家耳熟能详的名词术语。<span style="font-family: 汉仪书宋一简;">当前,软件在可用性、性能、可靠性、可扩展性和可管理性方面都实现了巨大的飞跃。在</span>Hadoop<span style="font-family: 汉仪书宋一简;">平台上搭建和运行的应用增长迅猛。事实上,对任何一个人来说,跟踪这些发展动向都很困难。但为了让更多的人采用</span>Hadoop,我认为我们要让Hadoop更好用。这需要创建更多新的工具,集成更多的系统,创建新的增强型API。我希望自己能够参与,同时也希望本书能够鼓励并吸引其他人也参与Hadoop项目。</p> <h3>说明 </h3> <p>在文中讨论特定的Java<span style="font-family: 汉仪书宋一简;">类时,我常常会忽略包的名称以免啰嗦杂乱。如果想知道一个类在哪个包内,可以查阅</span>Hadoop<span style="font-family: 汉仪书宋一简;">或相关项目的</span><span style="font-family: 'Times New Roman';">Java API </span><span style="font-family: 汉仪书宋一简;">文档</span><span style="font-family: 'Times New Roman';">(</span>Apache Hadoop主页<i>http://hadoop.apache.org</i><span style="font-family: 汉仪书宋一简;">上有链接可以访问</span>)<span style="font-family: 汉仪书宋一简;">。如果使用</span>IDE<span style="font-family: 汉仪书宋一简;">编程,其自动补全机制</span>(<span style="font-family: 汉仪书宋一简;">也称“自动完成机制”</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">能够帮助你找到你需要的东西。</span></p> <p>与此类似,尽管偏离传统的编码规范,但如果要导入同一个包的多个类,程<span style="font-family: 汉仪书宋一简;">序可以使用星号通配符来节省空间</span>(<span style="font-family: 汉仪书宋一简;">例如</span>import org.apache.hadoop. io.*)。</p> <p>本书中的示例代码可以从本书网站下载,网址为<i>http://www.hadoopbook.com/</i>。可以根据网页上的指示获取本书示例所用的数据集以及运行本书示例的详细说明、更新链接、额外的资源与我的博客。</p> <h3><span style="font-family: 汉仪中黑简;">第</span>4<span style="font-family: 汉仪中黑简;">版新增内容</span></h3> <p><span style="font-family: 汉仪书宋一简;">第</span>4<span style="font-family: 汉仪书宋一简;">版的主题是</span><span style="font-family: 'Times New Roman';">Hadoop</span> 2<span style="font-family: 汉仪书宋一简;">。</span>Hadoop 2<span style="font-family: 汉仪书宋一简;">系列发行版本是当前应用*活跃的系列,且包含</span><span style="font-family: 'Times New Roman';">Hadoop</span><span style="font-family: 汉仪书宋一简;">的*稳定的版本</span>。</p> <p><span style="font-family: 汉仪书宋一简;">第</span>4<span style="font-family: 汉仪书宋一简;">版新增的章节包括</span><span style="font-family: 'Times New Roman';">YARN(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">4</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Parquet(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">13</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Flume(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">14</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Crunch(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">18</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">和</span><span style="font-family: 'Times New Roman';">Spark(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">19</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">。此外,为了帮助读者更方便地阅读本书,第</span><span style="font-family: 'Times New Roman';">1</span><span style="font-family: 汉仪书宋一简;">章新增了一节“本书包含的内容”</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">参见</span><span style="font-family: 'Times New Roman';">1.7</span><span style="font-family: 汉仪书宋一简;">节</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">。</span></p> <p><span style="font-family: 汉仪书宋一简;">第</span>4<span style="font-family: 汉仪书宋一简;">版包括两个新的实例学习</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">22</span><span style="font-family: 汉仪书宋一简;">章和第</span><span style="font-family: 'Times New Roman';">23</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">:一个是关于</span><span style="font-family: 'Times New Roman';">Hadoop</span><span style="font-family: 汉仪书宋一简;">如何应</span><span style="font-family: 汉仪书宋一简;">用于**健康系统,另一个是关于将</span>Hadoop<span style="font-family: 汉仪书宋一简;">技术如何应用于基因数据处理。旧版本中的实例学习可以在线查到,网址</span>为<i>http:/bit.ly/hadoop_tdg_prev</i>。</p> <p><span style="font-family: 汉仪书宋一简;">为了和</span>Hadoop<span style="font-family: 汉仪书宋一简;">*新发行版本及其相关项目同步,第</span><span style="font-family: 'Times New Roman';">4</span><span style="font-family: 汉仪书宋一简;">版对原有章节进行了修订、更新和优化。</span></p> <h3><span style="font-family: 汉仪中黑简;">第</span>3<span style="font-family: 汉仪中黑简;">版新增内容</span></h3> <p><span style="font-family: 汉仪书宋一简;">第</span>3<span style="font-family: 汉仪书宋一简;">版概述</span><span style="font-family: 'Times New Roman';">Apache Hadoop 1.x(</span><span style="font-family: 汉仪书宋一简;">以前的</span><span style="font-family: 'Times New Roman';">0.20)</span><span style="font-family: 汉仪书宋一简;">系列发行版本,以及新近的</span><span style="font-family: 'Times New Roman';">0.22</span><span style="font-family: 汉仪书宋一简;">和</span><span style="font-family: 'Times New Roman';">2.x(</span><span style="font-family: 汉仪书宋一简;">以前的</span><span style="font-family: 'Times New Roman';">0.23)</span><span style="font-family: 汉仪书宋一简;">系列。除了少部分</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">文中有说明</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">例外,本书包含的所有范例都在这些版本上运行过。</span></p> <p><span style="font-family: 汉仪书宋一简;">第</span>3<span style="font-family: 汉仪书宋一简;">版的大部分范例代码都使用了新的</span><span style="font-family: 'Times New Roman';">MapReduce API</span><span style="font-family: 汉仪书宋一简;">。因为旧的</span><span style="font-family: 'Times New Roman';">API</span><span style="font-family: 汉仪书宋一简;">仍然应用很广,所以文中在讨论新的</span><span style="font-family: 'Times New Roman';">API</span><span style="font-family: 汉仪书宋一简;">时我们还会继续讨论它,使用旧</span><span style="font-family: 'Times New Roman';">API</span><span style="font-family: 汉仪书宋一简;">的对应范例代码可以到本书的配套网站下载。</span></p> <p>Hadoop 2.0<span style="font-family: 汉仪书宋一简;">*主要的变化是新增的</span><span style="font-family: 'Times New Roman';">MapReduce</span><span style="font-family: 汉仪书宋一简;">运行时</span><span style="font-family: 'Times New Roman';">MapReduce 2</span><span style="font-family: 汉仪书宋一简;">,它建立在一个新的分布式资源管理系统之上,该系统称为</span><span style="font-family: 'Times New Roman';">YARN</span><span style="font-family: 汉仪书宋一简;">。针对建立在</span><span style="font-family: 'Times New Roman';">YARN</span><span style="font-family: 汉仪书宋一简;">之上的</span><span style="font-family: 'Times New Roman';">MapReduce</span><span style="font-family: 汉仪书宋一简;">,第</span><span style="font-family: 'Times New Roman';">3</span><span style="font-family: 汉仪书宋一简;">版增加了相关的介绍,包括它的工作机制</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">7</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">及如何运行</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">10</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">。</span></p> <p><span style="font-family: 汉仪书宋一简;">第</span>3<span style="font-family: 汉仪书宋一简;">版还增加了更多对</span><span style="font-family: 'Times New Roman';">MapReduce</span><span style="font-family: 汉仪书宋一简;">的介绍,包括丰富的开发实践,比如用</span><span style="font-family: 'Times New Roman';">Maven</span><span style="font-family: 汉仪书宋一简;">打包</span><span style="font-family: 'Times New Roman';">MapReduce</span><span style="font-family: 汉仪书宋一简;">作业,设置用户的</span><span style="font-family: 'Times New Roman';">Java</span><span style="font-family: 汉仪书宋一简;">类路径,用</span><span style="font-family: 'Times New Roman';">MRUnit</span><span style="font-family: 汉仪书宋一简;">写测试等</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">这些内容都请参见第</span><span style="font-family: 'Times New Roman';">6</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">。第</span><span style="font-family: 'Times New Roman';">3</span><span style="font-family: 汉仪书宋一简;">版还深入介绍了一些特性,如输出</span><span style="font-family: 'Times New Roman';">committer</span><span style="font-family: 汉仪书宋一简;">和分布式缓存</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">9</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">,任务内存监控</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">10</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">。第</span><span style="font-family: 'Times New Roman';">3</span><span style="font-family: 汉仪书宋一简;">版还新增了两小节内容,一节是关于如何写</span><span style="font-family: 'Times New Roman';">MapReduce</span><span style="font-family: 汉仪书宋一简;">作业来处理</span><span style="font-family: 'Times New Roman';">Avro</span><span style="font-family: 汉仪书宋一简;">数据</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">参见第</span><span style="font-family: 'Times New Roman';">12</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">,另一节是关于如何在</span><span style="font-family: 'Times New Roman';">Oozie</span><span style="font-family: 汉仪书宋一简;">中运行一个简单的</span><span style="font-family: 'Times New Roman';">MapReduce</span><span style="font-family: 汉仪书宋一简;">工作流</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">参见第</span><span style="font-family: 'Times New Roman';">6</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">。</span></p> <p><span style="font-family: 汉仪书宋一简;">关于</span>HDFS<span style="font-family: 汉仪书宋一简;">的章节</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">3</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">,新增了对高可用性、联邦</span><span style="font-family: 'Times New Roman';">HDFS</span><span style="font-family: 汉仪书宋一简;">、新的</span><span style="font-family: 'Times New Roman';">WebHDFS</span><span style="font-family: 汉仪书宋一简;">和</span>HttpFS<span style="font-family: 汉仪书宋一简;">文件系统的介绍。</span></p> <p><span style="font-family: 汉仪书宋一简;">对</span>Pig<span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Hive</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Sqoop</span><span style="font-family: 汉仪书宋一简;">和</span><span style="font-family: 'Times New Roman';">ZooKeeper</span><span style="font-family: 汉仪书宋一简;">的相关介绍,第</span><span style="font-family: 'Times New Roman';">3</span><span style="font-family: 汉仪书宋一简;">版全部进行了相应的扩展,广泛介绍其*新发行版本中的新特性和变化。</span></p> <p><span style="font-family: 汉仪书宋一简;">此外,第</span>3<span style="font-family: 汉仪书宋一简;">版还对第</span><span style="font-family: 'Times New Roman';">2</span><span style="font-family: 汉仪书宋一简;">版进行了彻底的更新、修订和优化。</span></p> <h3><br clear="all" /><span style="font-family: 汉仪中黑简;">第</span>2<span style="font-family: 汉仪中黑简;">版新增内容</span></h3> <p><span style="font-family: 汉仪书宋一简;">《</span>Hadoop<span style="font-family: 汉仪书宋一简;">权威指南》</span><span style="font-family: 'Times New Roman';">(</span><span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">2</span><span style="font-family: 汉仪书宋一简;">版</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">新增两章内容,分别介绍</span>Sqoop<span style="font-family: 汉仪书宋一简;">和</span><span style="font-family: 'Times New Roman';">Hive</span>(<span style="font-family: 汉仪书宋一简;">第</span><span style="font-family: 'Times New Roman';">1</span>5<span style="font-family: 汉仪书宋一简;">章和第</span>17<span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">,新增一个小节专门介绍</span>Avro(<span style="font-family: 汉仪书宋一简;">参见第</span><span style="font-family: 'Times New Roman';">12</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">,补充了关于</span>Hadoop<span style="font-family: 汉仪书宋一简;">新增**特性的介绍</span>(<span style="font-family: 汉仪书宋一简;">参见第</span><span style="font-family: 'Times New Roman';">10</span><span style="font-family: 汉仪书宋一简;">章</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">以及一个介绍如何使用</span>Hadoop来分析海量网络图的新实例分析。</p> <p><span style="font-family: 汉仪书宋一简;">第</span>2<span style="font-family: 汉仪书宋一简;">版继续介绍</span>Apache Hadoop 0.20系列发行版本,因为当时*新、*稳定的发行版本。书中有时会提到一些*新发行版本中的一些新特性,但在**介绍这些特性时,有说明具体的Hadoop版本号。</p> <h3>本书采用的约定</h3> <p>本书采用以下排版约定。</p> <p><i>斜体</i><i> </i><i> </i></p> <p>用于表明新的术语、URL、电子邮件地址、文件名和文件扩展名。</p> <p class="24"><span style="font-family: 黑体;">等宽字体</span>Consolas</p> <p><span style="font-family: 汉仪书宋一简;">用于程序清单,在正文段落中出现的程序元素</span>(<span style="font-family: 汉仪书宋一简;">如变量或函数名</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">、数据库、数据类型、环境变量、语句和关键字也采用这样的字体。</span></p> <p><b><span style="font-family: 汉仪书宋一简;">等宽字体</span>Consolas <span style="font-family: 汉仪书宋一简;">加粗</span></b></p> <p>用于显示命令或应该由用户键入的其他文本。</p> <p><i><span style="font-family: 汉仪书宋一简;">等宽字体</span>Consolas <span style="font-family: 汉仪书宋一简;">斜体</span></i></p> <p>表明这里的文本需要替换为用户提供的值或其他由上下文确定的值。</p> <p class="17"> </p> <p class="23">这个图标表示通用的说明。</p> <p> </p> <p class="17"> </p> <p class="23">这个图标表示重要的指示或建议。</p> <p> </p> <p class="17"> </p> <p class="23">这个图标表示警告或需要注意的问题。</p> <p class="23"> </p> <h2>示例代码的使用</h2> <p>本书<span style="font-family: 汉仪书宋一简;">的补充材料</span>(代码、示例及练习等)可以从本书网站(<i>http://www.hadoopbook.com</i>)<span style="font-family: 汉仪书宋一简;">或</span>GitHub(<i>https://github.com/tomwhite/hadoop-book/</i>)<span style="font-family: 汉仪书宋一简;">下载。</span></p> <p>本书的目的是帮助读者完成工作。通常情况下,可以在你的程序或文档中使用本书中给出的代码。不必联系我们获得代码使用授权,除非你需要使用大量的代码。例如,在写程序的时候引用几段代码不需要向我们申请许可。但以光盘方式销售或重新发行O’Reilly书中的示例的确需要获得许可。引用本书或引用本书中的示例代码来回答问题也不需要申请许可。但是,如果要将本书中的大量范例代码加入你的产品文档,则需要申请许可。</p> <p>我们欣赏你在引用时注明出处,但不强求。引用通常包括书名、作者、出版社和ISBN,<span style="font-family: 汉仪书宋一简;">如</span>“<i>Hadoop</i>: <i>The Definitive Guide</i>, Fourth Edition, by Tom White(O’Reilly).Copyright 2015 Tom White,978-1-491-90163-2”。</p> <p>如果觉得使用示例代码的情况不属于前面列出的合理使用或许可范围,请通过电子邮件联系我们,邮箱地址为<a href="mailto:permissions@oreilly.com"><i>permissions@oreilly.com</i></a>。</p> <h3>Safari Books Online</h3> <p>Safari Books Online(<i>www.safaribooksonline.com</i>)<span style="font-family: 汉仪书宋一简;">是一个按需定制的数字图书馆,以图书和视频的形式提供全球技术领 域和经管领域内知名作者的专业作品。</span></p> <p><span style="font-family: 汉仪书宋一简;">专业技术人员、软件开发人员、网页设计人员、商务人员和创意专家将</span>Safari Books Online<span style="font-family: 汉仪书宋一简;">用作自己开展研究、解决问题、学习和完成资格认证培训的重要来源。</span></p> <p>Safari Books Online<span style="font-family: 汉仪书宋一简;">为企业、政府部门、教育机构和个人提供广泛、灵活的计划和定价。</span></p> <p>在这里,成员们通过一个可以全文检索的数据库中就能够访问数<span style="font-family: 汉仪书宋一简;">千种图书、培训视频和正式出版之前的书稿</span>,这些内容提供商有O'Reilly Media<span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Prentice Hall Professional</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Addison-Wesley Professional</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Microsoft Press</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Sams</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Que</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Peachpit Press</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Focal Press</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Cisco Press</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">John Wiley & Sons</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Syngress</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Morgan Kaufmann</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">IBM Redbooks</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Packt</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Adobe Press</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">FT Press</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Apress</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Manning</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">New Riders</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">McGraw-Hill</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Jones & Bartlett</span><span style="font-family: 汉仪书宋一简;">、</span><span style="font-family: 'Times New Roman';">Course Technology</span><span style="font-family: 汉仪书宋一简;">及其他上百家出版社</span>。欢迎访问Safari Books Online,了解<span style="font-family: 汉仪书宋一简;">更多</span>详情<span style="font-family: 汉仪书宋一简;">。</span> </p> <h3>联系我们</h3> <p><span style="font-family: 汉仪书宋一简;">对于本书,如果有任何意见或疑问,请</span>通过<span style="font-family: 汉仪书宋一简;">以下地址联系出版商:</span></p> <p class="17"> </p> <p><span style="font-family: 汉仪书宋一简;">美国:</span></p> <p>O’Reilly Media, Inc.<br />1005 Gravenstein Highway North<br />Sebastopol, CA 95472</p> <p><span style="font-family: 汉仪书宋一简;">中国:</span><br /><span style="font-family: 汉仪书宋一简;">北京市西城区西直门南大街</span>2<span style="font-family: 汉仪书宋一简;">号成铭大厦</span><span style="font-family: 'Times New Roman';">C</span><span style="font-family: 汉仪书宋一简;">座</span><span style="font-family: 'Times New Roman';">807</span><span style="font-family: 汉仪书宋一简;">室</span><span style="font-family: 'Times New Roman';">(100035)</span><br /><span style="font-family: 汉仪书宋一简;">奥莱利技术咨询</span>(<span style="font-family: 汉仪书宋一简;">北京</span><span style="font-family: 'Times New Roman';">)</span><span style="font-family: 汉仪书宋一简;">有限公司</span></p> <p><span style="font-family: 汉仪书宋一简;">本书也有相关的网页,我们在上面列出了勘误表、范例以及其他一些信息。</span>网址如下<span style="font-family: 汉仪书宋一简;">:</span></p> <p><i>http://bit.ly/hadoop_tdg_4e</i>(<span style="font-family: 汉仪书宋一简;">英文版</span><span style="font-family: 'Times New Roman';">)</span><br /><i>http://www.oreilly.com.cn/book.php?bn=978-7-302-</i><i>46513-3</i>(<span style="font-family: 汉仪书宋一简;">中文版</span><span style="font-family: 'Times New Roman';">)</span></p> <p class="17"> </p> <p><span style="font-family: 汉仪书宋一简;">对本书做出评论或者询问技术问题,请发送</span>E-mail<span style="font-family: 汉仪书宋一简;">至</span>以下邮箱<span style="font-family: 汉仪书宋一简;">:</span></p> <p><i>bookquestions@oreilly.com</i><i> </i></p> <p class="17"> </p> <p>如果<span style="font-family: 汉仪书宋一简;">希望获得关于本书、会议、资源**和</span>O’Reilly<span style="font-family: 汉仪书宋一简;">的更多信息,请访问</span>以下网址<span style="font-family: 汉仪书宋一简;">:</span></p> <p><i>http://www.oreilly.com</i><i><br /></i><i>http://www.oreilly.com.cn </i><i> </i></p> <h3><br clear="all" />致谢</h3> <p>在本书写作期间,我仰赖于许多人的帮助,直接的或间接的。感谢Hadoop社区,我从中学到很多,这样的学习仍将继续。</p> <p>特别感谢Michael Stack和Jonathan Gray,HBase这一章的内容就是他们写的。我还要感谢Adrian Woodhead,Marc de Palol,Joydeep Sen Sarma,Ashish Thusoo,Andrzej Bia?ecki,Stu Hood,Chris K. Wensel和 Owen O’Malley,他们提供了学习实例。</p> <p>感谢为草稿提出有用建议和改进建议的评审人:Raghu Angadi<span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Matt Biddulph</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Christophe Bisciglia</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Ryan Cox</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Devaraj Das</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Alex Dorman</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Chris Douglas</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Alan Gates</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Lars George</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Patrick Hunt</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Aaron Kimball</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Peter Krey</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Hairong Kuang</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Simon Maxen</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Olga Natkovich</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Benjamin Reed</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Konstantin Shvachko</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Allen</span> Wittenauer<span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Matei Zaharia</span>和 Philip Zeyliger。Ajay Anand组织本书的评审并使其顺利完成。Philip (<span style="font-family: 汉仪书宋一简;">“</span>flip”<span style="font-family: 'Times New Roman';">) </span>Komer帮助我获得了NCDC气温数据,使本书示例很有特色。特别感谢Owen O’Malley 和 Arun C. Murthy,他们为我清楚解释了MapReduce中shuffle的复杂过程。当然,如果有任何错误,得归咎于我。</p> <p><span style="font-family: 汉仪书宋一简;">对于第</span>2<span style="font-family: 汉仪书宋一简;">版,我特别感谢</span> Jeff Bean<span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Doug Cutting</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Glynn Durham</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Alan Gates</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Jeff Hammerbacher</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Alex Kozlov</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Ken Krugler</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Jimmy Lin</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Todd Lipcon</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Sarah Sproehnle</span><span style="font-family: 汉仪书宋一简;">,</span><span style="font-family: 'Times New Roman';">Vinithra Varadharajan</span>和Ian Wrigley<span style="font-family: 汉仪书宋一简;">,感谢他们仔细审阅本书,并提出宝贵的建议,同时也感谢对本书第</span>1<span style="font-family: 汉仪书宋一简;">版提出勘误建议的读者。我也想感谢</span>Aaron Kimball对Sqoop所做的贡献和Philip (“flip”)Kromer对图处理实例分析所做的贡献。</p> <p><span style="font-family: 汉仪书宋一简;">对于第</span>3<span style="font-family: 汉仪书宋一简;">版,我想感谢</span>Alejandro Abdelnur,Eva Andreasson,Eli Collins,Doug Cutting,Patrick Hunt,Aaron Kimball,Aaron T. Myers,Brock Noland,Arvind Prabhakar,Ahmed Radwan和Tom Wheeler,感谢他们的反馈意见和建议。Rob Weltman<span style="font-family: 汉仪书宋一简;">友善地对整本书提出了非常详细的反馈意见,这些意见和建议使得本书终稿的质量得以更上一层楼。此外,我还要向提交第</span>2<span style="font-family: 汉仪书宋一简;">版勘误的所有读者表达*真挚的谢意。</span></p> <p><br clear="all" /><span style="font-family: 汉仪书宋一简;">对于第</span>4<span style="font-family: 汉仪书宋一简;">版,我想感谢</span>Jodok Batlogg,Meghan Blanchette,Ryan Blue,Jarek Jarcec Cecho,Jules Damji,Dennis Dawson,Matthew Gast,Karthik Kambatla,Julien Le Dem,Brock Noland,Sandy Ryza,Akshai Sarma,Ben Spivey,Michael Stack,Kate Ting,Josh Walter,Josh Wills和Adrian Woodhead,感谢他们所有人非常宝贵的审阅反馈。Ryan Brush,Micah Whitacre和Matt Massie kindly<span style="font-family: 汉仪书宋一简;">为第</span>4<span style="font-family: 汉仪书宋一简;">版</span>友情<span style="font-family: 汉仪书宋一简;">提供新的实例学习</span>。<span style="font-family: 汉仪书宋一简;">再次感谢</span>提交勘误的所有读者。</p> <p>特别感谢Doug Cutting对我的鼓励、支持、友谊以及他为本书所写的序。</p> <p>我还要感谢在本书写作期间以对话和邮件方式进行交流的其他人。</p> <p><span style="font-family: 汉仪书宋一简;">在本书第</span>1<span style="font-family: 汉仪书宋一简;">版写到一半的时候,我加入了</span>Cloudera,我想感谢我的同事,他们为我提供了大量的帮助和支持,使我有充足的时间好好写书,并能及时交稿。</p> <p>非常感谢我的编辑Mike Loukides、Meghan Blanchette及其O’Reilly Media<span style="font-family: 汉仪书宋一简;">的同事,他们在本书的准备阶段为我提供了很多帮助。</span>Mike<span style="font-family: 汉仪书宋一简;">和</span><span style="font-family: 'Times New Roman';">Meghan</span>一直为我答疑解惑、审读我的初稿并帮助我如期完稿。</p> <p>*后,写作是一项艰巨的任务,如果没有家人一如既往地支持,我是不可能完成这本的。我的妻子Eliane<span style="font-family: 汉仪书宋一简;">,她不仅操持着整个家庭,还协助我,参与本书的审稿、编辑和跟进案例学习。还有我的女儿</span>Emilia和Lottie,她们一直都非常理解并支持我的工作,我期待有更多时间好好陪陪她们。</p>显示全部信息免费在线读第3章 Hadoop分布式文件系统
当数据集的大小超过一台独立的物理计算机的存储能力时,就有必要对它进行分区(partition)并存储到若干台单独的计算机上。管理网络中跨多台计算机存储的文件系统称为分布式文件系统(distributed filesystem)。该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂。例如,使文件系统能够容忍节点故障且不丢失任何数据,就是一个极大的挑战。
Hadoop自带一个称为HDFS的分布式文件系统,即HadoopDistributed Filesystem。在非正式文档或旧文档以及配置文件中,有时也简称为DFS,它们是一回事儿。HDFS是Hadoop的旗舰级文件系统,也是本章的**,但实际上Hadoop是一个综合性的文件系统抽象,因此接下来我们将了解将Hadoop与其他存储系统集成的途径,例如本地文件系统和Amazon S3系统。
3.1 HDFS的设计
HDFS以流式数据访问模式来存储超大文件,运行于商用硬件集群上。①让我们仔细看看下面的描述。
* 超大文件 “超大文件”在这里指具有几百MB、几百GB甚至几百TB大小的文件。目前已经有存储PB级数据的Hadoop 集群了。②
* 流式数据访问 HDFS的构建思路是这样的:一次写入、多次读取是***的访问模式。数据集通常由数据源生成或从数据源复制而来,接着长时间在此数据集上进行各种分析。每次分析都将涉及该数据集的大部分数据甚至全部,因此读取整个数据集的时间延迟比读取**条记录的时间延迟更重要。
* 商用硬件 Hadoop并不需要运行在昂贵且高可靠的硬件上。它是设计运行在商用硬件(在各种零售店都能买到的普通硬件③)的集群上的,因此至少对于庞大的集群来说,节点故障的几率还是非常高的。HDFS遇到上述故障时,被设计成能够继续运行且不让用户察觉到明显的中断。
同样,那些不适合在HDFS上运行的应用也值得研究。目前HDFS对某些应用领域并不适合,不过以后可能会有所改进。
《Hadoop权威指南:大数据的存储与分析(第4版)》编辑推荐与评论:
本书结合理论和实践,由浅入深,全方位介绍了Hadoop 这一高性能的海量数据处理和分析平台。全书5部分24 章,第Ⅰ部分介绍Hadoop 基础知识,第Ⅱ部分介绍MapReduce,第Ⅲ部分介绍Hadoop 的运维,第Ⅳ部分介绍Hadoop 相关开源项目,第Ⅴ部分提供了三个案例,分别来自**卫生信息技术服务商塞纳(Cerner)、微软的人工智能项目ADAM(一种大规模分布式深度学习框架)和开源项目Cascading(一个新的针对MapReduce 的数据处理API)。本书是一本专业、全面的Hadoop 参考书和工具书,阐述了Hadoop 生态圈的新发展和应用,程序员可以从中探索海量数据集的存储和分析,管理员可以从中了解Hadoop 集群的安装和运维。