《企业级大数据平台构建:架构与实现》

举报
华章计算机 发表于 2019/06/06 16:32:54 2019/06/06
【摘要】 本书摘自《企业级大数据平台构建:架构与实现》——作者是朱凯。

大数据技术丛书

企业级大数据平台构建

架构与实现

朱 凯 著

企业级大数据平台构建 立.jpg

Foreword?推荐序

思者常新,厚积薄发

相比以BAT为引领的互联网公司的天生“数质”(业务高度数字化,技术更具创新性和开放性),大多数传统集团企业经过之前ERP时代积累了海量的业务数据。但是由于业务的复杂性与新老技术升级变革的压力,面对汹涌而来的大数据浪潮,这些企业却依旧停留在探索技术如何稳步更替升级、分散在不同部门的数据如何更有效地集中统一、数据本身以及数据技术如何有效形成企业级治理体系等一系列“知易行难”的问题当中。

相比两年前全民热捧大数据概念的疯狂,数据本身和大数据主流技术显然已经稳步度过了“过高期望的峰值期”和“泡沫化的低谷期”,正式进入“稳步爬升的光明期”。正因为这

样,在这个黎明前的时期,传统企业如何平稳完成数字化变革带来的技术架构变迁,找到去伪存真的企业级大数据实战指南就显得尤为重要了。

最近十年,我一直在远光软件从事电力企业信息化相关的工作,组织、带领了包括企业大数据平台、企业新一代敏捷BA平台与能源BDaaS平台在内的研发团队。电力企业在国内正是信息化水平较高,但业务运营和技术管控模式最为复杂的一类企业。正是意识到“生于互联网的大数据技术对于集团企业的大数据应用支撑不足”这一事实,我们很早就开始孵化相关的团队、探索相关的应用。直到我们在公司正式组建第一支“企业大数据产品商业化团队”的时候,本书作者通过“普通社招”成为第一批加入的开发工程师之一。在短短的半年时间内,他就在如何快速学习新技术、实践新架构方面展现出高于常人、高于前辈的能力和素养。

四年的时间,我们的大数据产品EDT、创新数字化平台产品Realinsight相继诞生,我们和用户一起完成了一个又一个企业大数据解决方案实战。用户数屡创新高、嘉奖年年不断,获得了市场和行业的肯定。当年那支由20人组成的产品团队,一年一个台阶发展为如今公司的一级产品事业部,当年那个“普通开发工程师”也当仁不让地成为我们整个大数据产品线中最为核心的系统架构师和技术布道师。

在此过程中,本书作者和各个技术同仁、产品经理、业务部门同事紧密合作,而这本著作就融入了他在这些实战项目中所积累的丰富经验。所以,本书最大的闪光点在于,它的内容不局限于技术本身,而是考虑到了在不同企业应用场景下,这些技术如何得到更合理地应用。除此之外,作者文艺青年的背景让这本书读起来极其顺畅,他的钻研精神又让这本书在理论上更具深度。因此,本书除了适合集团企业的技术管理人员通读外,也非常适合从事大数据产品相关工作的设计者、产品经理或者架构师阅读。我想,对于希望利用大数据技术解决业务痛点的读者而言,本书更是不可或缺的良师益友。

当得知朱凯有出书的打算时,我们都很兴奋。谁会比他更能胜任这件事呢?毫无疑问,这会是国内企业大数据技术领域的一本不可多得的图书。“思者常新,厚积薄发”正是我对本书作者这几年状态的一个真实表述,但同时也是对于正走向真正落地的企业大数据时代的共勉。数字经济时代已经到来,作为这个时代积极的参与者,我们渴望和更多的思考者共同分享、一起创造,实现企业大数据技术应用的爆发。


远光软件大数据事业部总经理 解来甲





Preface?前  言

为什么要写这本书

近年来,大数据这个概念越来越火爆,特别是在国家层面,大数据被提升到了国家战略的高度。在这样的背景下,很多传统企业开始涉足大数据领域并研发自己的大数据技术平台。在这股技术升级与转型的浪潮中,传统领域的程序员纷纷转型投向大数据的怀抱。目前大数据技术开源领域以Hadoop生态构建的技术体系为主。现在市面上有很多与Hadoop体系相关的技术书籍,Hadoop、Spark这类火爆的技术已经有大量优秀的专业书籍进行讲解。但我发现这类书籍多是以纵向的视角去讲解某一类具体的技术,而大数据领域涉及的知识繁多,在构建大数据平台的过程中我们不仅需要精通单个技术组件的知识,还需要拥有横向整合拉通Hadoop体系技术栈的能力。而这类横向拉通Hadoop体系技术栈的书籍并不多见。所以我将自己在构建大数据平台上的一些经验和实践进行了整理,分享给各位读者。希望本书能够为各位读者构建大数据平台或解决方案提供一定的帮助。

