随着大数据的发展,越来越多的成功企业或者组织采取数据驱动商业的运作模式。在eBay,拥有数万名工程师、分析师和数据科学家,他们每天访问分析数PB级的数据,为用户带来无与伦比的体验。在全球业务中,eBay也广泛地利用海量大数据来连接数以亿计的用户。在搭建数据架构时,分布式系统是目前整个互联网行业百谈不厌的话题,进行服务端架构设计时,都无疑会使用分布式的部署方案。广泛应用于:3、要靠高性能、可伸缩的系统特性来为广大开发者提供第三方服务的解决方案提供商。近年来,Hadoop已经逐渐成为大数据分析领域最受欢迎的解决方案,像eBay这样大型的电子商务企业,一直在使用Hadoop技术从数据中挖掘价值,例如,通过大数据提高用户的搜索体验,识别和优化精准广告投放,充实产品目录,以及通过点击流分析以理解用户如何使用其在线市场平台等。目前,eBay的Hadoop集群总节点数据超过10000多个,存储容量超 过170PB,活跃用户超过2000多。eBay的Hadoop相关规模还在不断增长中,同时为了支持多元化需求,其引入越来越多样的数据存储和分析方案,比如Hive、 MapReduec、Spark 和HBase等,但随之带来的管理和监控的挑战越来越严峻,数据安全问题亦是其中最重要的之一。大数据时代,安全问题开始变得空前的关键,特别eBay作为全球领先的电子商务公司,必须保证Hadoop中用户数据的绝对安全。数据安全是非常重要的,将数据放上去之前必须考虑数据一旦被人黑,会出现什么样的后果。Eagle是Hadoop数据安全领域的核心组件之一,可以实现访问控制、安全隔离、数据分类、数据加密以及实时数据行为监控,然而经过广泛的尝试和研究,eBay公司团队意识到没有任何已经存在的产品或者解决方案能够充分满足面临海量实时数据流和多元化用例场景下数据行为监控的需求。为了逾越这道鸿沟,eBay决定从头开始构建Eagle。不久前,eBay公司隆重宣布正式推出开源分布式实时安全监控即Hadoop数据安全方案Apache Eagle,其是一个分布式平台,是为了解决Hadoop的监控和预警的问题开发的,支持数据行为实时监控,能立即监测出对敏感数据的访问或恶意的操作,并立即采取应对的措施。该项目已正式加入Apache基金,将Eagle捐赠给Apache软件基金,成为Apache 孵化器项目,将它的功能分享给整个社区。目前eBay公司期望能够同开源社区一同协作开发,使得Eagle不断发展壮大,共同满足开源社区中更广泛的需求。(1)提供一套高效分布式的流式策略引擎,具有多节点计算、高实时、可伸缩、易扩展、交互友好等特点;(2)集成机器学习,对用户行为建立Profile以实现实时智能地保护Hadoop生态系统中大数据的安全。在于节点很复杂,要做监控用户行为、监控集群的Metric、监控job的日志等工作。作为一个预警,特别是当别人可能有一些异常行为、黑客行为、非法行为或者非授权行为时,你必须在秒级别甚至是毫秒级别阻挡掉它,这对分析处理能力和整合的能力提出了很高的要求。建设分布式的实时策略引擎,首先要将数据层做到实时,然后规则引擎做到分布式实施,做到非常易用又很强大,且高延展性,在元数据驱动下可以进行数据的并行处理。(1)不论是做安全性的监控,还是整个的performence相关的监控,出现任何异常,节点当然必须要保证你能监测到,实时的监测到然后发alert。(2)现在开源的架构下,节点的数据源来自于Hadoop、Hive、HBase,来自它们的日志、事件等等。(3)Eagle的数据行为监控系统已经部署到一个拥有2500多个节点的Hadoop集群之上,用以保护数百PB数据的安全,并正计划于今年年底之前扩展到其他上十个Hadoop集群上,从而覆盖eBay 所有主要Hadoop的10000多台节点。(1)在eBay生产环境中,已针对HDFS、Hive 等集群中数据设置了一些基础的安全策略,并将不断引入更多的策略,以确保重要数据的绝对安全。(2)目前,Eagle的策略涵盖多种模式,包括从访问模式、频繁访问数据集,预定义查询类型、Hive 表和列、HBase 表以及基于机器学习模型生成的用户Profile相关的所有策略等。(3)广泛的策略来防止数据的丢失、数据被拷贝到不安全地点、敏感数据被未授权区域访问等。(4)Eagle策略定义上极大的灵活性和扩展性使得未来可以轻易地继续扩展更多更复杂的策略以支持更多多元化的用例场景。eBay希望其系统非常容易扩展,但元数据(metadata)需要自己去维护,这样控制得才能非常好。很多时候,传统的监控系统是预定一个规则,你触犯了这个规则,告诉你出现了什么事情。在现实情况下你的规则并不能覆盖所有的东西,eBay希望这个机器通过你的历史行为,比如你一直是在做正常的事,突然有一天做了异常的事,这个机器自动生成这样的规则。(1)这是数据进来最重要的一层,有赖于高吞吐的分布式message系统,数据进来,处理不完也可以hold几天或者去拿到你的事件,去产生预警或者是存起来或者聚合。它就可以保证用户行为的有序性,同时保证多个partition同时进同时出,实现并行的消息吞吐。(2)当数据量非常巨大,收集层并不是简单的用一个单机或者用一个TomCat,或者是微服务去处理,KAFKA的集群也许就几十台,只做收集,是很简单的数据结构,但是本身必须做到分布式,吞吐量必须非常的大,做到毫秒级别。(1)应该允许预定义规则,对用户来说希望简单预定规则,但是系统必须很powerful。(2)80%的rule基本上很难做到无状态。因为监控的是某个人或者某台机器或者某个service,必然带状态的。所以规则引擎必须能够支持这样的一个东西。假设我们这个集群,我们有一百台节点,如果某个人非常大,其他人都很小,比如这个人造成了50%的数据,50%进入到一台,剩下99台,这是一个很大的瓶颈。(3)通过机器学习,知道用户行为在日常进来,或者基于历史行为,能够产生建模。比如会对他的行为模型,界定一下正常的行为空间和异常的行为空间。当时的行为偏离正常的行为空间的时候,也许有理由发出一个警告,这个人到底是不是他。数据量很大,需要存得很大查得很快。UI,对用户非常友好。基于机器学习,希望它实时的可建立它的模型,计算方式有赖于核密度模型或者主成分分析模型,当然也基于历史建模。1、高实时:eBay充分理解安全监控中高度实时和快速反应的重要性,因此设计Eagle之初,竭尽可能地确保能在亚秒级别时间内产生告警,一旦综合多种因素确定为危险操作,就立即采取措施阻止非法行为。2、可伸缩:Eagle 通过支持策略的分区接口来实现大量的策略可伸缩并发地运行。eBay Eagle 被部署在多个大型Hadoop集群上,这些集群拥有数百PB的数据,每天有8亿以上的数据访问时间,因此Eagle必须具有处理海量实时数据的高度可伸缩能力。3、简单易用:可用性也是Eagle产品的核心设计原则之一。通过Eagle的Sandbox,使用者仅需数分钟便可以设置好环境并开始尝试。为了使得用户体验尽可能简单,内置了许多很好的例子,只需简单地点击几步鼠标,便可以轻松地完成策略地创建和添加。4、用户Profile:Eagle 内置提供基于机器学习算法对Hadoop中用户行为习惯建立用户Profile的功能。提供多种默认的机器学习算法供客户选择用于针对不同HDFS特征进行建模,通过历史行为模型,Eagle可以实时地检测异常用户行为并产生预警。5、开源:Eagle一直根据开源的标准开发,并构建于诸多大数据领域的开源产品之上,因此决定以Apache许可证开源Eagle,以回馈社区,同时也期待获得社区的反馈、协作与支持。6、机器学习:Eagle 支持根据用户在Hadoop平台上历史使用行为习惯来定义行为模式或用户Profile的能力。拥有了这个功能,不需要在系统中预先设置固定临界值的情况下,也可以实现智能地检测出异常的行为。Eagle中用户Profile是通过机器学习算法生成,用于在用户当前实时行为模式与其对应的历史模型模式存在一定程度的差异时识别用户行为是否为异常。目前,Eagle 内置提供以下两种算法来检测异常,分别为特征值分解和密度估计。这些算法从HDFS 审计日志中读取数据,对数据进行分割、审查、交叉分析,周期性地为每个用户依次创建Profile 行为模型。一旦模型生成,Eagle的实时流策略引擎能够近乎实时地识别出异常,分辨当前用户的行为可疑的或者与他们的历史行为模型不相符。Eagle 提供高度可扩展的编程API,可以支持将任何类型的数据源集成到Eagle的策略执行引擎中,保证比较高的可伸缩性和容错性。Eagle 提供独立于物理平台而高度抽象的流处理API,目前默认支持Apache Storm,但是也允许扩展到其他任意流处理引擎。该层抽象允许开发者在定义监控数据处理逻辑时,无需在物理执行层绑定任何特定流处理平台,而只需通过复用、拼接和组装例如数据转换、过滤、 外部数据Join等组件,以实现满足需求的DAG(有向无环图),同时,开发者也可以很容易地以编程方式将业务逻辑流程和Eagle策略引擎框架集成起来。Eagle框架内部会将描述业务逻辑的DAG编译成底层流处理架构的原生应用,例如Apache Storm Topology 等,从而实现平台的独立。1、Eagle 告警框架由流元数据API、策略引擎服务提供API、策略Partitioner API 以及预警框架等组成,其中:(1)流元数据API 允许用户声明事件的Schema,包括事件由哪些属性构成、每个属性的类型,以及当用户配置策略时如何在运行时动态解析属性的值等。(2)策略引擎服务提供API 允许开发者很容易地以插件的形式扩展新的策略引擎。WSO2 Siddhi CEP 引擎是Eagle 优先默认支持的策略引擎,同时机器学习算法也可作为另一种策略引擎执行。该算法的基本思想是根据检测的训练样本数据针对每个用户计算出对应的概率密度分布函数。(1)对训练数据集的每个特征均值标准化,标准化可以使得所有数据集转化为相同尺度。(2)在随机变量概率分布估计中,采用高斯分布式函数来计算概率密度。假设任意特征彼此相互独立,那么最终的高斯概率密度就可以通过分解各个特征的概率密度而计算得到。在线实时检测阶段,可以计算出每个用户实时行为的概率。如果用户出现当前行为的可能性低于某个临界值,表识为异常警告,而这个临界值完全由离线训练程序通过称为“马修斯相关系数”的方法计算而得。该算法中,认为生成用户Profile的主要目的是为了从中发现有价值的用户行为模式。为了实现这个目的,可以考虑对特征依次进行组合,然后观察他们相互之间是如何影响的。当数据集非常巨大时,正如通常我们所遇到的场景,由于正常模式的数量非常之多,以至于特征集的异常的模式很容易被忽视。由于正常的行为模式通常处于非常低维的子空间内,因此我们也许可以通过降低数据集的维度来更好的理解用户的真正的行为模式。该方法同样可以对于训练数据集进行降噪。1、策略管理器:策略管理器提供交互友好的用户界面和REST API 供用户轻松地定义和管理策略,一切只需几次鼠标点击而已。Eagle的用户界面使得策略的管理、敏感元数据的标识和导入、HDFS或Hive 的资源浏览以及预警仪表等功能都非常易于使用。2、单一事件执行策略(用户访问Hive中的敏感数据列)。3、基于窗口的策略(用户在10分钟内访问目录 /tmp/private 多余 5次)。4、查询服务(Query Service): Eagle 提供类SQL的REST API用来实现针对海量数据集的综合计算、查询和分析的能力,支持例如过滤、聚合、直方运算、排序、top、算术表达式以及分页等。过去两年中,在eBay 除了被用于数据行为监控以外,Eagle 核心框架还被广泛用于监控节点健康状况、Hadoop应用性能指标、Hadoop 核心服务以及整个Hadoop集群的健康状况等诸多领域。还建立一系列的自动化机制,例如节点修复等,帮助平台部门极大得节省了人工劳力,并有效地提升了整个集群资源地利用率。以下是目前正在开发中地一些特性:2、提供高度可扩展的API,以方便汇集目前业界广泛使用的其他监控预警平台或者工具,如Ganglia和Nagios等,同时支持敏感数据的导入,如与Dataguise 集成等。3、正在积极整理其他Hadoop 集群监控模块,期望在后续发布中开源给社区,例如HBase 监控、Hadoop 作业性能监控、Hadoop 节点监控。这是大型分布式系统架构实践案例的分享。虽然内容艰深晦涩,硬着头皮梳理下来,但却是一次不一般的磨练和收获。技术架构应该底层是复杂架构,但应用架构却非常简单、高效而富有弹性,整个的结构注重元数据驱动和机器学习智能产生监控规则。来源:微信号 云上学堂
原文:http://mp.weixin.qq.com/s?__biz=MzIxNTE0NTgyNQ== |