第1章 浅谈企业级大数据平台的重要性 1
1.1 缺乏统一大数据平台的问题 2
1.1.1 资源浪费 2
1.1.2 数据孤岛 2
1.1.3 服务孤岛 3
1.1.4 安全存疑 3
1.1.5 缺乏可维护性和可扩展性 3
1.1.6 缺乏可复制性 4
1.2 构建统一大数据平台的优势 4
1.3 企业级大数据平台需要具备的基本能力 6
1.3.1 集群管理与监控 7
1.3.2 数据接入 7
1.3.3 数据存储与查询 7
1.3.4 数据计算 8
1.3.5 平台安全与管理 10
1.4 平台辅助工具 12
1.5 本章小结 13
第2章 企业级大数据平台技术栈介绍 15
2.1 HDFS 16
2.1.1 概述 16
2.1.2 RAID技术 17
2.1.3 核心设计目标 18
2.1.4 命名空间 19
2.1.5 数据模型 20
2.1.6 Namenode和Datanode 20
2.1.7 使用场景 21
2.2 Zookeeper 22
2.2.1 概述 22
2.2.2 核心特性 23
2.2.3 命名空间 24
2.2.4 数据模型 24
2.2.5 节点状态监听 25
2.2.6 原子消息广播协议 25
2.2.7 使用场景 32
2.3 HBase 33
2.3.1 概述 33
2.3.2 数据模型 34
2.3.3 Regions 34
2.3.4 HBase Master 35
2.3.5 Region Server 36
2.3.6 MemStore与HFile 37
2.3.7 使用场景 37
2.4 YARN 38
2.4.1 概述 38
2.4.2 资源模型和Container 40
2.4.3 ResourceManager 40
2.4.4 ApplicationMaster 40
2.4.5 NodeManager 41
2.4.6 单一集群架构 41
2.4.7 工作流程 41
2.4.8 使用场景 43
2.5 Spark 43
2.5.1 概述 43
2.5.2 数据模型 45
2.5.3 编程模型和作业调度 45
2.5.4 依赖 46
2.5.5 容错 47
2.5.6 集群模式 47
2.5.7 使用场景 48
2.6 本章小结 49
第3章 使用Ambari安装Hadoop集群 50
3.1 概述 50
3.2 集群设计 52
3.2.1 主控节点 52
3.2.2 存储与计算节点 53
3.2.3 安全认证与管理节点 54
3.2.4 协同管理与其他节点 54
3.3 Ambari的安装、配置与启动 55
3.3.1 安装前的准备 55
3.3.2 安装Ambari-Server 62
3.3.3 Ambari-Server目录结构 64
3.3.4 配置Ambari-Server 65
3.3.5 启动Ambari-Server 66
3.4 新建集群 67
3.4.1 设置集群名称并配置HDP安装包 67
3.4.2 配置集群 69
3.5 Ambari控制台功能简介 77
3.5.1 集群服务管理 78
3.5.2 集群服务配置 80
3.5.3 辅助工具 82
3.6 本章小结 86
第4章 构建企业级平台安全方案 87
4.1 浅谈企业级大数据平台面临的安全隐患 88
4.1.1 缺乏统一的访问控制机制 88
4.1.2 缺乏统一的资源授权策略 88
4.1.3 缺乏Hadoop服务安全保障 89
4.2 初级安全方案 89
4.2.1 访问控制 89
4.2.2 数据授权与管理 97
4.3 本章小结 110
第5章 Hadoop服务安全方案 111
5.1 Kerberos协议简介 111
5.2 使用FreeIPA安装Kerberos和LDAP 113
5.2.1 安装FreeIPA 115
5.2.2 IPA-Server管理控制台功能介绍 119
5.2.3 IPA CLI功能介绍 122
5.3 开启Ambari的Kerberos安全选项 127
5.3.1 集成前的准备 127
5.3.2 集成IPA 129
5.3.3 测试Kerberos认证 133
5.4 本章小结 136
第6章 单点登录与用户管理 137
6.1 集成单点登录 139
6.1.1 CAS简介 140
6.1.2 安装CAS-Server 141
6.1.3 集成Knox网关与CAS-Server 148
6.1.4 集成Ranger与CAS-Server 151
6.1.5 集成Ambari与CAS-Server 152
6.2 实现统一的用户管理系统 155
6.3 使用Java程序调用脚本 161
6.4 创建Ranger扩展用户 166
6.5 本章小结 169
第7章 搭建平台管理端RESTful服务 170
7.1 搭建RESTful服务框架 170
7.2 用户查询 174
7.2.1 引入LDAP模块 174
7.2.2 配置LDAP 174
7.2.3 实现持久层 177
7.2.4 实现服务层 181
7.2.5 实现RESTful服务 181
7.2.6 整合用户管理 183
7.3 RESTful服务安全认证 184
7.3.1 用户登录服务 185
7.3.2 使用JWT认证 185
7.3.3 创建用户登录RESTful服务 188
7.3.4 认证过滤器 194
7.3.5 测试服务安全认证 198
7.4 数据仓库数据查询 200
7.4.1 创建JDBC连接 200
7.4.2 Kerberos登录 202
7.4.3 使用JDBC协议查询 202
7.4.4 实现服务层与RESTful服务 206
7.4.5 测试查询 207
7.5 数据仓库元数据查询 208
7.5.1 使用query服务查询数仓元数据 208
7.5.2 引入JdbcTemplate模块 209
7.5.3 增加Hive元数据库配置 210
7.5.4 实现元数据持久层 211
7.5.5 实现元数据服务层与RESTful服务 216
7.5.6 测试元数据查询 218
7.6 本章小结 219
第8章 Spark任务与调度服务 220
8.1 提交Spark任务的3种方式 220
8.1.1 使用Spark-Submit脚本提交 220
8.1.2 使用Spark Client提交 226
8.1.3 使用YARN RESTful API提交 229
8.2 查询Spark日志 234
8.3 任务调度 236
8.3.1 引入Quartz模块 237
8.3.2 增加Quartz配置 237
8.3.3 编写调度任务 240
8.3.4 改进空间 241
8.4 本章小结 241
附录A Hadoop简史 242
附录B Hadoop生态其他常用组件一览 245
附录C 常用组件配置说明 248