查看原文
其他

大数据荐读 | 如何建立完整可用的企业大数据平台?

大数据杂谈 超图集团 2020-02-04


胡中南

北京超图软件股份有限公司云产品研发中心总经理

大数据框架五花八门 ,大数据技术浩如烟海,大数据名词乱花迷眼,如何将看上去高大上的理念落到实地?从数据流的源头跟踪到最后有价值的输出,如何在现有的 Hadoop 和大数据生态圈内选型,来构建一个能够支撑多种查询和分析功能的系统平台?


本文是一线大数据架构师的经验之谈,从计算平台、存储、安全三个角度介绍了具体技术及选型考虑,推荐大家阅读。




要建立一个大数据系统,我们需要从数据流的源头跟踪到最后有价值的输出,并在现有的 Hadoop 和大数据生态圈内根据实际需求挑选并整合各部分合适的组件来构建一个能够支撑多种查询和分析功能的系统平台。这其中既包括了对数据存储的选择,也涵盖了数据线上和线下处理分离等方面的思考和权衡。


01

计算框架篇 大数据的价值 


只有在能指导人们做出有价值的决定时,数据才能体现其自身的价值。因此,大数据技术要服务于实际的用途,才是有意义的。一般来说,大数据可以从以下三个方面指导人们做出有价值的决定:


  1. 报表生成(比如根据用户历史点击行为的跟踪和综合分析、 应用程序活跃程度和用户粘性计算等);

  2. 诊断分析(例如分析为何用户粘性下降、根据日志分析系统为何性能下降、垃圾邮件以及病毒的特征检测等);

  3. 决策(例如个性化新闻阅读或歌曲推荐、预测增加哪些功能能增加用户粘性、帮助广告主进行广告精准投放、设定垃圾邮件和病毒拦截策略等)。


图 1


进一步来看,大数据技术从以下三个方面解决了传统技术难以达成的目标(如图 1):


  1. 在历史数据上的低延迟(交互式)查询,目标是加快决策过程和时间, 例如分析一个站点为何变缓慢并尝试修复它;

  2. 在实时数据上的低延迟查询,目的是帮助用户和应用程序在实时数据上做出决策, 例如实时检测并阻拦病毒蠕虫(一个病毒蠕虫可以在 1.3 秒内攻击 1 百万台主机);

  3. 更加精细高级的数据处理算法,这可以帮助用户做出“更好”的决策, 例如图数据处理、异常点检测、趋势分析及其他机器学习算法。


蛋糕模式


从将数据转换成价值的角度来说,在 Hadoop 生态圈十年蓬勃成长的过程中,YARN 和 Spark 这二者可以算得上是里程碑事件。Yarn 的出现使得集群资源管理和数据处理流水线分离,大大革新并推动了大数据应用层面各种框架的发展(SQL on Hadoop 框架, 流数据,图数据,机器学习)。


它使得用户不再受到 MapReduce 开发模式的约束,而是可以创建种类更为丰富的分布式应用程序,并让各类应用程序运行在统一的架构上,消除了为其他框架维护独有资源的开销。就好比一个多层蛋糕,下面两层是 HDFS 和 Yarn, 而 MapReduce 就只是蛋糕上层的一根蜡烛而已,在蛋糕上还能插各式各样的蜡烛。


在这一架构体系中,总体数据处理分析作业分三块(图 2),在 HBase 上做交互式查询(Apache Phoenix, Cloudera Impala 等), 在历史数据集上编写 MapReduce 程序抑或利用 Hive 等做批处理业务, 另外对于实时流数据分析 Apache Storm 则会是一种标准选择方案。


虽然 Yarn 的出现极大地丰富了 Hadoop 生态圈的应用场景,但仍存有两个显而易见的挑战:一是在一个平台上需要维护三个开发堆栈;二是在不同框架内很难共享数据,比如很难在一个框架内对流数据做交互式查询。这也意味着我们需要一个更为统一和支持更好抽象的计算框架的出现。


图 2


一统江湖


Spark 的出现使得批处理任务,交互式查询,实时流数据处理被整合到一个统一的框架内(图 3),同时 Spark 和现有的开源生态系统也能够很好地兼容(Hadoop, HDFS, Yarn, Hive, Flume)。 通过启用内存分布数据集,优化迭代工作负载, 用户能够更简单地操作数据,并在此基础上开发更为精细的算法,如机器学习和图算法等。


