第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框架和MapReduce 1.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第六步:设置属性orser表 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