Hadoop高级编程:构建与实现大数据解决方案作 者: (美)Boris Lublinsky,(美)Kevin T. Smith,(美)Alexey Yakubovich 著; 穆玉伟,靳晓辉 译出版时间: 2014内容简介 如果你已经准备好要充分实施大规模可扩展性数据分析工作,那么需要知道如何利用Hadoop技术。《Hadoop高级编程:构建与实现大数据解决方案》可以帮助你做到这一点!本书关注用于构建先进的、基于Hadoop的企业级应用的架构和方案,并为实现现实的解决方案提供深入的、代码级的讲解。本书还会带你领略数据设计以及数据设计如何影响实现。本书解释了MapReduce的工作原理,并展示了如何在MapReduce中重新定制特定的业务问题。在整本书中,你将会发现深入的Java代码示例,这些代码示例可以直接使用,它们均源自于已经成功地构建和部署的应用程序。目录第1章 大数据和Hadoop生态系统1.1 当大数据遇见Hadoop1.1.1 Hadoop:直面大数据的挑战1.1.2 商业世界中的数据科学1.2 Hadoop生态系统1.3 Hadoop核心组件1.4 Hadoop发行版1.5 使用Hadoop开发企业级应用1.6 小结第2章 Hadoop数据存储2.1 HDFS2.1.1 HDFS架构2.1.2 使用HDFS文件2.1.3 Hadoop特定的文件类型2.1.4 HDFS联盟和高可用性2.2 HBase2.2.1 HBase架构2.2.2 HBase结构设计2.2.3 HBase编程2.2.4 HBase新特性2.3 将HDFS和HBase的组合用于高效数据存储2.4 使用Apache Avro2.5 利用HCatalog管理元数据2.6 为应用程序选择合适的Hadoop数据组织形式2.7 小结第3章 使用MapReduce处理数据3.1 了解MapReduce3.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 是否使用MapReduce3.3.6 常见的MapReduce设计陷阱3.4 小结第4章 自定义MapReduce执行4.1 使用InputFormat控制MapReduce执行4.1.1 为计算密集型应用程序实现InputFormat4.1.2 实现InputFormat以控制Map的数量4.1.3 实现用于多个HBase表的InputFormat4.2 使用自定义RecordReader以自己的方式读取数据4.2.1 实现基于队列的RecordReader4.2.2 为XML数据实现RecordReader4.3 使用自定义输出格式组织输出数据4.4 使用自定义记录写入器以自己的方式写入数据4.5 使用组合器优化MapReduce执行4.6 使用分区器控制Reducer执行4.7 在Hadoop中使用非Java代码4.7.1 Pipes4.7.2 Hadoop Streaming4.7.3 使用JNI4.8 小结第5章 构建可靠的MapReduce应用程序5.1 单元测试MapReduce应用程序5.1.1 测试Mapper5.1.2 测试Reducer5.1.3 集成测试5.2 使用Eclipse进行本地应用程序测试5.3 将日志用于Hadoop测试5.4 使用作业计数器报告指标5.5 MapReduce中的防御性编程5.6 小结第6章 使用Oozie自动化数据处理6.1 认识Oozie6.2 Oozie Workflow6.2.1 在Oozie Workflow中执行异步操作6.2.2 Oozie的恢复能力6.2.3 Oozie Workflow作业的生命周期6.3 Oozie Coordinator6.4 Oozie Bundle6.5 用表达式语言对Oozie进行参数化6.5.1 Workflow函数6.5.2 Coordinator函数6.5.3 Bundle函数6.5.4 其他EL函数6.6 Oozie作业执行模型6.7 访问Oozie6.8 Oozie SLA6.9 小结第7章 使用Oozie7.1 使用探测包验证位置相关信息的正确性7.2 设计基于探测包的地点正确性验证7.3 设计Oozie Workflow7.4 实现Oozie Workflow应用程序7.4.1 实现数据准备Workflow7.4.2 实现考勤指数和聚类探测包串Workflow7.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 为迭代过程定义Workflow8.2.4 动态Workflow生成8.3 使用Oozie Java API8.4 在Oozie应用中使用uber jar包8.5 数据吸收传送器8.6 小结第9章 实时Hadoop9.1 现实世界中的实时应用9.2 使用HBase来实现实时应用9.2.1 将HBase用作图片管理系统9.2.2 将HBase用作Lucene后端9.3 使用专门的实时Hadoop查询系统9.3.1 Apache Drill9.3.2 Impala9.3.3 实时查询和MapReduce的对比9.4 使用基于Hadoop的事件处理系统9.4.1 HFlame9.4.2 Storm9.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 初识AWS11.2 在AWS上运行Hadoop的可选项11.2.1 使用EC2实例的自定义安装11.2.2 弹性MapReduce11.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 访问和使用EMR11.4 使用AWS S311.4.1 理解桶的使用11.4.2 使用控制台浏览内容11.4.3 在S3中编程访问文件11.4.4 使用MapReduce上传多个文件到S311.5 自动化EMR作业流创建和作业执行11.6 管理EMR中的作业执行11.6.1 在EMR集群上使用Oozie11.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 什么是DSL13.1.2 Hadoop的DSL13.2 更快、更可扩展的数据处理13.2.1 Apache YARN13.2.2 Tez13.3 安全性的改进13.4 正在出现的趋势13.5 小结附录 有用的阅读 上一篇: Zabbix监控系统 下一篇: 机器学习实战