如果你已经准备好要充分实施大规模可扩展性数据分析工作,那么需要知道如何利用Hadoop技术。《Hadoop高级编程:构建与实现大数据解决方案》可以帮助你做到这一点!本书关注用于构建先进的、基于Hadoop的企业级应用的架构和方案,并为实现现实的解决方案提供深入的、代码级的讲解。本书还会带你领略数据设计以及数据设计如何影响实现。本书解释了MapReduce的工作原理,并展示了如何在MapReduce中重新定制特定的业务问题。在整本书中,你将会发现深入的Java代码示例,这些代码示例可以直接使用,它们均源自于已经成功地构建和部署的应用程序。
目录
- 第1章 大数据和Hadoop生态系统
- 1.1 当大数据遇见Hadoop
- 1.1.1 Hadoop:直面大数据的挑战
- 1.1.2 商业世界中的数据科学
- 1.2 Hadoop生态系统
- 1.3 Hadoop核心组件
- 1.4 Hadoop发行版
- 1.5 使用Hadoop开发企业级应用
- 1.6 小结
- 第2章 Hadoop数据存储
- 2.1 HDFS
- 2.1.1 HDFS架构
- 2.1.2 使用HDFS文件
- 2.1.3 Hadoop特定的文件类型
- 2.1.4 HDFS联盟和高可用性
- 2.2 HBase
- 2.2.1 HBase架构
- 2.2.2 HBase结构设计
- 2.2.3 HBase编程
- 2.2.4 HBase新特性
- 2.3 将HDFS和HBase的组合用于高效数据存储
- 2.4 使用Apache Avro
- 2.5 利用HCatalog管理元数据
- 2.6 为应用程序选择合适的Hadoop数据组织形式
- 2.7 小结
- 第3章 使用MapReduce处理数据
- 3.1 了解MapReduce
- 3.1.1 MapReduce执行管道
- 3.1.2 MapReduce中的运行时协调和任务管理
- 3.2 第一个MapReduce应用程序
- 3.3 设计MapReduce实现
- 3.3.1 将MapReduce用作并行处理框架
- 3.3.2 使用MapReduce进行简单的数据处理
- 3.3.3 使用MapReduce构建连接
- 3.3.4 构建迭代式MapReduce应用程序
- 3.3.5 是否使用MapReduce
- 3.3.6 常见的MapReduce设计陷阱
- 3.4 小结
- 第4章 自定义MapReduce执行
- 4.1 使用InputFormat控制MapReduce执行
- 4.1.1 为计算密集型应用程序实现InputFormat
- 4.1.2 实现InputFormat以控制Map的数量
- 4.1.3 实现用于多个HBase表的InputFormat
- 4.2 使用自定义RecordReader以自己的方式读取数据
- 4.2.1 实现基于队列的RecordReader
- 4.2.2 为XML数据实现RecordReader
- 4.3 使用自定义输出格式组织输出数据
- 4.4 使用自定义记录写入器以自己的方式写入数据
- 4.5 使用组合器优化MapReduce执行
- 4.6 使用分区器控制Reducer执行
- 4.7 在Hadoop中使用非Java代码
- 4.7.1 Pipes
- 4.7.2 Hadoop Streaming
- 4.7.3 使用JNI
- 4.8 小结
- 第5章 构建可靠的MapReduce应用程序
- 5.1 单元测试MapReduce应用程序
- 5.1.1 测试Mapper
- 5.1.2 测试Reducer
- 5.1.3 集成测试
- 5.2 使用Eclipse进行本地应用程序测试
- 5.3 将日志用于Hadoop测试
- 5.4 使用作业计数器报告指标
- 5.5 MapReduce中的防御性编程
- 5.6 小结
- 第6章 使用Oozie自动化数据处理
- 6.1 认识Oozie
- 6.2 Oozie Workflow
- 6.2.1 在Oozie Workflow中执行异步操作
- 6.2.2 Oozie的恢复能力
- 6.2.3 Oozie Workflow作业的生命周期
- 6.3 Oozie Coordinator
- 6.4 Oozie Bundle
- 6.5 用表达式语言对Oozie进行参数化
- 6.5.1 Workflow函数
- 6.5.2 Coordinator函数
- 6.5.3 Bundle函数
- 6.5.4 其他EL函数
- 6.6 Oozie作业执行模型
- 6.7 访问Oozie
- 6.8 Oozie SLA
- 6.9 小结
- 第7章 使用Oozie
- 7.1 使用探测包验证位置相关信息的正确性
- 7.2 设计基于探测包的地点正确性验证
- 7.3 设计Oozie Workflow
- 7.4 实现Oozie Workflow应用程序
- 7.4.1 实现数据准备Workflow
- 7.4.2 实现考勤指数和聚类探测包串Workflow
- 7.5 实现 Workflow行为
- 7.5.1 发布来自java动作的执行上下文
- 7.5.2 在Oozie Workflow中使用MapReduce作业
- 7.6 实现Oozie Coordinator应用程序
- 7.7 实现Oozie Bundle应用程序
- 7.8 部署、测试和执行Oozie应用程序
- 7.8.1 部署Oozie应用程序
- 7.8.2 使用Oozie CLI执行Oozie应用程序
- 7.8.3 向Oozie作业传递参数
- 7.9 使用Oozie控制台获取Oozie应用程序信息
- 7.9.1 了解Oozie控制台界面
- 7.9.2 获取 Coordinator作业信息
- 7.10 小结
- 第8章 高级Oozie特性
- 8.1 构建自定义Oozie Workflow动作
- 8.1.1 实现自定义Oozie Workflow动作
- 8.1.2 部署Oozie自定义Workflow动作
- 8.2 向Oozie Workflow添加动态执行
- 8.2.1 总体实现方法
- 8.2.2 一个机器学习模型、参数和算法
- 8.2.3 为迭代过程定义Workflow
- 8.2.4 动态Workflow生成
- 8.3 使用Oozie Java API
- 8.4 在Oozie应用中使用uber jar包
- 8.5 数据吸收传送器
- 8.6 小结
- 第9章 实时Hadoop
- 9.1 现实世界中的实时应用
- 9.2 使用HBase来实现实时应用
- 9.2.1 将HBase用作图片管理系统
- 9.2.2 将HBase用作Lucene后端
- 9.3 使用专门的实时Hadoop查询系统
- 9.3.1 Apache Drill
- 9.3.2 Impala
- 9.3.3 实时查询和MapReduce的对比
- 9.4 使用基于Hadoop的事件处理系统
- 9.4.1 HFlame
- 9.4.2 Storm
- 9.4.3 事件处理和MapReduce的对比
- 9.5 小结
- 第10章 Hadoop安全
- 10.1 简要的历史:理解Hadoop安全的挑战
- 10.2 认证
- 10.2.1 Kerberos认证
- 10.2.2 委派安全凭据
- 10.3 授权
- 10.3.1 HDFS文件访问权限
- 10.3.2 服务级授权
- 10.3.3 作业授权
- 10.4 Oozie认证和授权
- 10.5 网络加密
- 10.6 使用Rhino项目增强安全性
- 10.6.1 HDFS磁盘级加密
- 10.6.2 基于令牌的认证和统一的授权框架
- 10.6.3 HBase单元格级安全
- 10.7 将所有内容整合起来--保证Hadoop安全的最佳实践
- 10.7.1 认证
- 10.7.2 授权
- 10.7.3 网络加密
- 10.7.4 敬请关注Hadoop的增强功能
- 10.8 小结
- 第11章 在AWS上运行Hadoop应用
- 11.1 初识AWS
- 11.2 在AWS上运行Hadoop的可选项
- 11.2.1 使用EC2实例的自定义安装
- 11.2.2 弹性MapReduce
- 11.2.3 做出选择前的额外考虑
- 11.3 理解EMR-Hadoop的关系
- 11.3.1 EMR架构
- 11.3.2 使用S3存储
- 11.3.3 最大化EMR的使用
- 11.3.4 利用CloudWatch和其他AWS组件
- 11.3.5 访问和使用EMR
- 11.4 使用AWS S3
- 11.4.1 理解桶的使用
- 11.4.2 使用控制台浏览内容
- 11.4.3 在S3中编程访问文件
- 11.4.4 使用MapReduce上传多个文件到S3
- 11.5 自动化EMR作业流创建和作业执行
- 11.6 管理EMR中的作业执行
- 11.6.1 在EMR集群上使用Oozie
- 11.6.2 AWS 简单工作流
- 11.6.3 AWS数据管道
- 11.7 小结
- 第12章 为Hadoop实现构建企业级安全解决方案
- 12.1 企业级应用的安全顾虑
- 12.1.1 认证
- 12.1.2 授权
- 12.1.3 保密性
- 12.1.4 完整性
- 12.1.5 审计
- 12.2 Hadoop安全没有为企业级应用原生地提供哪些机制
- 12.2.1 面向数据的访问控制
- 12.2.2 差分隐私
- 12.2.3 加密静止的数据
- 12.2.4 企业级安全集成
- 12.3 保证使用Hadoop的企业级应用安全的方法
- 12.3.1 使用Accumulo进行访问控制保护
- 12.3.2 加密静止数据
- 12.3.3 网络隔离和分隔方案
- 12.4 小结
- 第13章 Hadoop的未来
- 13.1 使用DSL简化MapReduce编程
- 13.1.1 什么是DSL
- 13.1.2 Hadoop的DSL
- 13.2 更快、更可扩展的数据处理
- 13.2.1 Apache YARN
- 13.2.2 Tez
- 13.3 安全性的改进
- 13.4 正在出现的趋势
- 13.5 小结
- 附录 有用的阅读