本书由浅入深,全面、系统地介绍了Hadoop这一高性能处理大量数据集的理想工具。本书内容主要包括HDFS、MapReduce、Hive、HBase、Mahout、Pig、ZooKeeper、Avro、Chukwa等与Hadoop相关的子项目,各个知识点都配有精心设计的大量经典的小案例,实战性和可操作性强。<br>本书旨在帮助云计算初学者迅速掌握Hadoop系统,提升读者在云计算实践中的应用和开发能力。同时本书极强的系统性和大量翔实的案例对于有一定基础的中高级用户有非常好的参考价值。<br>
暂缺《深入云计算:Hadoop应用开发实战详解(修订版)》作者简介
第1篇& ;& ;Hadoop技术篇<br>第& ;1章& ;& ;初识Hadoop<br>1.1& ;& ;Hadoop简介& ;2<br>1.1.1& ;& ;Hadoop的起源& ;2<br>1.1.2& ;& ;什么是Hadoop& ;3<br>1.1.3& ;& ;Hadoop的核心技术是Google核心技术的开源实现& ;4<br>1.1.4& ;& ;Hadoop的功能与优点& ;5<br>1.1.5& ;& ;Hadoop的应用现状和发展趋势& ;6<br>1.2& ;& ;Hadoop的体系结构& ;11<br>1.2.1& ;& ;HDFS的体系结构& ;12<br>1.2.2& ;& ;MapReduce的体系结构& ;19<br>1.3& ;& ;Hadoop与分布式开发& ;21<br>1.4& ;& ;Hadoop的数据管理& ;23<br>1.4.1& ;& ;HDFS的数据管理& ;23<br>1.4.2& ;& ;HBase的数据管理& ;23<br>1.4.3& ;& ;Hive的数据管理& ;24<br>1.5& ;& ;思考与总结& ;25<br>第& ;2章& ;& ;Hadoop的安装和配置<br>2.1& ;& ;在Windows下安装与配置Hadoop& ;27<br>2.1.1& ;& ;JDK的安装& ;27<br>2.1.2& ;& ;Cygwin的安装& ;30<br>2.1.3& ;& ;Hadoop的安装& ;36<br>2.2& ;& ;在Linux下安装与配置Hadoop& ;38<br>2.2.1& ;& ;Ubuntu的安装& ;38<br>2.2.2& ;& ;JDK的安装& ;41<br>2.2.3& ;& ;Hadoop的安装& ;41<br>2.3& ;& ;Hadoop的执行实例& ;43<br>2.3.1& ;& ;运行Hadoop& ;44<br>2.3.2& ;& ;运行wordcount.java程序& ;44<br>2.4& ;& ;Hadoop& ;Eclipse简介和使用& ;45<br>2.4.1& ;& ;Eclipse插件介绍& ;45<br>2.4.2& ;& ;Eclipse插件开发配置& ;45<br>2.4.3& ;& ;在Eclipse下运行WordCount程序& ;49<br>2.5& ;& ;Hadoop的集群和优化& ;56<br>2.5.1& ;& ;Hadoop的性能优化& ;57<br>2.5.2& ;& ;Hadoop配置机架感知信息& ;58<br>2.6& ;& ;思考与总结& ;59<br>第& ;3章& ;& ;HDFS海量存储<br>3.1& ;& ;开源的GFS——HDFS& ;60<br>3.1.1& ;& ;HDFS简介& ;60<br>3.1.2& ;& ;HDFS的体系结构& ;63<br>3.1.3& ;& ;HDFS的保障可靠性措施& ;64<br>3.2& ;& ;HDFS的常用操作& ;67<br>3.2.1& ;& ;HDFS下的文件操作& ;67<br>3.2.2& ;& ;管理与更新& ;74<br>3.2.3& ;& ;HDFS& ;API详解& ;76<br>3.2.4& ;& ;HDFS的读/写数据流& ;88<br>3.3& ;& ;用HDFS存储海量的视频数据& ;91<br>3.3.1& ;& ;场景分析& ;91<br>3.3.2& ;& ;设计实现& ;91<br>3.4& ;& ;思考与总结& ;93<br>第& ;4章& ;& ;初识MapReduce<br>4.1& ;& ;MapReduce简介& ;94<br>4.1.1& ;& ;MapReduce要解决什么问题& ;94<br>4.1.2& ;& ;MapReduce的理论基础& ;95<br>4.1.3& ;& ;MapReduce的编程模式& ;97<br>4.2& ;& ;MapReduce的集群行为& ;98<br>4.3& ;& ;Map/Reduce框架& ;100<br>4.4& ;& ;样例分析:单词计数& ;100<br>4.4.1& ;& ;WordCount实例的运行过程& ;100<br>4.4.2& ;& ;WordCount的源码分析和程序处理过程& ;103<br>4.4.3& ;& ;MapReduce常用类及其接口& ;106<br>4.5& ;& ;实例:倒排索引& ;109<br>4.5.1& ;& ;倒排索引的分析和设计& ;109<br>4.5.2& ;& ;倒排索引完整源码& ;112<br>4.5.3& ;& ;运行代码结果& ;116<br>4.6& ;& ;MapReduce& ;在日志分析中数据去重案例& ;117<br>4.6.1& ;& ;什么是数据去重& ;117<br>4.6.2& ;& ;设计思路& ;118<br>4.6.3& ;& ;程序代码& ;118<br>4.6.4& ;& ;代码运行结果& ;120<br>4.7& ;& ;数据排序实例& ;122<br>4.7.1& ;& ;实例描述& ;122<br>4.7.2& ;& ;设计思路& ;123<br>4.7.3& ;& ;程序代码& ;123<br>4.8& ;& ;思考与总结& ;126<br>第& ;5章& ;& ;分布式开源数据库HBase<br>5.1& ;& ;HBase简介& ;127<br>5.1.1& ;& ;HBase逻辑视图& ;127<br>5.1.2& ;& ;HBase物理存储& ;129<br>5.1.3& ;& ;子表Region服务器& ;130<br>5.1.4& ;& ;Hmaster主服务器& ;132<br>5.1.5& ;& ;元数据表& ;132<br>5.2& ;& ;HBase的安装配置& ;133<br>5.2.1& ;& ;HBase单机模式& ;133<br>5.2.2& ;& ;HBase伪分布模式& ;135<br>5.2.3& ;& ;HBase完全分布模式& ;136<br>5.3& ;& ;学生成绩表实例& ;140<br>5.3.1& ;& ;Shell的基本操作& ;141<br>5.3.2& ;& ;代码实现& ;143<br>5.3.3& ;& ;关于中文的处理& ;145<br>5.3.4& ;& ;常用HBase的& ;Shell操作& ;149<br>5.4& ;& ;思考与总结& ;153<br>第& ;6章& ;& ;MapReduce进阶<br>6.1& ;& ;API的配置& ;154<br>6.1.1& ;& ;一个简单的配置文件& ;155<br>6.1.2& ;& ;合并多个源文件& ;156<br>6.1.3& ;& ;可变的扩展& ;157<br>6.2& ;& ;配置开发环境& ;157<br>6.2.1& ;& ;配置文件设置& ;157<br>6.2.2& ;& ;设置用户标识& ;159<br>6.3& ;& ;复合键值对的使用& ;159<br>6.3.1& ;& ;小的键值对如何合并成大的键值对& ;159<br>6.3.2& ;& ;巧用复合键让系统完成排序& ;160<br>6.4& ;& ;用户定制数据类型& ;164<br>6.4.1& ;& ;内置数据类型& ;164<br>6.4.2& ;& ;用户自定义数据类型& ;164<br>6.5& ;& ;用户定制输入/输出格式& ;166<br>6.5.1& ;& ;内置数据的输入格式& ;167<br>6.5.2& ;& ;用户定制数据输入格式与RecordReader& ;168<br>6.5.3& ;& ;Hadoop内置的数据输出格式& ;172<br>6.5.4& ;& ;& ;Hadoop内置的数据输出格式与RecordWriter& ;172<br>6.6& ;& ;用户定制Partitioner和Combiner& ;173<br>6.7& ;& ;组合式的MapReduce作业& ;176<br>6.7.1& ;& ;MapReduce作业运行机制& ;176<br>6.7.2& ;& ;组合式MapReduce计算作业& ;178<br>6.8& ;& ;DataJoin连接多数据源& ;183<br>6.9& ;& ;思考与总结& ;187<br>第& ;7章& ;& ;Hive数据仓库<br>7.1& ;& ;Hive简介& ;188<br>7.2& ;& ;Hive安装与配置& ;189<br>7.3& ;& ;Hive的服务& ;191<br>7.3.1& ;& ;Hive& ;shell& ;191<br>7.3.2& ;& ;JDBC/ODBC& ;192<br>7.3.3& ;& ;Thrift服务& ;192<br>7.3.4& ;& ;Web接口& ;193<br>7.3.5& ;& ;元数据服务& ;193<br>7.4& ;& ;HiveQL查询语言& ;193<br>7.5& ;& ;Hive实例& ;202<br>7.5.1& ;& ;UDF& ;编程实例& ;202<br>7.5.2& ;& ;UDAF& ;编程实例& ;204<br>7.5.3& ;& ;Hive的日志数据统计实战& ;206<br>7.6& ;& ;思考与总结& ;211<br>第& ;8章& ;& ;Pig开发应用<br>8.1& ;& ;Pig简介& ;212<br>8.2& ;& ;Pig的安装与配置& ;213<br>8.3& ;& ;Pig的使用& ;215<br>8.3.1& ;& ;Pig的MapReduce模式& ;215<br>8.3.2& ;& ;Pig的运行方式& ;216<br>8.4& ;& ;通过Grunt学习Pig& ;Latin& ;219<br>8.4.1& ;& ;Pig的数据模型& ;220<br>8.4.2& ;& ;运算符& ;221<br>8.4.3& ;& ;常用操作& ;222<br>8.4.4& ;& ;各种SQL在Pig中的实现& ;229<br>8.4.5& ;& ;Pig& ;Latin实现& ;233<br>8.5& ;& ;Pig使用的案例& ;235<br>8.6& ;& ;思考与总结& ;235<br>第& ;9章& ;& ;Chukwa数据收集系统<br>9.1& ;& ;Chukwa简介& ;236<br>9.1.1& ;& ;Chukwa是什么& ;236<br>9.1.2& ;& ;Chukwa主要解决什么问题& ;240<br>9.2& ;& ;Chukwa的安装配置& ;240<br>9.2.1& ;& ;Chukwa的安装& ;240<br>9.2.2& ;& ;Chukwa的配置& ;242<br>9.2.3& ;& ;Chukwa的启动& ;245<br>9.3& ;& ;Chukwa的基本命令& ;248<br>9.3.1& ;& ;Chukwa端的命令& ;248<br>9.3.2& ;& ;Agent& ;端的命令& ;249<br>9.4& ;& ;Chukwa在数据收集处理方面的运用& ;251<br>9.4.1& ;& ;数据生成& ;251<br>9.4.2& ;& ;数据收集& ;251<br>9.4.3& ;& ;数据处理& ;252<br>9.4.4& ;& ;数据析取& ;252<br>9.4.5& ;& ;数据稀释& ;253<br>9.4.6& ;& ;数据显示& ;253<br>9.5& ;& ;思考与总结& ;253<br>第& ;10章& ;& ;ZooKeeper开发应用<br>10.1& ;& ;ZooKeeper简介& ;254<br>10.1.1& ;& ;ZooKeeper的设计目标& ;254<br>10.1.2& ;& ;ZooKeeper主要解决什么问题& ;256<br>10.1.3& ;& ;ZooKeeper的基本概念和工作原理& ;257<br>10.2& ;& ;ZooKeeper的安装配置& ;260<br>10.2.1& ;& ;单机模式& ;261<br>10.2.2& ;& ;启动并测试ZooKeeper& ;262<br>10.2.3& ;& ;集群模式& ;264<br>10.3& ;& ;ZooKeeper提供的接口& ;267<br>10.4& ;& ;ZooKeeper事件& ;270<br>10.5& ;& ;ZooKeeper实例& ;271<br>10.5.1& ;& ;实例1:一个简单的应用——分布式互斥锁& ;271<br>10.5.2& ;& ;实例2:进程调度系统& ;276<br>10.6& ;& ;思考与总结& ;283<br>第2篇& ;& ;Hadoop管理和容错篇<br>第& ;11章& ;& ;Hadoop管理<br>11.1& ;& ;Hadoop权限管理& ;286<br>11.2& ;& ;HDFS文件系统管理& ;292<br>11.3& ;& ;Hadoop维护与管理& ;298<br>11.4& ;& ;Hadoop常见问题及解决办法& ;300<br>11.5& ;& ;思考与总结& ;310<br>第& ;12章& ;& ;Hadoop容错<br>12.1& ;& ;Hadoop的可靠性& ;311<br>12.1.1& ;& ;HDFS中的NameNode单点失效解决方案& ;311<br>12.1.2& ;& ;HDFS数据块副本机制& ;313<br>12.1.3& ;& ;HDFS心跳机制& ;319<br>12.1.4& ;& ;HDFS负载均衡& ;320<br>12.1.5& ;& ;MapReduce容错& ;321<br>12.2& ;& ;Hadoop的SecondayNameNode机制& ;322<br>12.2.1& ;& ;磁盘镜像与日志文件& ;322<br>12.2.2& ;& ;SecondaryNameNode更新镜像的流程& ;323<br>12.3& ;& ;Avatar机制& ;325<br>12.3.1& ;& ;Avatar机制简介& ;325<br>12.3.2& ;& ;Avatars部署实战& ;326<br>12.4& ;& ;Hadoop_HBase容错& ;331<br>12.5& ;& ;思考与总结& ;333<br>第3篇& ;& ;Hadoop实战篇<br>第& ;13章& ;& ;综合实战1:Hadoop中的数据库访问<br>13.1& ;& ;DBInputFormat类访问数据库& ;336<br>13.1.1& ;& ;在DBInputFormat类中包含的内置类& ;336<br>13.1.2& ;& ;使用DBInputFormat读取数据库表中的记录& ;337<br>13.1.3& ;& ;使用示例& ;337<br>13.2& ;& ;使用DBOutputFormat向数据库中写记录& ;340<br>13.3& ;& ;思考与总结& ;343<br>第& ;14章& ;& ;综合实战2:一个简单的分布式的Grep<br>14.1& ;& ;分析与设计& ;344<br>14.2& ;& ;实现代码& ;345<br>14.3& ;& ;运行程序& ;346<br>14.4& ;& ;思考与总结& ;346<br>第& ;15章& ;& ;综合实战3:打造一个搜索引擎<br>15.1& ;& ;搜索引擎工作原理& ;348<br>15.2& ;& ;网页搜集与信息提取& ;350<br>15.2.1& ;& ;设计的主要思想& ;350<br>15.2.2& ;& ;系统设计目标& ;351<br>15.3& ;& ;网页信息的提取与存储& ;352<br>15.4& ;& ;MapReduce的预处理& ;353<br>15.4.1& ;& ;第一步:源数据过滤& ;353<br>15.4.2& ;& ;第二步:生成倒排文件& ;355<br>15.4.3& ;& ;第三步:建立二级索引& ;362<br>15.5& ;& ;建立Web信息查询服务& ;365<br>15.6& ;& ;思考与总结& ;366<br>第& ;16章& ;& ;综合实战4:移动通信信令监测与查询<br>16.1& ;& ;分析与设计& ;367<br>16.1.1& ;& ;CDR数据文件的检测与索引创建任务调度& ;369<br>16.1.2& ;& ;从HDFS读取数据并创建索引& ;370<br>16.1.3& ;& ;查询CDR信息& ;371<br>16.2& ;& ;代码实现& ;371<br>16.2.1& ;& ;CDR文件检测和索引创建任务程序& ;371<br>16.2.2& ;& ;读取CDR数据和索引创建处理& ;375<br>16.2.3& ;& ;CDR查询& ;383<br>16.3& ;& ;思考与总结& ;384<br>附录A& ;& ;Hadoop命令大全& ;385<br>附录B& ;& ;HDFS命令大全& ;392<br>
深入云计算:Hadoop应用开发实战详解(修订版)pdf