有三个最主要的原因促使 Spark 目前成为了时下最火的大数据开源社区(拥有超过来自 200 多个公司的 800 多个 contributors):


  1. Spark 可以扩展部署到超过 8000 节点并处理 PB 级别的数据,同时也提供了很多不错的工具供应用开发者进行管理和部署;

  2. Spark 提供了一个交互式 shell 供开发者可以用 Scala 或者 Python 即时性试验不同的功能;

  3. Spark 提供了很多内置函数使得开发者能够比较容易地写出低耦合的并且能够并发执行的代码,这样开发人员就更能集中精力地为用户提供更多的业务功能而不是花费时间在优化并行化代码之上。


当然 Spark 也和当年的 MapReduce 一样不是万灵药,比如对实时性要求很高的流数据处理上 Apache Storm 还是被作为主流选择, 因为 Spark Streaming 实际上是 microbatch(将一个流数据按时间片切成 batch, 每个 batch 提交一个 job)而不是事件触发实时系统,所以虽然支持者们认为 microbatch 在系统延时性上贡献并不多,但在生产环境中和 Apache Storm 相比还不是特别能满足对低延时要求很高的应用场景。


由于 Spark 的系统设计对各类工作(批处理、流处理以及交互式工作)进行了一个共有抽象,并且生态圈内延伸出了许多丰富的库(MLlib 机器学习库、SQL 语言 API、GraphX),  使得用户可以在每一批流数据上进行灵活的 Spark 相关操作,在开发上提供了许多便利。


Spark 的成熟使得 Hadoop 生态圈在短短一年之间发生了翻天覆地的变化, Cloudera 和 Hortonworks 纷纷加入了 Spark 阵营,而 Hadoop 项目群中除了 Yarn 之外已经没有项目是必须的了(虽然 Mesos 已在一些场合替代了 Yarn), 因为就连 HDFS,Spark 都可以不依赖。但很多时候我们仍然需要像 Impala 这样的依赖分布式文件系统的 MPP 解决方案并利用 Hive 管理文件到表的映射,因此 Hadoop 传统生态圈依然有很强的生命力。


图 3


02

NoSQL 数据库篇


NoSQL 数据库在主流选择上依旧集中在 MongoDB, HBase 和 Cassandra 这三者之间。在所有的 NoSQL 选择中,用 C++ 编写的 MongoDB 几乎应该是开发者最快也最易部署的选择。MongoDB 是一个面向文档的数据库,每个文档/记录/数据(包括爬取的网页数据及其他大型对象如视频等)是以一种 BSON(Binary JSON)的二进制数据格式存储, 这使得 MongoDB 并不需要事先定义任何模式, 也就是模式自由(可以把完全不同结构的记录放在同一个数据库里)。


MongoDB 对于完全索引的支持在应用上是很方便的,同时也具备一般 NoSQL 分布式数据库中可扩展,支持复制和故障恢复等功能。 MongoDB 一般应用于高度伸缩性的缓存及大尺寸的 JSON 数据存储业务中,但不能执行“JOIN”操作,而且数据占用空间也比较大,最被用户诟病的就是由于 MongoDB 提供的是数据库级锁粒度导致在一些情况下建索引操作会引发整个数据库阻塞。一般来说,MongoDB 完全可以满足一些快速迭代的中小型项目的需求。


下面来主要谈谈 Cassandra 和 HBase 之间的比较选择。Cassandra 和 HBase 有着截然不同的基因血统。HBase 和其底层依赖的系统架构源自于著名的 Google FileSystem(发表于 2003 年)和 Google BigTable 设计(发表于 2006 年), 其克服了 HDFS 注重吞吐量却牺牲 I/O 的缺点,提供了一个存储中间层使得用户或者应用程序可以随机读写数据。


在数据模型上,Cassandra 和 HBase 类似,实现了一个 key-value 提供面向列式存储服务,其系统设计参考了 Amazon Dynamo (发表于 2007 年) 分布式哈希(DHT)的 P2P 结构(实际上大部分 Cassandra 的初始工作都是由两位从 Amazon 的 Dynamo 组跳槽到 Facebook 的工程师完成),同样具有很高的可扩展性和容错性等特点。


除此之外, 相对 HBase 的主从结构,Cassandra 去中心化的 P2P 结构能够更简单地部署和维护,比如增加一台机器只需告知 Cassandra 系统新节点在哪,剩下的交给系统完成就行了。同时,Cassandra 对多数据中心的支持也更好,如果需要在多个数据中心进行数据迁移 Cassandra 会是一个更优的选择。


