图书目录

目录

第一篇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.1FlinkWordCount编程172

9.4.2DataSet API有界数据流处理176

9.4.3Table API有界数据流处理177

9.4.4SQL有界数据流处理179

9.5Flink无界数据流运算180

9.5.1FlinkStreamWordCount编程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.3ZooKeeperwatcher事件348

18.6本章小结350

18.7实验任务350

18.7.1实验一: ZooKeeper分布式锁实验350

18.7.2实验二: ZooKeeper配置管理实验350

18.7.3实验三: 服务发现与注册实验350