目录
第一篇Hadoop篇
第1章Hadoop3
1.1任务目的和要求3
1.2Java环境的搭建3
1.2.1Ubuntu Java环境的安装3
1.2.2压缩包安装Java4
1.3Hadoop伪分布式安装5
1.3.1华为ECS的配置5
1.3.2Hadoop ECS的安装9
1.4华为云MRS的配置12
1.4.1购买及配置MRS服务12
1.4.2配置MRS集群客户端13
1.5Hadoop案例15
1.5.1ECS配置Yarn15
1.5.2Hadoop Shell 命令17
1.5.3目录操作17
1.5.4文件操作18
1.6Hadoop编程实践19
1.6.1hdfs读写编程19
1.6.2MapReduce编程23
1.7本章小结26
1.8实验任务27
1.8.1实验一: 多ECS节点Hadoop分布式集群搭建实验27
1.8.2实验二: 访问MRS集群上托管的开源组件Web页面27
1.8.3实验三: 华为MRS访问与管理27
第2章HDFS28
2.1任务目的和要求28
2.2HDFS配置28
2.3HDFS操作实践29
2.3.1HDFS的基本命令29
2.3.2权限和访问控制31
2.4HDFS MRS实践33
2.5HDFS编程实践37
2.5.1HDFS读文件37
2.5.2HDFS写文件40
2.6本章小结44
2.7实验任务44
2.7.1实验一: HDFS的基本操作实验44
2.7.2实验二: HDFS 数据合并与权限管理44
2.7.3实验三: HDFS 数据备份与恢复实验44
第3章Yarn45
3.1任务目的和要求45
3.2Yarn的配置与启动45
3.3Yarn操作实践48
3.3.1Yarn MRS的配置48
3.3.2Yarn命令行的操作51
3.4Yarn编程实践53
3.4.1应用程序监控54
3.4.2应用程序管理57
3.4.3资源信息获取61
3.5本章小结64
3.6实验任务64
3.6.1实验一: Yarn的基本操作64
3.6.2实验二: Yarn 调度与作业优先级实验64
3.6.3实验三: Hadoop资源管理实验64
第4章MapReduce65
4.1任务目的和要求65
4.2MapReduce开发环境的搭建65
4.2.1Maven的安装65
4.2.2Maven创建HelloWorld67
4.3MapReduce编程实践71
4.3.1Mapper函数编程71
4.3.2Reducer函数编程72
4.3.3Combiner函数编程75
4.3.4Writable接口编程76
4.3.5WritableComparable接口编程77
4.3.6InputFormat和OutputFormat接口编程79
4.3.7Partitioner接口编程81
4.4本章小结82
4.5实验任务82
4.5.1实验一: 词频统计实验82
4.5.2实验二: 日志分析实验82
4.5.3实验三: 客户数据分析实验82
第5章Hive83
5.1任务目的和要求83
5.2Hive的安装83
5.2.1Hive的配置83
5.2.2MySQL的安装85
5.2.3MRS平台使用Hive86
5.3Hive操作案例89
5.3.1数据库管理89
5.3.2查询语言92
5.3.3内部表和外部表94
5.3.4分区表97
5.3.5分桶表98
5.4Hive编程实践98
5.4.1数据库的创建98
5.4.2数据库的删除99
5.4.3SELECT编程100
5.4.4ORDER BY编程101
5.4.5GROUP BY编程102
5.5本章小结103
5.6实验任务104
5.6.1实验一: 销售数据分析104
5.6.2实验二: 用户行为分析104
5.6.3实验三: 日志数据处理104
第二篇Spark篇
第6章Spark RDD107
6.1任务目的和要求107
6.2Spark的安装107
6.3MRS平台Spark的应用108
6.4Spark操作案例110
6.4.1RDD的常用操作111
6.4.2RDD持久化116
6.4.3RDD分区策略117
6.5Spark RDD编程实践119
6.6Spark RDD的MRS平台实践121
6.7本章小结126
6.8实验任务126
6.8.1实验一: 统计文本文件中的字数126
6.8.2实验二: 过滤日志文件中的错误信息126
6.8.3实验三: 计算数值数据的平均值126
第7章Spark SQL127
7.1任务目的和要求127
7.2MRS平台Spark SQL应用127
7.2.1创建DWS集群128
7.2.2DWS操作129
7.2.3MRS连接DWS131
7.3Spark SQL操作案例134
7.3.1基本操作136
7.3.2聚合操作139
7.4Spark SQL编程实践140
7.4.1Dataframe的Table API编程140
7.4.2Dataframe的SQL接口编程142
7.5本章小结145
7.6实验任务145
7.6.1实验一: 客户行为数据预处理实验145
7.6.2实验二: 金融数据预处理实验145
7.6.3实验三: 社交网络数据预处理实验145
第三篇流 处 理 篇
第8章Spark Streaming149
8.1任务目的和要求149
8.2Spark Streaming操作案例149
8.2.1DStream Transform操作149
8.2.2DStream Action操作150
8.2.3有状态计算152
8.3MRS平台Spark Streaming154
8.4本章小结166
8.5实验任务166
8.5.1实验一: 实时数据处理166
8.5.2实验二: 实时数据分析166
8.5.3实验三: 实时ETL处理166第9章Flink167
9.1任务目的和要求167
9.2Flink的安装167
9.3在MRS中使用Flink170
9.4Flink有界数据流运算172
9.4.1FlinkWordCount编程172
9.4.2DataSet API有界数据流处理176
9.4.3Table API有界数据流处理177
9.4.4SQL有界数据流处理179
9.5Flink无界数据流运算180
9.5.1FlinkStreamWordCount编程180
9.5.2DataStream API无界数据流处理183
9.5.3SQL无界数据流处理185
9.5.4Table API无界数据流处理186
9.6Flink键控窗口函数编程187
9.6.1WindowAll全局窗口187
9.6.2keyBy分区189
9.6.3Window时间分窗191
9.7Flink底层函数运算192
9.7.1ProcessFunction计数器192
9.7.2RichFunction累加器193
9.8多流处理195
9.9本章小结196
9.10实验任务197
9.10.1实验一: 实时数据处理与聚合197
9.10.2实验二: 实时事件检测与报警197
9.10.3实验三: 实时数据关联与数据处理197
第四篇NoSQL数据库篇
第10章HBase201
10.1任务目的和要求201
10.2HBase的安装201
10.2.1HBase伪分布式模式配置202
10.2.2MRS平台使用HBase204
10.2.3HBase数据迁移到MRS205
10.3HBase Shell操作案例209
10.3.1HBase建表209
10.3.2HBase的基本操作210
10.4HBase编程实践211
10.4.1HBase基本CRUD操作211
10.4.2HBase Java API实践217
10.5本章小结222
10.6实验任务222
10.6.1实验一: HBase创建数据库与查看表结构实验222
10.6.2实验二: 设计HBase表并提供基本CRUD实验222
10.6.3实验三: 设计HBase表Rowkey时间汇总实验223
第11章Redis224
11.1任务目的和要求224
11.2Redis的安装224
11.2.1Redis安装包的下载224
11.2.2Redis客户端连接测试225
11.3Redis案例226
11.3.1键值操作226
11.3.2字符串操作227
11.3.3哈希表操作228
11.3.4列表操作229
11.3.5集合操作229
11.3.6发布/订阅操作231
11.4Redis编程实践232
11.4.1Python客户端连接232
11.4.2Java客户端连接232
11.4.3使用set和get命令缓存数据234
11.4.4通过expire为缓存设置过期时间234
11.4.5通过lpush和rpop实现生产者和消费者模式235
11.5本章小结236
11.6实验任务237
11.6.1实验一: 使用Redis实现简单的用户会话管理237
11.6.2实验二: 使用Redis实现简单的消息队列237
11.6.3实验三: 使用Redis有序集合实现排行榜237
第12章MongoDB238
12.1任务目的和要求238
12.2MongoDB的安装238
12.3MongoDB Shell操作案例240
12.3.1MongoDB连接240
12.3.2常用操作命令240
12.3.3数据库与集合管理241
12.3.4文档管理243
12.4MongoDB编程实践249
12.5本章小结254
12.6实验任务255
12.6.1实验一: 在线商店的订单管理255
12.6.2实验二: 社交媒体应用255
12.6.3实验三: 物联网数据存储与分析255
第13章InfluxDB256
13.1任务目的和要求256
13.2InfluxDB的安装256
13.2.1InfluxDB本地安装257
13.2.2InfluxDB的配置257
13.3InfluxDB Shell操作案例258
13.3.1连续查询258
13.3.2实时数据操作260
13.3.3CQ管理263
13.4InfluxDB编程实践264
13.5本章小结267
13.6实验任务267
13.6.1实验一: 环境监测数据存储与查询267
13.6.2实验二: 系统性能监控与报警实验267
13.6.3实验三: 时序数据分析与可视化实验267
第14章Neo4j268
14.1任务目的和要求268
14.2Neo4j的安装268
14.3Neo4j操作案例269
14.3.1数据导入269
14.3.2Cypher数据操作270
14.3.3Cypher数据查询275
14.4Neo4j编程实践279
14.5本章小结282
14.6实验任务282
14.6.1实验一: 社交网络分析实验282
14.6.2实验二: 知识图谱构建实验282
14.6.3实验三: 推荐系统实验282
第五篇ETL工具篇
第15章Flume285
15.1任务目的和要求285
15.2Flume的安装部署285
15.3Flume操作案例286
15.3.1监控端口数据286
15.3.2实时监控单个追加文件287
15.4MRS平台Flume应用289
15.4.1访问Flume界面289
15.4.2Flume采集节点日志290
15.5Flume编程实践292
15.5.1自定义Source292
15.5.2自定义Sink294
15.6本章小结296
15.7实验任务296
15.7.1实验一: 使用 Flume 从日志文件收集数据296
15.7.2实验二: 使用 Flume 将数据从 Kafka 传输到 HDFS297
15.7.3实验三: 使用Flume实现实时数据收集和处理297
第六篇消息队列篇
第16章RabbitMQ301
16.1任务目的和要求301
16.2RabbitMQ的安装301
16.3RabbitMQ操作案例304
16.3.1创建和绑定交换机304
16.3.2发送和接收消息304
16.4RabbitMQ编程实践307
16.4.1基本消息模式308
16.4.2扇出模式309
16.4.3工作队列模式311
16.4.4发布/订阅模式312
16.4.5主题模式314
16.5本章小结316
16.6实验任务316
16.6.1实验一: 实时数据处理实验316
16.6.2实验二: 微服务通信实验316
16.6.3实验三: 任务调度与工作队列实验316
第17章Kafka317
17.1任务目的和要求317
17.2Kafka的安装317
17.3MRS平台Kafka应用318
17.3.1访问Kafka UI318
17.3.2查看Broker319
17.3.3查看Consumer Group319
17.3.4Kafka客户端320
17.3.5MRS Topic管理321
17.4Kafka操作案例322
17.4.1Topic管理322
17.4.2单节点多代理配置323
17.4.3启动多个代理324
17.4.4生产者/消费者324
17.5Kafka编程实践325
17.5.1Kafka生产者示例325
17.5.2Kafka消费者组示例327
17.5.3Kafka Python编程329
17.6本章小结331
17.7实验任务331
17.7.1实验一: 实时日志收集与分析331
17.7.2实验二: 用户行为追踪与分析331
17.7.3实验三: 分布式事件驱动架构332
第七篇分布式协调服务篇
第18章ZooKeeper335
18.1任务目的和要求335
18.2ZooKeeper的安装335
18.3MRS平台ZooKeeper应用336
18.3.1访问ZooKeeper界面336
18.3.2使用ZooKeeper客户端337
18.3.3配置ZNode ACL339
18.4ZooKeeper操作案例340
18.4.1ZooKeeper常用命令340
18.4.2ZooKeeper四字命令344
18.5ZooKeeper编程实践345
18.5.1ZooKeeper Java API编程345
18.5.2ZooKeeper Curator连接347
18.5.3ZooKeeperwatcher事件348
18.6本章小结350
18.7实验任务350
18.7.1实验一: ZooKeeper分布式锁实验350
18.7.2实验二: ZooKeeper配置管理实验350
18.7.3实验三: 服务发现与注册实验350