Eric Brewer 教授提出的经典 CAP 理论认为任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。实际分布式系统的设计过程往往都是在一致性与可用性上进行取舍,相比于 HBase 数据完全一致性的系统设计,Cassandra 选择了在优先考虑数据可用性的基础上让用户自己根据应用程序需求决定系统一致性级别。


从基因和发展历史上来说,HBase 更适合用做数据仓库和大规模数据处理与分析(比如对网页数据建立索引), 而 Cassandra 则更适合用作实时事务和交互式查询服务。Cassandra 在国外市场占有比例和发展要远比国内红火, 在不少权威测评网站上排名都已经超过了 HBase。目前 Apache Cassandra 的商业化版本主要由软件公司 DataStax 进行开发和销售推广。另外还有一些 NoSQL 分布式数据库如 Riak, CouchDB 也都在各自支持的厂商推动下取得了不错的发展。


03

大数据安全篇


随着越来越多各式各样的数据被存储在大数据系统中,任何对企业级数据的破坏都是灾难性的,从侵犯隐私到监管违规,甚至会造成公司品牌的破坏并最终影响到股东收益。给大数据系统提供全面且有效的安全解决方案的需求已经十分迫切:


  • 大数据系统存储着许多重要且敏感的数据,这些数据是企业长久以来的财富

  • 与大数据系统互动的外部系统是动态变化的,这会给系统引入新的安全隐患

  • 在一个企业的内部,不同 Business Units 会用不同的方式与大数据系统进行交互,比如线上的系统会实时给集群推送数据、数据科学家团队则需要分析存储在数据仓库内的历史数据、运维团队则会需要对大数据系统拥有管理权限。


一般来说,一个完整的企业级安全框架包括五个部分:


  • Administration: 大数据集群系统的集中式管理,设定全局一致的安全策略

  • Authentication: 对用户和系统的认证

  • Authorization:授权个人用户和组对数据的访问权限

  • Audit:维护数据访问的日志记录

  • Data Protection:数据脱敏和加密以达到保护数据的目的


系统管理员要能够提供覆盖以上五个部分的企业级安全基础设施,否则任何一环的缺失都可能给整个系统引入安全性风险。


在大数据系统安全集中式管理平台这块,由 Hortonworks 推出的开源项目 Apache Ranger 就可以十分全面地为用户提供 Hadoop 生态圈的集中安全策略的管理,并解决授权 (Authorization) 和审计 (Audit)。例如,运维管理员可以轻松地为个人用户和组对文件、数据等的访问策略,然后审计对数据源的访问。


与 Ranger 提供相似功能的还有 Cloudera 推出的 Apache Sentry 项目,相比较而言 Ranger 的功能会更全面一些。


而在认证(Authentication)方面, 一种普遍采用的解决方案是将基于 Kerberos 的认证方案对接到企业内部的 LDAP 环境中, Kerberos 也是唯一为 Hadoop 全面实施的验证技术。


另外值得一提的是 Apache Knox Gateway 项目,与 Ranger 提高集群内部组件以及用户互相访问的安全不同,Knox 提供的是 Hadoop 集群与外界的唯一交互接口,也就是说所有与集群交互的 REST API 都通过 Knox 处理。这样,Knox 就给大数据系统提供了一个很好的基于边缘的安全(perimeter-based security)。


基于以上提到的五个安全指标和 Hadoop 生态圈安全相关的开源项目, 已经足已证明基于 Hadoop 的大数据平台我们是能够构建一个集中、一致、全面且有效的安全解决方案。


04

总结


本文主要介绍了如何将 Hadoop 和大数据生态圈的各部分重要组件有机地联系在一起去创建一个能够支撑批处理、交互式和实时分析工作的大数据平台系统。其中,我们重点尝试从计算框架、 NoSQL 数据库以及大数据平台安全这三方面分析了在不同的应用场景中相应的技术选型以及需要考虑到的权衡点,希望让大家对如何建立一个完整可用的安全大数据平台能有一个直观的认识。


|上期回顾|

大数据荐读 | 这十大原理你都知道吗?

大数据荐读 | 一文看懂数据可视化


|近期阅读|

超图大学 | 如何提高专注力,进行时间的高效分配?

2017地理信息技术创新研讨会邀您共聚彩云之南

请回答2017!GISer高考卷出炉,答对6道以上一定是天才!

智慧郑州:大数据驱动时空信息平台创新

GIS+BIM跨界融合应用:智能管理道路“健康”,精准定位路桥病害

重庆这个平台有点牛!31个市级部门接入,5000万条数据共享

欢迎转载~

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存