内容简介
第1部分 大数据时代指引
第1章 数据成功四原则
1.1 当数据成为一件“大”事
1.2 数据和单台服务器
1.3 大数据的权衡
1.3.1 构建可(无限)扩展的解决方案
1.3.2 构建可(在互联网上)共享数据的系统
1.3.3 构建解决方案,而非基础设施
1.3.4 关注从数据中解放价值
1.4 大数据流水线剖析
1.5 终极数据库
1.6 总结
第2部分 收集和共享海量数据
第2章 托管和共享TB级原始数据
2.1 文件之殇
2.1.1 共享大量文件的挑战
2.2 存储:基础设施即服务
2.2.1 网络很慢
2.3 选择合适的数据格式
2.3.1 XML:数据,描述你自己
2.3.2 JSON:程序员的选择
2.4 字符编码
2.4.1 文件转换
2.5 移动中的数据:数据序列化格式
2.5.1 ApacheThrift和Protocol Buffers
2.6 总结
第3章 构建基于NoSQL的Web应用采集众包数据
3.1 关系型数据库:命令及控制
3.1.1 关系数据库的ACID测试
3.2 当关系型数据库遇上互联网
3.2.1 CAP原理与BASE
3.3 非关系型数据库的模式
3.3.1 键-值数据库
3.3.2 文档存储
3.4 为写入性能优化:Redis
3.5 在多个Redis实例上分片
3.5.1 使用Twemproxy自动分区
3.5.2 Redis的替代选项
3.6 NewSQL:Codd归来
3.7 总结
第4章 解决数据孤岛问题的策略
4.1 堆满术语的仓库
4.1.1 实践中的问题
4.1.2 数据合规与安全规划
4.1.3 走进数据仓库
4.1.4 数据仓库的口诀:抽取、转换和加载
4.2 Hadoop:数据仓库中的大象
4.3 数据孤岛也可能是个优点
4.3.1 专注于数据问题,而不是技术
4.3.2 鼓励员工提出他们自己的问题
4.3.3 投资沟通数据孤岛的技术
4.4 融合:数据孤岛的终结
4.4.1 Luhn的商业智能系统是否能成为现实
4.5 总结
第3部分 数据探究
第5章 使用Hadoop、Hive和Shark探索大规模数据集
5.1 什么是数据仓库
5.2 Apache Hive:在Hadoop上进行交互式查询
5.2.1 Hive用例
5.2.2 Hive实战
5.2.3 在Hive中使用其他数据源
5.3 Shark:以内存的速度进行查询
5.4 云中的数据仓库
5.5 总结
第6章 使用Google BigQuery构建数据信息中心
6.1 分析型数据库
6.2 Dremel:均贫富
6.2.1 Dremel与MapReduce的不同之处
6.3 BigQuery:数据分析即服务
6.3.1 BigQuery的查询语言
6.4 建造自己的大数据信息面板
6.4.1 授权访问BigQuery API
6.4.2 运行查询并获取结果
6.4.3 缓存查询结果
6.4.4 添加可视化图形
6.5 分析型查询引擎的未来
6.6 总结
第7章 探索大数据的可视化策略
7.1 警世良言:将数据翻译成故事
7.2 人类尺度VS机器尺度
7.2.1 交互性
7.3 开发交互式数据应用
7.3.1 使用R和ggplot2实现交互式可视化
7.3.2 matplotlib:Python的2D图形库
7.3.3 D3.js:用于Web的交互式可视化库
7.4 总结
第4部分 构建数据流水线
第8章 整合:MapReduce数据流水线
8.1 数据流水线是什么
8.1.1 正确的工具
8.2 使用Hadoop Streaming搭建数据流水线
8.2.1 MapReduce和数据转换
8.2.2 最简单的流水线:stdin到stdout
8.3 单步MapReduce变换
8.3.1 从原始NVSS数据中抽取相关信息:map阶段
8.3.2 合计每月出生数:reducer阶段
8.3.3 在本地测试MapReduce流水线
8.3.4 在Hadoop集群上运行我们的MapReduce作业
8.4 降低复杂性:Hadoop 上 Python的MapReduce框架
8.4.1 使用mrjob重写Hadoop Streaming示例
8.4.2 建造一个多步流水线
8.4.3 在Elastic MapReduce上运行mrjob脚本
8.4.4 其他基于Python的MapReduce框架
8.5 总结
第9章 使用Pig和Cascading构建数据转换工作流
9.1 大规模数据工作流实战
9.2 多步MapReduce转换真复杂
9.2.1 Apache Pig:拒绝复杂
9.2.2 使用交互式Grunt shell运行Pig
9.2.3 过滤和优化数据工作流
9.2.4 以批处理模式运行Pig脚本
9.3 Cascading:构建健壮的数据工作流应用
9.3.1 以source和sink的方式思考
9.3.2 构建Cascading应用
9.3.3 创建一个Cascade:一个简单的JOIN例子
9.3.4 在Hadoop集群上部署Cascading应用
9.4 何时选择Pig或Cascading
9.5 总结
第5部分 基于大规模数据集的机器学习
第10章 使用Mahout构建数据分类系统
10.1 机器能否预测未来
10.2 机器学习的挑战
10.2.1 贝叶斯分类
10.2.2 聚类
10.2.3 推荐引擎
10.3 Apache Mahout:可伸缩的机器学习工具
10.3.1 使用Mahout进行文本分类
10.4 MLbase:分布式机器学习框架
10.5 总结
第6部分 基于大规模数据集的统计分析
第11章 使用R语言处理大数据集
11.1 统计学为什么性感
11.1.1 R处理大型数据集的局限性
11.1.2 R的数据帧和矩阵
11.2 处理大数据集的策略
11.2.1 大矩阵处理:bigmemory和biganalytics
11.2.2 ff:使用大于内存的数据帧
11.2.3 biglm:大规模数据集的线性回归
11.2.4 RHadoop:使用R访问ApacheHadoop
11.3 总结
第12章 使用Python和Pandas构建分析工作流
12.1 数据乐园中自在的蟒蛇——Python
12.1.1 为统计性计算选择一门语言
12.1.2 扩展现有代码
12.1.3 工具和测试
12.2 用于数据处理的Python库
12.2.1 NumPy
12.2.2 SciPy:Python的科学计算库
12.2.3 数据分析库Pandas
12.3 构建更复杂的工作流
12.3.1 处理损坏或丢失的记录
12.4 iPython:科学计算工具链的最后一环
12.4.1 在集群上并行执行iPython
12.5 总结
第7部分 展望未来
第13章 何时选择自制、购买或外包
13.1 功能重合的解决方案
13.2 理解你的数据问题
13.3 自制还是购买问题的参考手册
13.3.1 你已经对哪些技术有所投入
13.3.2 从小处着手
13.3.3 规划时考虑可扩展性
13.4 私人数据中心
13.5 了解开源的成本
13.6 一切皆服务
13.7 总结
第14章 未来:数据科技的几个趋势
14.1 Hadoop:搅局者与被搅局者
14.2 一切皆在云中
14.3 数据科学家的兴衰
14.4 融合:终极数据库
14.5 文化融合
14.6 总结