读者对象

想了解大数据技术,想进入大数据领域的工程师:作为一个想进入大数据领域的“新人”,你可以通过本书从宏观的视角迅速对大数据的基础设施和技术栈有一个全面的认识和了解。本书可以作为你的入门指南和技术栈索引目录。

大数据领域的中高级工程师:作为一个大数据领域的中高级工程师,对Hadoop生态体系的技术应该早已运用自如。通过本书的学习,相信你对大数据领域多种技术栈的整合会有一个更深刻的认识。同时本书中的一些平台级方案也会帮助你提升在平台架构方面的造诣。

平台架构师:作为一个平台架构师,本书中的一些解决方案和设计思路可以作为你进行系统架构的参考资料。

本书主要内容

本书从企业的实际需求出发,完整地介绍了构建一个真实可用、安全可靠的企业级大数据平台所需要运用的知识体系,并详细地描述了构建企业级大数据平台的设计方案和实施步骤。

本书逻辑上可分为3大部分,共8章,每个章节循序渐进:

第一部分(第1、2章)描述了企业级大数据平台的需求和能力。

第二部分(第3~5章)着重讲述了如何去搭建并配置一个大数据平台,以及如何构建非常重要的平台安全方案。

第三部分(第6~8章)以实战的形式讲解如何以Java编码的方式实现平台的基础管理功能,以提升其易用性与可用性。

具体各章内容如下:

第1章 阐述企业级大数据平台的重要性,并解释了为什么需要构建一个统一的企业级大数据平台。接着介绍作为一个企业级大数据平台应当具备的能力,并解释其原因。

第2章 介绍通过Hadoop生态体系去构建一个企业级大数据平台可以使用的技术栈,如HDFS、HBase、Spark等,并一一介绍了它们的核心概念。

第3章 介绍集群管理工具Ambari,并站在集群服务器的角度分类解释如何去设计一个Hadoop集群,详细描述了如何使用Ambari来安装、管理和监控一个Hadoop集群。

第4章 介绍企业级大数据平台中非常重要的安全部分。首先阐述了企业级大数据平台面临的一些安全隐患,接着展示了一套初级解决方案并介绍了如何使用Knox和Ranger解决访问控制和数据授权与管理的问题。

第5章 着重介绍Hadoop服务的安全方案,并说明如何通过Kerberos协议等一系列措施来保障Hadoop集群的安全。

第6章 阐述大数据平台在易用性上的一些遗留问题,接着介绍如何通过CAS实现平台的单点登录功能,最后描述如何使用Java程序实现统一的用户管理服务。

第7章 简单阐述服务化的重要性以及如何将大数据平台管理端的功能封装成RESTful服务。首先介绍了如何使用Spring-Boot快速搭建一套RESTful服务的程序框架,接着详细描述如何实现Kerberos用户查询、Hive数据仓库查询和元数据查询等一系列RESTful服务。

第8章 介绍如何使用Java程序实现Spark的任务提交与任务调度功能。首先着重介绍使用Java程序实现Spark任务提交到YARN的三种方式,接着描述如何通过Quartz实现任务调度功能。

如何阅读本书

本书内容会涉及大数据领域相关的技术知识,所以假定读者已具有一定的编程经验,了解分布式、多线程、集群等概念。本书部分内容涉及集群服务的实战安装示例,所以需要准备至少两台用于搭建测试环境的Linux服务器或虚拟机。

勘误和支持

由于水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。为此,我特意创建了一个提供在线支持与应急方案的站点https://github.com/nauu/bigdatabook。你可以将书中的错误发布在Bug勘误表页面中,如果你遇到任何问题,也可以访问Q&A页面,我将尽量在线上为读者提供最满意的解答。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱yawface@gmail.com或者访问新浪微博http://weibo.com/boness,期待能够得到你们的真挚反馈。

致谢

感谢我的家人,如果没有你们的悉心照顾和鼓励,我不可能完成本书。

感谢我的公司远光软件,为我提供了学习和成长的环境,本书中的很多知识都来自工作中的实践。

感谢我的挚友李根,为本书提出了许多宝贵的建议。

感谢我的同事兼伙伴们——解来甲、张琛、杨柯、潘登、胡艺、李国威、陈世宾、陈泽华,以及名单之外的更多朋友,感谢你们在工作中的照顾和支持,十分荣幸能够与你们在这个富有激情和活力的团队共事。

感谢机械工业出版社华章公司的编辑杨福川老师、孙海亮老师,在这一年多的时间中始终支持我的写作,你们的鼓励和帮助引导我顺利地完成全部书稿。


朱 凯





目  录?Contents

推荐序 思者常新,厚积薄发

前 言

第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


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。