《Hadoop硬实战》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)霍姆斯著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2015
  • ISBN:9787121250729
  • 页数:511 页
图书介绍:Hadoop是一个开源的MapReduce平台,设计运行在大型分布式集群环境中,为开发者进行数据存储、管理以及分析提供便利的方法。本书详细讲解了Hadoop和MapReduce的基本概念,并收集了85个问题及其解决方案。在关键问题领域对基础概念和实战方法做了权衡。

第1部分 背景和基本原理 1

1跳跃中的Hadoop 3

1.1 什么是Hadoop 4

1.1.1 Hadoop的核心组件 5

1.1.2 Hadoop生态圈 9

1.1.3 物理架构 10

1.1.4 谁在使用Hadoop 12

1.1.5 Hadoop的局限性 13

1.2 运行Hadoop 14

1.2.1 下载并安装Hadoop 14

1.2.2 Hadoop的配置 15

1.2.3 CLI基本命令 17

1.2.4 运行MapReduce作业 18

1.3 本章小结 24

第2部分 数据逻辑 25

2将数据导入导出Hadoop 27

2.1 导入导出的关键要素 29

2.2 将数据导入Hadoop 30

2.2.1 将日志文件导入Hadoop 31

技术点1使用Flume将系统日志文件导入HDFS 33

2.2.2 导入导出半结构化和二进制文件 42

技术点2自动复制文件到HDFS的机制 43

技术点3使用Oozie定期执行数据导入活动 48

2.2.3 从数据库中拉数据 52

技术点4使用MapReduce将数据导入数据库 53

技术点5使用Sqoop从MySQL导入数据 58

2.2.4 HBase 68

技术点6 HBase导入HDFS 68

技术点7将HBase作为MapReduce的数据源 70

2.3 将数据导出Hadoop 73

2.3.1 将数据导入本地文件系统 73

技术点8自动复制HDFS中的文件 73

2.3.2 数据库 74

技术点9使用Sqoop将数据导入MySQL 75

2.3.3 Hbase 78

技术点10将数据从HDFS导入HBase 78

技术点11使用HBase作为MapReduce的数据接收器 79

2.4 本章小结 81

3数据序列化——处理文本文件及其他格式的文件 83

3.1 了解MapReduce中的输入和输出 84

3.1.1 数据输入 85

3.1.2 数据输出 89

3.2 处理常见的序列化格式 91

3.2.1 XML 91

技术点12 MapReduce和XML 91

3.2.2 JSON 95

技术点13 MapReduce和JSON 95

3.3 大数据的序列化格式 99

3.3.1 比较SequenceFiles、Protocol Buffers、Thrift和Avro 99

3.3.2 Sequence File 101

技术点14处理SequenceFile 103

3.3.3 Protocol Buffers 109

技术点15 整合Protocol Buffers和MapReduce 110

3.3.4 Thrift 117

技术点16使用Thrift 117

3.3.5 Avro 119

技术点17 MapReduce的下一代数据序列化技术 120

3.4 自定义文件格式 127

3.4.1 输入输出格式 127

技术点18 输入和输出格式为CSV的文件 128

3.4.2 output committing的重要性 136

3.5 本章小结 136

第3部分 大数据模式 137

4处理大数据的MapReduce模式 139

4.1 Join 140

4.1.1 Repartition Join 141

技术点19优化repartition join 142

4.1.2 Replicated Join 146

4.1.3 Semi-join 147

技术点20实现semi-join 148

4.1.4 为你的数据挑选最优的合并策略 154

4.2 排序 155

4.2.1 二次排序 156

技术点21二次排序的实现 157

4.2.2 整体并行排序 162

技术点22通过多个reducer对key进行排序 162

4.3 抽样 165

技术点23蓄水池抽样(reservoir抽样) 165

4.4 本章小结 168

5优化HDFS处理大数据的技术 169

5.1 处理小文件 170

技术点24使用Avro存储大量小文件 170

5.2 通过压缩提高数据存储效率 178

技术点25选择合适的压缩解码器 178

技术点26在HDFS、MapReduce、Pig和Hive中使用数据压缩 182

技术点27在MapReduce、Hive和Pig中处理可分割的LZOP 187

5.3 本章小结 193

6诊断和优化性能问题 194

6.1 衡量MapReduce和你的环境 195

6.1.1 提取作业统计信息的工具 195

6.1.2 监控 196

6.2 确定性能问题的原因 198

6.2.1 了解哪些因素会影响MapReduce作业的性能 198

6.2.2 map端异常 200

技术点28发现输入数据中的坑 200

技术点29确定map端数据倾斜问题 201

技术点30判定map任务吞吐量 203

技术点31小文件 204

技术点32 不可切割的文件 206

6.2.3 reduce端问题 207

技术点33 reducer任务数过大或过小 208

技术点34定位reduce端数据倾斜问题 209

技术点35确定reduce任务是否存在整体吞吐量过低 211

技术点36缓慢的洗牌(shuffle)和排序 213

6.2.4 任务的一般性能问题 213

技术点37作业竞争和调度器限制 215

技术点38使用堆转储来查找未优化的用户代码 216

6.2.5 硬件性能问题 218

技术点39查找硬件的失效 218

技术点40 CPU竞争 219

技术点41内存交换 220

技术点42磁盘健康 222

技术点43网络 224

6.3 可视化 226

技术点44提取并可视化任务执行时间 227

6.4 优化 229

6.4.1 剖析MapReduce的用户代码 230

技术点45剖析map和reduce任务 230

6.4.2 参数配置 232

6.4.3 优化shuffle和sort阶段 234

技术点46避免reducer 234

