Cloudera Hadoop大数据平台实战指南
内容介绍
对于入门和学习大数据技术的读者来说,大数据技术的生态圈和知识体系过于庞大,可能还没有开始学习就已经陷入众多的陌生名词和泛泛的概念中。本书的切入点明确而清晰,从Hadoop 生态系统的明星 Cloudera 入手,逐步引出各类大数据基础和核心应用框架。 本书分为18章,系统介绍Hadoop 生态系统大数据相关的知识,包括大数据概述、Cloudera Hadoop平台的安装部署、HDFS分布式文件系统、MapReduce计算框架、资源管理调度框架YARN 、Hive数据仓库、数据迁移工具Sqoop、分布式数据库HBase、ZooKeeper分布式协调服务、准实时分析系统Impala、日志采集工具Flume、分布式消息系统Kafka、ETL工具Kettle、Spark计算框架等内容,*后给出两个综合实操案例,以巩固前面所学的知识点。 本书既适合Hadoop初学者、大数据技术工程师和大数据技术爱好者自学使用,亦可作为高等院校和培训机构大数据相关课程的培训用书。
目录
- 第1章 大数据概述 1
- 1.1 大数据时代的数据特点 1
- 1.2 大数据时代的发展趋势——数据将成为资产 2
- 1.3 大数据时代处理数据理念的改变 3
- 1.3.1 要全体不要抽样 3
- 1.3.2 要效率不要绝对精确 3
- 1.3.3 要相关不要因果 4
- 1.4 大数据时代的关键技术 5
- 1.5 大数据时代的典型应用案例 5
- 1.5.1 塔吉特超市精准营销案例 5
- 1.5.2 谷歌流感趋势案例 6
- 1.5.3 证券行业案例 6
- 1.5.4 某运营商大数据平台案例 7
- 1.6 Hadoop概述和介绍 7
- 1.6.1 Hadoop 发展历史和应用现状 7
- 1.6.2 Hadoop 的特点 8
- 1.6.3 Hadoop 的生态系统 8
- 第2章 Cloudera大数据平台介绍 10
- 2.1 Cloudera简介 10
- 2.2 Cloudera的Hadoop发行版CDH简介 11
- 2.2.1 CDH概述 11
- 2.2.2 CDH和Apache Hadoop对比 12
- 2.3 Cloudera Manager大数据管理平台介绍 12
- 2.3.1 Cloudera Manager概述和整体架构 12
- 2.3.2 Cloudera Manager的基本核心功能 14
- 2.3.3 Cloudera Manager的高级功能 18
- 2.4 Cloudera平台参考部署架构 19
- 2.4.1 Cloudera的软件体系结构 19
- 2.4.2 群集硬件规划配置 19
- 2.4.3 Hadoop集群角色分配 21
- 2.4.4 网络拓扑 23
- 第3章 Cloudera Manager及CDH离线安装部署 25
- 3.1 安装前的准备工作 25
- 3.2 Cloudera Manager及CDH安装 30
- 3.3 添加其他大数据组件 35
- 第4章 分布式文件系统HDFS 37
- 4.1 HDFS简介 37
- 4.2 HDFS体系结构 38
- 4.2.1 HDFS 架构概述 38
- 4.2.2 HDFS命名空间管理 38
- 4.2.3 NameNode 39
- 4.2.4 SecondaryNameNode 39
- 4.3 HDFS 2.0新特性 41
- 4.3.1 HDFS HA 41
- 4.3.2 HDFS Federation 42
- 4.4 HDFS操作常用shell命令 43
- 4.4.1 HDFS目录操作和文件处理命令 43
- 4.4.2 HDFS的Web管理界面 44
- 4.4.3 dfsadmin管理维护命令 45
- 4.4.4 namenode命令 47
- 4.5 Java编程操作HDFS实践 47
- 4.6 HDFS 的参数配置和规划 49
- 4.7 使用Cloudera Manager启用HDFS HA 51
- 4.7.1 HDFS HA高可用配置 51
- 4.7.2 HDFS HA高可用功能测试 54
- 第5章 分布式计算框架MapReduce 57
- 5.1 MapReduce概述 57
- 5.2 MapReduce原理介绍 58
- 5.2.1 工作流程概述 58
- 5.2.2 MapReduce框架的优势 58
- 5.2.3 MapReduce执行过程 59
- 5.3 MapReduce编程——单词示例解析 59
- 5.4 MapReduce应用开发 60
- 5.4.1 配置MapReduce开发环境 60
- 5.4.2 编写和运行MapReduce程序 61
- 第6章 资源管理调度框架YARN 65
- 6.1 YARN产生背景 65
- 6.2 YARN框架介绍 66
- 6.3 YARN工作原理 67
- 6.4 YARN框架和MapReduce1.0框架对比 69
- 6.5 CDH集群的YARN参数调整 69
- 第7章 数据仓库Hive 72
- 7.1 Hive简介 72
- 7.2 Hive体系架构和应用场景 73
- 7.2.1 Hive体系架构 73
- 7.2.2 Hive应用场景 74
- 7.3 Hive的数据模型 75
- 7.3.1 内部表 75
- 7.3.2 外部表 75
- 7.3.3 分区表 75
- 7.3.4 桶 75
- 7.4 Hive实战操作 76
- 7.4.1 Hive内部表操作 77
- 7.4.2 Hive外部表操作 77
- 7.4.3 Hive分区表操作 79
- 7.4.4 桶表 80
- 7.4.5 Hive应用实例WordCount 82
- 7.4.6 UDF 84
- 7.5 基于Hive的应用案例 86
- 第8章 数据迁移工具Sqoop 88
- 8.1 Sqoop概述 88
- 8.2 Sqoop工作原理 89
- 8.3 Sqoop版本和架构 91
- 8.4 Sqoop实战操作 93
- 第9章 分布式数据库HBase 100
- 9.1 HBase概述 100
- 9.2 HBase数据模型 101
- 9.3 HBase生态地位和系统架构 101
- 9.3.1 HBase的生态地位解析 101
- 9.3.2 HBase系统架构 102
- 9.4 HBase运行机制 103
- 9.4.1 Region 103
- 9.4.2 Region Server工作原理 103
- 9.4.3 Store工作原理 104
- 9.5 HBase操作实战 104
- 9.5.1 HBase常用shell命令 104
- 9.5.2 HBase编程实践 107
- 9.5.3 HBase参数调优的案例分享 109
- 第10章 分布式协调服务ZooKeeper 111
- 10.1 ZooKeeper的特点 111
- 10.2 ZooKeeper的工作原理 112
- 10.2.1 基本架构 112
- 10.2.2 ZooKeeper实现分布式Leader节点选举 112
- 10.2.3 ZooKeeper配置文件重点参数详解 112
- 10.3 ZooKeeper典型应用场景 115
- 10.3.1 ZooKeeper实现HDFS的NameNode高可用HA 115
- 10.3.2 ZooKeeper实现HBase的HMaster高可用 116
- 10.3.3 ZooKeeper在Storm集群中的协调者作用 116
- 第11章 准实时分析系统Impala 118
- 11.1 Impala概述 118
- 11.2 Impala组件构成 119
- 11.3 Impala系统架构 119
- 11.4 Impala的查询处理流程 120
- 11.5 Impala和Hive的关系和对比 121
- 11.6 Impala安装 122
- 11.7 Impala入门实战操作 124
- 第12章 日志采集工具Flume 128
- 12.1 Flume概述 128
- 12.2 Flume体系结构 129
- 12.2.1 Flume外部结构 129
- 12.2.2 Flume的Event事件概念 130
- 12.2.3 Flume的Agent 130
- 12.3 Flume安装和集成 131
- 12.3.1 搭建Flume环境 131
- 12.3.2 Kafka与Flume集成 132
- 12.4 Flume操作实例介绍 132
- 12.4.1 例子概述 132
- 12.4.2 第一步:配置数据流向 132
- 12.4.3 第二步:启动服务 133
- 12.4.4 第三步:新建空数据文件 133
- 12.4.5 第四步:运行flume-ng命令 133
- 12.4.6 第五步:运行命令脚本 134
- 12.4.7 最后一步:测试结果 134
- 第13章 分布式消息系统Kafka 135
- 13.1 Kafka架构设计 135
- 13.1.1 基本架构 135
- 13.1.2 基本概念 136
- 13.1.3 Kafka主要特点 136
- 13.2 Kafka原理解析 137
- 13.2.1 主要的设计理念 137
- 13.2.2 ZooKeeper在Kafka的作用 137
- 13.2.3 Kafka在ZooKeeper的执行流程 137
- 13.3 Kafka安装和部署 138
- 13.3.1 CDH5完美集成Kafka 138
- 13.3.2 Kafka部署模式和配置 139
- 13.4 Java操作Kafka消息处理实例 141
- 13.4.1 例子概述 141
- 13.4.2 第一步:新建工程 141
- 13.4.3 第二步:编写代码 141
- 13.4.4 第三步:运行发送数据程序 142
- 13.4.5 最后一步:运行接收数据程序 143
- 13.5 Kafka与HDFS的集成 143
- 13.5.1 与HDFS集成介绍 143
- 13.5.2 与HDFS集成实例 144
- 13.5.3 第一步:编写代码——发送数据 144
- 13.5.4 第二步:编写代码——接收数据 145
- 13.5.5 第三步:导出文件 146
- 13.5.6 第四步:上传文件 146
- 13.5.7 第五步:运行程序——发送数据 146
- 13.5.8 第六步:运行程序——接收数据 147
- 13.5.9 最后一步:查看执行结果 147
- 第14章 大数据ETL工具Kettle 148
- 14.1 ETL原理 148
- 14.1.1 ETL简介 148
- 14.1.2 ETL在数据仓库中的作用 149
- 14.2 Kettle简介 149
- 14.3 Kettle完整案例实战 150
- 14.3.1 案例介绍 150
- 14.3.2 最终效果 150
- 14.3.3 表说明 150
- 14.3.4 第一步:准备数据库数据 151
- 14.3.5 第二步:新建转换 152
- 14.3.6 第三步:新建数据库连接 153
- 14.3.7 第四步:拖动表输入组件 153
- 14.3.8 第五步:设置属性——order表 154
- 14.3.9 第六步:设置属性——user表 155
- 14.3.10 第七步:拖动流查询并设置属性——流查询 155
- 14.3.11 第八步:设置属性——product表 156
- 14.3.12 第九步:连接组件 156
- 14.3.13 第十步:设置属性——文本输出 156
- 14.3.14 最后一步:运行程序并查看结果 157
- 14.4 Kettle调度和命令 158
- 14.4.1 通过页面调度 158
- 14.4.2 通过脚本调度 159
- 14.5 Kettle使用原则 161
- 第15章 大规模数据处理计算引擎Spark 162
- 15.1 Spark简介 162
- 15.1.1 使用背景 162
- 15.1.2 Spark特点 163
- 15.2 Spark架构设计 163
- 15.2.1 Spark整体架构 163
- 15.2.2 关键运算组件 164
- 15.2.3 RDD介绍 164
- 15.2.4 RDD操作 165
- 15.2.5 RDD依赖关系 166
- 15.2.6 RDD源码详解 167
- 15.2.7 Scheduler 168
- 15.2.8 Storage 168
- 15.2.9 Shuffle 169
- 15.3 Spark编程实例 170
- 15.3.1 实例概述 170
- 15.3.2 第一步:编辑数据文件 170
- 15.3.3 第二步:编写程序 171
- 15.3.4 第三步:上传JAR文件 171
- 15.3.5 第四步:远程执行程序 172
- 15.3.6 最后一步:查看结果 172
- 15.4 Spark SQL实战 173
- 15.4.1 例子概述 173
- 15.4.2 第一步:编辑数据文件 173
- 15.4.3 第二步:编写代码 174
- 15.4.4 第三步:上传文件到服务器 174
- 15.4.5 第四步:远程执行程序 174
- 15.4.6 最后一步:查看结果 175
- 15.5 Spark Streaming实战 175
- 15.5.1 例子概述 175
- 15.5.2 第一步:编写代码 175
- 15.5.3 第二步:上传文件到服务器 176
- 15.5.4 第三步:远程执行程序 177
- 15.5.5 第四步:上传数据 177
- 15.5.6 最后一步:查看结果 177
- 15.6 Spark MLlib实战 178
- 15.6.1 例子步骤 178
- 15.6.2 第一步:编写代码 178
- 15.6.3 第二步:上传文件到服务器 179
- 15.6.4 第三步:远程执行程序 179
- 15.6.5 第四步:上传数据 180
- 15.6.6 最后一步:查看结果 180
- 第16章 大数据全栈式开发语言Python 182
- 16.1 Python简介 182
- 16.2 Python安装和配置 183
- 16.2.1 Anaconda介绍 183
- 16.2.2 Anaconda下载 183
- 16.2.3 Anaconda安装 184
- 16.2.4 Anaconda包管理 185
- 16.2.5 PyCharm下载 185
- 16.2.6 PyCharm安装 185
- 16.2.7 PyCharm使用 187
- 16.3 Python入门 190
- 16.3.1 例子概述 190
- 16.3.2 第一步:新建Python文件 190
- 16.3.3 第二步:设置字体大小 191
- 16.3.4 第三步:编写代码 191
- 16.3.5 第四步:执行程序 192
- 16.3.6 最后一步:改变输入 192
- 16.4 Python数据科学库pandas入门 193
- 16.4.1 例子概述 193
- 16.4.2 pandas包介绍 194
- 16.4.3 第一步:打开Jupyter Notebook 194
- 16.4.4 第二步:导入包 194
- 16.4.5 第三步:定义数据集 195
- 16.4.6 第四步:过滤数据 195
- 16.4.7 最后一步:获取数据 196
- 16.5 Python绘图库matplotlib入门 197
- 16.5.1 例子概述 197
- 16.5.2 第一步:新建一个Python文件 197
- 16.5.3 第二步:引入画图包 197
- 16.5.4 第三步:组织数据 198
- 16.5.5 第四步:画图 198
- 16.5.6 最后一步:查看结果 199
- 第17章 大数据实战案例:实时数据流处理项目 200
- 17.1 项目背景介绍 200
- 17.2 业务需求分析 200
- 17.3 项目技术架构 201
- 17.4 项目技术组成 202
- 17.5 项目实施步骤 202
- 17.5.1 第一步:运用Kafka产生数据 202
- 17.5.2 第二步:运用Spark接收数据 208
- 17.5.3 第三步:安装Redis软件 211
- 17.5.4 第四步:准备程序运行环境 214
- 17.5.5 第五步:远程执行Spark程序 216
- 17.5.6 第六步:编写Python实现可视化 218
- 17.5.7 最后一步:执行Python程序 221
- 17.6 项目总结 222
- 第18章 大数据实战案例:用户日志综合分析项目 223
- 18.1 项目背景介绍 223
- 18.2 项目设计目的 223
- 18.3 项目技术架构和组成 224
- 18.4 项目实施步骤 225
- 18.4.1 第一步:本地数据FTP到Linux环境 225
- 18.4.2 第二步:Linux数据上传到HDFS 225
- 18.4.3 第三步:使用Hive访问HDFS数据 226
- 18.4.4 第四步:使用Kettle把数据导入HBase 228
- 18.4.5 第五步:使用Sqoop把数据导入MySQL 234
- 18.4.6 第六步:编写Python程序实现可视化 236
- 18.4.7 最后一步:执行Python程序 238