技术点47过滤和投影 235

技术点48使用combiner 236

技术点49超炫的使用比较器的快速排序 237

6.4.4 减轻倾斜 241

技术点50收集倾斜数据 242

技术点51减轻reducer阶段倾斜 243

6.4.5 在MapReduce中优化用户的Java代码 244

6.4.6 数据序列化 248

6.5 本章小结 249

第4部分 数据科学 251

7数据结构和算法的运用 253

7.1 使用图进行数据建模和解决问题 254

7.1.1 模拟图 255

7.1.2 最短路径算法 255

技术点52找出两个用户间的最短距离 256

7.1.3 friends-of-friends(FoF) 263

技术点53计算FoF 263

7.1.4 PageRank 269

技术点54通过Web图计算PageRank 269

7.2 Bloom filter 275

技术点55在MapReduce中并行创建Bloom filter 277

技术点56通过MapReduce对Bloom filter进行semi-join 281

7.3 本章小结 284

8结合R和Hadoop进行数据统计 285

8.1 比较R和MapReduce集成的几种方法 286

8.2 R基础知识 288

8.3 R和Streaming 290

8.3.1 Streaming和map-only R 290

技术点57计算股票日平均值 290

8.3.2 Streaming、R和完整的MapReduce 293

技术点58计算股票的累积均值 293

8.4 Rhipe——将客户端R和Hadoop进行集成 297

技术点59使用Rhipe计算CMA 297

8.5 RHadoop——更简单地在客户端集成R和Hadoop的技术 301

技术点60使用RHadoop计算CMA 302

8.6 本章小结 304

9使用Mahout进行预测分析 305

9.1 使用recommender提供产品建议 306

9.1.1 相似性度量的可视化 307

9.1.2 GroupLens数据集 308

9.1.3 基于用户的 recommender 310

9.1.4 基于物品的recommender 310

技术点61使用基于物品的recommender进行电影评级 311

9.2 classification 314

9.2.1 编写一个手动naive Bayesian分类器 315

9.2.2 可扩展的垃圾邮件侦测分类系统 321

技术点62使用Mahout训练和测试垃圾邮件分类器 321

9.2.3 其他分类算法 325

9.3 K-means clustering 325

9.3.1 简单介绍 326

9.3.2 并行执行K-means 327

技术点63 K-means处理合成的二维数据集 327

9.3.3 K-means和文本 331

9.3.4 其他Mahout clustering算法 332

9.4 本章小结 332

第5部分 驯服大象 333

10深入解析Hive 335

10.1 Hive基础 336

10.1.1 安装 336

10.1.2 元存储 336

10.1.3 数据库、表、分区和存储 336

10.1.4 数据模型 337

10.1.5 查询语言 337

10.1.6 交互式和非交互式Hive 337

10.2 使用Hive进行数据分析 338

10.2.1 序列化和反序列化 338

技术点64载入日志文件 338

10.2.2 UDF、分区、分桶和压缩 344

技术点65编写UDF和压缩分区表 344

10.2.3 数据合并 350

技术点66优化Hive合并 350

10.2.4 分组、排序和explain 355

10.3 本章小结 358

11 Pig流管道 359

11.1 Pig基础 360

11.1.1 安装 360

11.1.2 架构 360

11.1.3 PigLatin 360

11.1.4 数据类型 361

11.1.5 操作符和函数 361

11.1.6 交互式和非交互式的Pig 362

11.2 使用Pig在日志数据中发现恶意行为者 362

11.2.1 加载数据 363

技术点67加载Apache日志文件 363

11.2.2 过滤和投影 368

技术点68通过过滤和投影减少数据处理量 368

11.2.3 分组和聚合UDF 370

技术点69 IP地址的分组和计数 370

11.2.4 使用UDF进行定位 374

技术点70使用分布式缓存进行IP地理定位 375

11.2.5 流 378

技术点71使用你的脚本合并Pig 378

11.2.6 合并 379

技术点72在Pig中合并数据 380

11.2.7 排序 381

技术点73元组排序 381

11.2.8 存储数据 382

技术点74在SequenceFiles中存储数据 382

11.3 使用Pig优化用户的工作流程 385

技术点75通过4步快速处理大数据 385

11.4 性能 390

技术点76 Pig优化 390

11.5 本章小结 393

12 Crunch及相关技术 394

12.1 什么是Crunch 395

12.1.1 背景和概念 395

12.1.2 基本原理 395

12.1.3 简单示例 398

12.2 发现日志中最热门的URL 401

技术点77使用Crunch进行日志解析和基本分析 402

12.3 合并 405

技术点78 Crunch的repartition join 405

12.4 Cascading 407

12.5 本章小结 409

13测试和调试 410

13.1 测试 410

13.1.1 有效的单元测试的基本要素 411

13.1.2 MRUnit 413

技术点79 MapReduce函数、作业和管道的单元测试 413

13.1.3 LocalJobRunner 420

技术点80用LocalJobRunner进行重量级的作业测试 421

13.1.4 集成和QA测试 423

13.2 调试用户空间的问题 424

13.2.1 访问任务日志 424

技术点81检查任务日志 424

13.2.2 调试不可预期的输入 429

技术点82定位input split问题 429

13.2.3 调试JVM配置 432

技术点83解决任务的JVM启动参数 433

13.2.4 高效调试的编码准则 433

技术点84调试和错误处理 433

13.3 MapReduce陷阱 437

技术点85 MapReduce反模式 438

13.4 本章小结 441

附录A 相关技术 443

附录B Hadoop内置的数据导入导出工具 471

附录C HDFS解剖 486

附录D 优化MapReduce合并框架 493

索引 503