1. 创建大数据项目的五大步骤
创建大数据项目的五大步骤
企业需要积极的提升他们的数据管理能力。这并非意味着他们应该制定繁琐的流程和监督机制。明智的企业会配合他们的数据活动的生命周期制定灵活的流程和功能:根据业务需求启动更轻更严格、更强大的功能,并根据需求的增加来提升质量或精度。
一些企业正在利用新兴技术来应对新的数据源,但大多数企业仍然面临着需要努力管理好他们已经掌握或者应当掌握的数据信息的困境,而当他们试图部署大数据功能时,发现自己还需要面对和处理新的以及当下实时的数据。
为了能够实现持久成功的大数据项目,企业需要把重点放在如下五个主要领域。
1、确立明确的角色分工和职责范围。
对于您企业环境中的所有的数据信息,您需要对于这些数据信息所涉及的关键利益相关者、决策者有一个清晰的了解和把控。当数据信息在企业的系统传输过程中及其整个生命周期中,角色分工将发生变化,而企业需要对这些变化有一个很好的理解。当企业开始部署大数据项目之后,务必要明确识别相关数据的关键利益相关者,并做好这些数据信息的完善和迭代工作。
2、加强企业的数据治理和数据管理功能。
确保您企业的进程足够强大,能够满足和支持大数据用户和大数据技术的需求。进程可以是灵活的,并应充分考虑到业务部门和事务部门的需求,这些部门均伴有不同程度的严谨性和监督要求。
确保您企业的参考信息架构已经更新到包括大数据。这样做会给未来的项目打好最好的使用大数据技术和适当的信息管理能力的基础。
确保您企业的元数据管理功能足够强大,能够包括并关联所有的基本元数据组件。随着时间的推移,进行有序的分类,满足业务规范。
一旦您开始在您企业的生产部门推广您的解决方案时,您会希望他们长期持续的使用该解决方案,所以对架构功能的定义并监督其发挥的作用是至关重要的。确保您企业的治理流程包括IT控制的角色,以帮助企业的利益相关者们进行引导项目,以最佳地利用这些数据信息。其还应该包括您企业的安全和法务团队。根据我们的经验,使用现有的监督机制能够达到最佳的工作状态,只要企业实施了大数据应用,并专注于快速在进程中处理应用程序,而不是阻碍进程的通过。
3、了解环境中的数据的目的和要求的精度水平,并相应地调整您企业的期望值和流程。
无论其是一个POC,或一个已经进入主流业务流程的项目,请务必确保您对于期望利用这些数据来执行什么任务,及其质量和精度处于何种级别有一个非常清晰的了解。这种方法将使得企业的项目能够寻找到正确的数据来源和利益相关者,以更好地评估这些数据信息的价值和影响,进而让您决定如何最好地管理这些数据信息。更高的质量和精度则要求更强大的数据管理和监督能力。
随着您企业大数据项目的日趋成熟,考虑建立一套按照数据质量或精确度分类的办法,这将使得数据用户得以更好的了解他们所使用的是什么,并相应地调整自己的期望值。例如,您可以使用白色、蓝色或金色来分别代表原始数据、清理过的数据,经过验证可以有针对性的支持分析和使用的数据。有些企业甚至进一步完善了这一分类方法:将数据从1到5进行分类,其中1是原始数据,而5是便于理解,经过整理的、有组织的数据。
4、将对非结构化的内容的管理纳入到您企业的数据管理能力。
非结构化数据一直是企业业务运营的一部分,但既然现在我们已经有了更好的技术来探索,分析和这些非结构化的内容,进而帮助改善业务流程和工业务洞察,所以我们最终将其正式纳入我们的数据管理是非常重要的。大多数企业目前都被困在了这一步骤。
数据库中基本的、非结构化的数据是以评论的形式或者自由的形式存在的,其至少是数据库的一部分,应该被纳入到数据管理。但挖掘这些数据信息则是非常难的。
数字数据存储在传统的结构化数据库和业务流程外,很少有许多的治理范围分组和数据管理的实现,除了当其被看作是一个技术问题时。一般来说,除了严格遵守相关的安全政策,今天的企业尚未对其进行真正有效的管理。当您的企业开始大跨步实现了大数据项目之后,您会发现这一类型的数据信息迅速进入了您需要管理的范畴,其输出会影响您企业的商业智能解决方案或者甚至是您企业的业务活动。积极的考虑将这些数据纳入到您企业的数据管理功能的范围,并明确企业的所有权,并记录好这些数据信息的诸如如何使用、信息来源等等资料。
不要采取“容易的轻松路线”,单纯依靠大数据技术是您企业唯一正式的非结构化数据管理的过程。随着时间的推移,企业将收集越来越多的非结构化数据,请务必搞清楚哪些数据是好的,哪些是坏的,他们分别来自何处,以及其使用是否一致,将变得越来越重要,甚至在其生命周期使用这个数据都是至关重要的。
要保持这种清晰,您可以使用大数据和其他工具,以了解您企业所收集的数据信息,确定其有怎样的价值,需要怎样的管理,这是至关重要的。大多数进入您企业的大数据系统的非结构化数据都已经经过一些监控了,但通常是作为一个BLOB(binarylargeobject)二进制大对象和非结构化的形式进行的。随着您的企业不断的在您的业务流程中“发掘”出这一类型的数据,其变得更加精确和有价值。其可能还具有额外的特点,符合安全,隐私或法律和法规的元素要求。最终,这些数据块可以成为新的数据元素或添加到现有的数据,但您必须有元数据对其进行描述和管理,以便尽可能最有效地利用这些数据。
5、正式在生产环境运行之前进行测试。
如果您的企业做的是一次性的分析或完整的一次性的试点,这可能并不适用于您的企业,但对大多数企业来说,他们最初的大数据工作将迅速发展,他们找到一个可持续利用他们已经挖掘出的极具价值的信息的需求。这意味着需要在您的沙箱环境中进行测试,然后才正式的在您的生产环境运。
2. 怎样搭建企业大数据平台
步骤一:开展大数据咨询
规划合理的统筹规划与科学的顶层设计是大数据建设和应用的基础。通过大数据咨询规划服务,可以帮助企业明晰大数据建设的发展目标、重点任务和蓝图架构,并将蓝图架构的实现分解为可操作、可落地的实施路径和行动计划,有效指导企业大数据战略的落地实施。
步骤二:强化组织制度保障
企业信息化领导小组是企业大数据建设的强有力保障。企业需要从项目启动前就开始筹备组建以高层领导为核心的企业信息化领导小组。除了高层领导,还充分调动业务部门积极性,组织的执行层面由业务部门和IT部门共同组建,并确立决策层、管理层和执行层三级的项目组织机构,每个小组各司其职,完成项目的具体执行工作。
步骤三:建设企业大数据平台
基于大数据平台咨询规划的成果,进行大数据的建设和实施。由于大数据技术的复杂性,因此企业级大数据平台的建设不是一蹴而就,需循序渐进,分步实施,是一个持续迭代的工程,需本着开放、平等、协作、分享的互联网精神,构建大数据平台生态圈,形成相互协同、相互促进的良好的态势。
步骤四:进行大数据挖掘与分析
在企业级大数据平台的基础上,进行大数据的挖掘与分析。随着时代的发展,大数据挖掘与分析也会逐渐成为大数据技术的核心。大数据的价值体现在对大规模数据集合的智能处理方面,进而在大规模的数据中获取有用的信息,要想逐步实现这个功能,就必须对数据进行分析和挖掘,通过进行数据分析得到的结果,应用于企业经营管理的各个领域。
步骤五:利用大数据进行辅助决策
通过大数据的分析,为企业领导提供辅助决策。利用大数据决策将成为企业决策的必然,系统通过提供一个开放的、动态的、以全方位数据深度融合为基础的辅助决策环境,在适当的时机、以适当的方式提供指标、算法、模型、数据、知识等各种决策资源,供决策者选择,最大程度帮助企业决策者实现数据驱动的科学决策。
关于怎样搭建企业大数据平台,青藤小编就和您分享到这里了。如果你对大数据工程有浓厚的兴趣,希望这篇文章能够对你有所帮助。如果您还想了解更多数据分析师、大数据工程师的技巧及素材等内容,可以点击本站的其他文章进行学习。
3. 如何搭建大数据分析平台
随着各个企业的不断发展,企业的数据量不断的增加。企业的竞争压力也在不断的加大,利用数据分析平台来增加企业的竞争力,已经成为各个企业的信息化建设的核心环节。数据分析,我认为其含义就是从数据中提取信息创造价值。因为数据本身的价值是无法直接可见的,但是通过各种数据计算和分析,可以将人们无法注意到的信息从数据中提取出来,创造价值。那么具体如何搭建数据分析平台呢?我认为应从一下几个方面:
1.分析价值:明确数据分析的价值,通过笑誉大数据的分析,能够快速地发现消费者的需求变化和市场发展趋势,从而帮助企业及时做出正确的决策,从而使企业在市场上拥有更强的竞争力和不断创新的能力。
2.数据源头:有可供数据分析进行数据获取的平台。当今的IT信息化系统都在不断的建设当中,在数据分析时需要对亏升桥各种不同种类来源的数据进行分析。这些来源有可能是系统内部的日志数据,也有可能是来源于其他接口的数据等等。
3.数据处理:从数据源中采集各种符合企业需求的数据,经过验证、清洗、并转化销猛为所需格式后,储存到一个合适的持久化储存层中。
4.数据展现:将各个不同分析算法处理过的结果进行可视化展示。将数据从预先计算汇总的结果数据中读取出来,并用一种友好界面或者表格的形式展示出来,这样便于企业内部非专业人员对数据分析结果的理解。
4. 如何创建一个大数据平台
所谓的大数据平台不是独立存在的,比如网络是依赖搜索引擎获得大数据并开展业务的,阿里是通过电子商务交易获得大数据并开展业务的,腾讯是通过社交获得大数据并开始业务的,所以说大数据平台不是独立存在的,重点是如何搜集和沉淀数据,如何分析数据并挖掘数据的价值。
我可能还不够资格回答这个问题,没有经历过一个公司大数据平台从无到有到复杂的过程。不过说说看法吧,也算是梳理一下想法找找喷。
这是个需求驱动的过程。
曾经听过spotify的分享,印象很深的是,他们分享说,他们的hadoop集群第一次故障是因为,机器放在靠窗的地方,太阳晒了当机了(笑)。从简单的没有机房放在自家窗前的集群到一直到现在复杂的数据平台,这是一个不断演进的过程。
对小公司来说,大概自己找一两台机器架个集群算算,也算是大数据平台了。在初创阶段,数据量会很小,不需要多大的规模。这时候组件选择也很随意,Hadoop一套,任务调度用脚本或者轻量的框架比如luigi之类的,数据分析可能hive还不如导入RMDB快。监控和部署也许都没时间整理,用脚本或者轻量的监控,大约是没有ganglia、nagios,puppet什么的。这个阶段也许算是技术积累,用传统手段还是真大数据平台都是两可的事情,但是为了今后的扩展性,这时候上Hadoop也许是不错的选择。
当进入高速发展期,也许扩容会跟不上计划,不少公司可能会迁移平台到云上,比如AWS阿里云什么的。小规模高速发展的平台,这种方式应该是经济实惠的,省了运维和管理的成本,扩容比较省心。要解决的是选择平台本身提供的服务,计算成本,打通数据出入的通道。整个数据平台本身如果走这条路,可能就已经基本成型了。走这条路的比较有名的应该是netflix。
也有一个阶段,你发现云服务的费用太高,虽然省了你很多事,但是花钱嗖嗖的。几个老板一合计,再玩下去下个月工资发布出来了。然后无奈之下公司开始往私有集群迁移。这时候你大概需要一群靠谱的运维,帮你监管机器,之前两三台机器登录上去看看状态换个磁盘什么的也许就不可能了,你面对的是成百上千台主机,有些关键服务必须保证稳定,有些是数据节点,磁盘三天两头损耗,网络可能被压得不堪重负。你需要一个靠谱的人设计网络布局,设计运维规范,架设监控,值班团队走起7*24小时随时准备出台。然后上面再有平台组真的大数据平台走起。
然后是选型,如果有技术实力,可以直接用社区的一整套,自己管起来,监控部署什么的自己走起。这个阶段部署监控和用户管理什么的都不可能像两三个节点那样人肉搞了,配置管理,部署管理都需要专门的平台和组件;定期Review用户的作业和使用情况,决定是否扩容,清理数据等等。否则等机器和业务进一步增加,团队可能会死的很惨,疲于奔命,每天事故不断,进入恶性循环。
当然有金钱实力的大户可以找Cloudera,Hortonworks,国内可以找华为星环,会省不少事,适合非互联网土豪。当然互燃郑改联网公司也有用这些东西的,比如Ebay。
接下去你可能需要一些重量的组件帮你做一些事情。
比如你的数据接入,之前可能找个定时脚本或者爬log发包找个服务器接收写入HDFS,现在可能不行了,这些大概没有高性能,没有异常保障,你需要更强壮的解决方案,比如Flume之类的。
你的业务不断壮大,老板需要看的报表越来越多,需要训练的数据也需要清洗,你就需要任务调度,比如oozie或者azkaban之类的,这些系统帮你管理关键任务的调度和监控。
数据分析人员的数据大概可能渐渐从RDBMS搬迁到集群了,因为传统数皮判据库已经完全hold不住了,但他们不会写代码,所以你上马了Hive。然后很多用户用了Hive觉得太慢,丛物你就又上马交互分析系统,比如Presto,Impala或者SparkSQL。
你的数据科学家需要写ML代码,他们跟你说你需要Mahout或者SparkMLLib,于是你也部署了这些。
至此可能数据平台已经是工程师的日常工作场所了,大多数业务都会迁移过来。这时候你可能面临很多不同的问题。
比如各个业务线数据各种数据表多的一塌糊涂,不管是你还是写数据的人大概都不知道数据从哪儿来,接下去到哪儿去。你就自己搞了一套元数据管理的系统。
你分析性能,发现你们的数据都是上百Column,各种复杂的Query,裸存的Text格式即便压缩了也还是慢的要死,于是你主推用户都使用列存,Parquet,ORC之类的。
又或者你发现你们的ETL很长,中间生成好多临时数据,于是你下狠心把pipeline改写成Spark了。
再接下来也许你会想到花时间去维护一个门户,把这些零散的组件都整合到一起,提供统一的用户体验,比如一键就能把数据从数据库chua一下拉到HDFS导入Hive,也能一键就chua一下再搞回去;点几下就能设定一个定时任务,每天跑了给老板自动推送报表;或者点一下就能起一个Storm的topology;或者界面上写几个Query就能查询Hbase的数据。这时候你的数据平台算是成型了。
当然,磕磕碰碰免不了。每天你都有新的问题和挑战,否则你就要失业了不是?
你发现社区不断在解决你遇到过的问题,于是你们架构师每天分出很多时间去看社区的进展,有了什么新工具,有什么公司发布了什么项目解决了什么问题,兴许你就能用上。
上了这些乱七八糟的东西,你以为就安生了?Hadoop平台的一个大特点就是坑多。尤其是新做的功能新起的项目。对于平台组的人,老板如果知道这是天然坑多的平台,那他也许会很高兴,因为跟进社区,帮忙修bug,一起互动其实是很提升公司影响力的实情。当然如果老板不理解,你就自求多福吧,招几个老司机,出了问题能马上带路才是正道。当然团队的技术积累不能不跟上,因为数据平台还是乱世,三天不跟进你就不知道世界是什么样了。任何一个新技术,都是坑啊坑啊修啊修啊才完善的。如果是关键业务换技术,那需要小心再小心,技术主管也要有足够的积累,能够驾驭,知道收益和风险。
5. 如何构建大数据体系
一.数据搭建
建立自己的数据收集规范,形成一定的数据采集、筛选、分析等相应的制度
二.数据报表可视化
对数据进行标准化的配置,形成可视化的报表系统
三.产品与运营分析
对平台的各个角色建立全方位的用户画像,对行为进行数据跟踪,对数据挖掘分析,建立漏斗模型,流动模型,用户细分等模型。
四.精细化产品运营
对产品制定自动获取数据制度,用数据跟踪产品的生命周期,对数据进行细分,做到针对性运营
五.数据产品
借助第三方数据获取的渠道,形成数据化产品,提供数据化的依据
6. 公司级大数据处理平台的构建需要做哪些准备
按照大数据处理的流程,分为数据采集、数据存储、数据提取、数据挖掘、数据分析,数据展现和应用。以下是链家网的案例,采用Hadoop集群建立BI和报表平台,以及采用业务员自助分析和数据挖掘、数据分析人员借用大数据平台的集群运算能力挖掘数据的双模式业务。
除此之外,更传统的企业对于大数据平台的应用也是基于以上的流程。
引用某大数据平台建设的案例,该机构是国家性研究机构,建立大数据平台主要收集市场数据,出台国家级的研究性报告,用于辅助市场决策。
从建设的及流程开始讲起吧,算是提供一个方法论。
第一步是数据整合,对多源多类型的数据进行整合,实现数据共享。目前以帆软报表FineReport为数据处理工具,以SQLServer为数据库存储平台,整合信息中心常用业务数据,常用的业务数据包括价格、进出口以及平衡表等。
第二步就是数据的抓取、处理激毕和分析并自动化生成系列产品报告,实现目标是解放生产力御盯。把业务人员从采集、整理、处理数据的体力劳动中解放出来,集中精力于市场深度分析研究、模型建立镇铅和。本质上还是数据整合,不同地方是数据自动采集,并依据构建的模型。技术选型:FineReport+FineBI+Python+Kettle(ETL工具)+SQLServer。
第三步是数据挖掘,目标是构建行业模型和行业计量模型实现科学决策。
依托一期、二期整合的数据和大数据,接下来将构建大数据能力,提供标准化的服务能力。但粮油的分析模型、行业积累模型,是一种因素模型、经验模型,一定程度上依赖于分析师对市场的看法,这个模型分析结果需要分析师经验和直觉来判断,技术上要到位,所以这里通过帆软报表FineReport和商业智能FineBI的结果,从数据报表、数据分析、数据挖掘三个层次,把数据转化为信息把数据转化为信息,使得业务人员能够利用这些信息,辅助决策,这就是商业智能主要解决的问题。无论在哪个层次,核心目标就是“把数据转化为信息”。
7. 如何建立一个完整可用的安全大数据平台
“
要建立一个大数据系统,我们需要从数据流的源头跟踪到最后有价值的输出,并在现有的Hadoop和大数据生态圈内根据实际需求挑选并整合各部分合适的组件来构建一个能够支撑多种查询和分析功能的系统平台。这其中既包括了对数据存储的选择,也涵盖了数据线上和线下处理分离等方面的思考和权衡。此外,没有任何一个引入大数据解决方案的商业应用在生产环境上承担的起安全隐患。
1
计算框架篇
大数据的价值
只有在能指导人们做出有价值的决定时,数据才能体现其自身的价值。因此,大数据技术要服务于实际的用途,才是有意义的。一般来说,大数据可以从以下三个方面指导人们做出有价值的决定:
报表生成(比如根据用户历史点击行为的跟踪和综合分析、 应用程序活跃程度和用户粘性计算等);
诊断分析(例如分析为何用户粘性下降、根据日志分析系统为何性能下降、垃圾邮件以及病毒的特征检测等);
决策(例如个性化新闻阅读或歌曲推荐、预测增加哪些功能能增加用户粘性、帮助广告主进行广告精准投放、设定垃圾邮件和病毒拦截策略等)。
图 1
进一步来看,大数据技术从以下三个方面解决了传统技术难以达成的目标(如图1):
在历史数据上的低延迟(交互式)查询,目标是加快决策过程和时间, 例如分析一个站点为何变缓慢并尝试修复它;
在实时数据上的低延迟查询,目的是帮助用户和应用程序在实时数据上做出决策, 例如实时检测并阻拦病毒蠕虫(一个病毒蠕虫可以在1.3秒内攻击1百万台主机);
更加精细高级的数据处理算法,这可以帮助用户做出“更好”的决策, 例如图数据处理、异常点检测、趋势分析及其他机器学习算法。
蛋糕模式
从将数据转换成价值的角度来说,在Hadoop生态圈十年蓬勃成长的过程中,YARN和Spark这二者可以算得上是里程碑事件。Yarn的出现使得集群资源管理和数据处理流水线分离,大大革新并推动了大数据应用层面各种框架的发展(SQL on Hadoop框架, 流数据,图数据,机器学习)。
它使得用户不再受到MapRece开发模式的约束,而是可以创建种类更为丰富的分布式应用程序,并让各类应用程序运行在统一的架构上,消除了为其他框架维护独有资源的开销。就好比一个多层蛋糕,下面两层是HDFS和Yarn, 而MapRece就只是蛋糕上层的一根蜡烛而已,在蛋糕上还能插各式各样的蜡烛。
在这一架构体系中,总体数据处理分析作业分三块(图2),在HBase上做交互式查询(Apache Phoenix, Cloudera Impala等), 在历史数据集上编写MapRece程序抑或利用Hive等做批处理业务, 另外对于实时流数据分析Apache Storm则会是一种标准选择方案。
虽然Yarn的出现极大地丰富了Hadoop生态圈的应用场景,但仍存有两个显而易见的挑战:一是在一个平台上需要维护三个开发堆栈;二是在不同框架内很难共享数据,比如很难在一个框架内对流数据做交互式查询。这也意味着我们需要一个更为统一和支持更好抽象的计算框架的出现。
图 2
一统江湖
Spark的出现使得批处理任务,交互式查询,实时流数据处理被整合到一个统一的框架内(图3),同时Spark和现有的开源生态系统也能够很好地兼容(Hadoop, HDFS, Yarn, Hive, Flume)。 通过启用内存分布数据集,优化迭代工作负载, 用户能够更简单地操作数据,并在此基础上开发更为精细的算法,如机器学习和图算法等。
有三个最主要的原因促使Spark目前成为了时下最火的大数据开源社区(拥有超过来自200多个公司的800多个contributors):
Spark可以扩展部署到超过8000节点并处理PB级别的数据,同时也提供了很多不错的工具供应用开发者进行管理和部署;
Spark提供了一个交互式shell供开发者可以用Scala或者Python即时性试验不同的功能;
Spark提供了很多内置函数使得开发者能够比较容易地写出低耦合的并且能够并发执行的代码,这样开发人员就更能集中精力地为用户提供更多的业务功能而不是花费时间在优化并行化代码之上。
当然Spark也和当年的MapRece一样不是万灵药,比如对实时性要求很高的流数据处理上Apache Storm还是被作为主流选择, 因为Spark Streaming实际上是microbatch(将一个流数据按时间片切成batch,每个batch提交一个job)而不是事件触发实时系统,所以虽然支持者们认为microbatch在系统延时性上贡献并不多,但在生产环境中和Apache Storm相比还不是特别能满足对低延时要求很高的应用场景。
比如在实践过程中, 如果统计每条消息的平均处理时间,很容易达到毫秒级别,但一旦统计类似service assurance(确保某条消息在毫秒基本能被处理完成)的指标, 系统的瓶颈有时还是不能避免。
但同时我们不能不注意到,在许多用例当中,与流数据的交互以及和静态数据集的结合是很有必要的, 例如我们需要在静态数据集上进行分类器的模型计算,并在已有分类器模型的基础上,对实时进入系统的流数据进行交互计算来判定类别。
由于Spark的系统设计对各类工作(批处理、流处理以及交互式工作)进行了一个共有抽象,并且生态圈内延伸出了许多丰富的库(MLlib机器学习库、SQL语言API、GraphX), 使得用户可以在每一批流数据上进行灵活的Spark相关操作,在开发上提供了许多便利。
Spark的成熟使得Hadoop生态圈在短短一年之间发生了翻天覆地的变化, Cloudera和Hortonworks纷纷加入了Spark阵营,而Hadoop项目群中除了Yarn之外已经没有项目是必须的了(虽然Mesos已在一些场合替代了Yarn), 因为就连HDFS,Spark都可以不依赖。但很多时候我们仍然需要像Impala这样的依赖分布式文件系统的MPP解决方案并利用Hive管理文件到表的映射,因此Hadoop传统生态圈依然有很强的生命力。
另外在这里简要对比一下交互式分析任务中各类SQL on Hadoop框架,因为这也是我们在实际项目实施中经常遇到的问题。我们主要将注意力集中在Spark SQL, Impala和Hive on Tez上, 其中Spark SQL是三者之中历史最短的,论文发表在15年的SIGMOD会议上, 原文对比了数据仓库上不同类型的查询在Shark(Spark最早对SQL接口提供的支持)、Spark SQL和Impala上的性能比较。
也就是说, 虽然Spark SQL在Shark的基础上利用Catalyst optimizer在代码生成上做了很多优化,但总体性能还是比不上Impala, 尤其是当做join操作的时候, Impala可以利用“predicate pushdown”更早对表进行选择操作从而提高性能。
不过Spark SQL的Catalyst optimizer一直在持续优化中,相信未来会有更多更好的进展。Cloudera的Benchmark评测中Impala一直比其他SQL on Hadoop框架性能更加优越,但同时Hortonworks评测则指出虽然单个数据仓库查询Impala可以在很短的时间内完成,但是一旦并发多个查询Hive on Tez的优势就展示出来。另外Hive on Tez在SQL表达能力也要比Impala更强(主要是因为Impala的嵌套存储模型导致的), 因此根据不同的场景选取不同的解决方案是很有必要的。
图 3
各领风骚抑或代有才人出?
近一年比较吸引人眼球的Apache Flink(与Spark一样已有5年历史,前身已经是柏林理工大学一个研究性项目,被其拥趸推崇为继MapRece, Yarn,Spark之后第四代大数据分析处理框架)。 与Spark相反,Flink是一个真正的实时流数据处理系统,它将批处理看作是流数据的特例,同Spark一样它也在尝试建立一个统一的平台运行批量,流数据,交互式作业以及机器学习,图算法等应用。
Flink有一些设计思路是明显区别于Spark的,一个典型的例子是内存管理,Flink从一开始就坚持自己精确的控制内存使用并且直接操作二进制数据,而Spark一直到1.5版本都还是试用java的内存管理来做数据缓存,这也导致了Spark很容易遭受OOM以及JVM GC带来的性能损失。
但是从另外一个角度来说, Spark中的RDD在运行时被存成java objects的设计模式也大大降低了用户编程设计门槛, 同时随着Tungsten项目的引入,Spark现在也逐渐转向自身的内存管理, 具体表现为Spark生态圈内从传统的围绕RDD(分布式java对象集合)为核心的开发逐渐转向以DataFrame(分布式行对象集合)为核心。
总的来说,这两个生态圈目前都在互相学习,Flink的设计基因更为超前一些,但Spark社区活跃度大很多,发展到目前毫无疑问是更为成熟的选择,比如对数据源的支持(HBase, Cassandra, Parquet, JSON, ORC)更为丰富以及更为统一简洁的计算表示。另一方面,Apache Flink作为一个由欧洲大陆发起的项目,目前已经拥有来自北美、欧洲以及亚洲的许多贡献者,这是否能够一改欧洲在开源世界中一贯的被动角色,我们将在未来拭目以待。
2
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的缺点,提供了一个存储中间层使得用户或者应用程序可以随机读写数据。
具体来说,HBase的更新和删除操作实际上是先发生在内存MemStore中, 当MemStore满了以后会Flush到StoreFile, 之后当StoreFile文件数量增长到一定阈值后会触发Compact合并操作,因此HBase的更新操作其实是不断追加的操作,而最终所有更新和删除数据的持久化操作都是在之后Compact过程中进行的。
这使得应用程序在向内存MemStore写入数据后,所做的修改马上就能得到反映,用户读到的数据绝不会是陈旧的数据,保证了I/O高性能和数据完全一致性; 另一方面来说, HBase基于Hadoop生态系统的基因就已经决定了他自身的高度可扩展性、容错性。
在数据模型上,Cassandra和HBase类似实现了一个key-value提供面向列式存储服务,其系统设计参考了 Amazon Dynamo (发表于2007年) 分布式哈希(DHT)的P2P结构(实际上大部分Cassandra的初始工作都是由两位从Amazon的Dynamo组跳槽到Facebook的工程师完成),同样具有很高的可扩展性和容错性等特点。
除此之外, 相对HBase的主从结构,Cassandra去中心化的P2P结构能够更简单地部署和维护,比如增加一台机器只需告知Cassandra系统新节点在哪,剩下的交给系统完成就行了。同时,Cassandra对多数据中心的支持也更好,如果需要在多个数据中心进行数据迁移Cassandra会是一个更优的选择。
Eric Brewer教授提出的经典CAP理论认为任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。实际分布式系统的设计过程往往都是在一致性与可用性上进行取舍,相比于HBase数据完全一致性的系统设计,Cassandra选择了在优先考虑数据可用性的基础上让用户自己根据应用程序需求决定系统一致性级别。
比如:用户可以配置QUONUM参数来决定系统需要几个节点返回数据才能向客户端做出响应,ONE指只要有一个节点返回数据就可以对客户端做出响应,ALL指等于数据复制份数的所有节点都返回结果才能向客户端做出响应,对于数据一致性要求不是特别高的可以选择ONE,它是最快的一种方式。
从基因和发展历史上来说,HBase更适合用做数据仓库和大规模数据处理与分析(比如对网页数据建立索引), 而Cassandra则更适合用作实时事务和交互式查询服务。Cassandra在国外市场占有比例和发展要远比国内红火, 在不少权威测评网站上排名都已经超过了HBase。目前Apache Cassandra的商业化版本主要由软件公司DataStax进行开发和销售推广。另外还有一些NoSQL分布式数据库如Riak, CouchDB也都在各自支持的厂商推动下取得了不错的发展。
虽然我们也考虑到了HBase在实际应用中的不便之处比如对二级索引的支持程度不够(只支持通过单个行键访问,通过行键的范围查询,全表扫描),不过在明略的大数据基础平台上,目前整合的是依然是HBase。
理由也很简单,HBase出身就与Hadoop的生态系统紧密集成,其能够很容易与其他SQL on Hadoop框架(Cloudera Impala, Apache Phoenix, or Hive on Tez)进行整合,而不需要重新部署一套分布式数据库系统,而且可以很方便地将同样的数据内容在同一个生态系统中根据不同框架需要来变换存储格式(比如存储成Hive表或者Parquet格式)。
我们在很多项目中都有需要用到多种SQL on Hadoop框架,来应对不同应用场景的情况,也体会到了在同一生态系统下部署多种框架的简便性。 但同时我们也遇到了一些问题, 因为HBase项目本身与HDFS和Zookeeper系统分别是由不同开源团队进行维护的,所以在系统整合时我们需要先对HBase所依赖的其他模块进行设置再对HBase进行配置,在一定程度上降低了系统维护的友好性。
目前我们也已经在考虑将Cassandra应用到一些新的客户项目中,因为很多企业级的应用都需要将线上线下数据库进行分离,HBase更适合存储离线处理的结果和数据仓库,而更适合用作实时事务和并发交互性能更好的Cassandra作为线上服务数据库会是一种很好的选择。
3
大数据安全篇
随着越来越多各式各样的数据被存储在大数据系统中,任何对企业级数据的破坏都是灾难性的,从侵犯隐私到监管违规,甚至会造成公司品牌的破坏并最终影响到股东收益。给大数据系统提供全面且有效的安全解决方案的需求已经十分迫切:
大数据系统存储着许多重要且敏感的数据,这些数据是企业长久以来的财富
与大数据系统互动的外部系统是动态变化的,这会给系统引入新的安全隐患
在一个企业的内部,不同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的大数据平台我们是能够构建一个集中、一致、全面且有效的安全解决方案。
我市再ITjob管网上面找的
8. 搭建大数据平台的具体步骤是什么
1、操作体系的挑选
操作体系一般使用开源版的RedHat、Centos或许Debian作为底层的构建渠道,要根据大数据渠道所要建立的数据剖析东西能够支撑的体系,正确的挑选操作体系的版本。
2、建立Hadoop集群
Hadoop作为一个开发和运行处理大规模数据的软件渠道,实现了在大量的廉价计算机组成的集群中对海量数据进行分布式计算。Hadoop结构中最核心的规划是HDFS和MapRece,HDFS是一个高度容错性的体系,合适布置在廉价的机器上,能够供给高吞吐量的数据访问,适用于那些有着超大数据集的应用程序;MapRece是一套能够从海量的数据中提取数据最终回来成果集的编程模型。在生产实践应用中,Hadoop非常合适应用于大数据存储和大数据的剖析应用,合适服务于几千台到几万台大的服务器的集群运行,支撑PB级别的存储容量。
3、挑选数据接入和预处理东西
面临各种来源的数据,数据接入便是将这些零散的数据整合在一起,归纳起来进行剖析。数据接入首要包括文件日志的接入、数据库日志的接入、关系型数据库的接入和应用程序等的接入,数据接入常用的东西有Flume,Logstash,NDC(网易数据运河体系),sqoop等。
4、数据存储
除了Hadoop中已广泛应用于数据存储的HDFS,常用的还有分布式、面向列的开源数据库Hbase,HBase是一种key/value体系,布置在HDFS上,与Hadoop一样,HBase的目标首要是依靠横向扩展,通过不断的添加廉价的商用服务器,添加计算和存储才能。同时hadoop的资源管理器Yarn,能够为上层应用供给统一的资源管理和调度,为集群在利用率、资源统一等方面带来巨大的优点。
5、挑选数据挖掘东西
Hive能够将结构化的数据映射为一张数据库表,并供给HQL的查询功能,它是建立在Hadoop之上的数据仓库根底架构,是为了削减MapRece编写工作的批处理体系,它的出现能够让那些通晓SQL技术、可是不熟悉MapRece、编程才能较弱和不擅长Java的用户能够在HDFS大规模数据集上很好的利用SQL言语查询、汇总、剖析数据。
6、数据的可视化以及输出API
关于处理得到的数据能够对接主流的BI体系,比如国外的Tableau、Qlikview、PowrerBI等,国内的SmallBI和新兴的网易有数(可免费试用)等,将成果进行可视化,用于决策剖析;或许回流到线上,支撑线上业务的开展。
9. 怎么搭建大数据分析平台
一般的大数据平台从平台搭建到数据分析大概包括以下几个步骤:
Linux系统安装。分布式计算平台或组件安装,当前分布式系统的竖拦大多使用的是Hadoop系列开源系统。数据导入。数据分析。一般包括两个阶段:数据预处理和数据建模分析。数据预处理是为后面的建模分析做准备,主要工作时从海量数据中提取可用特征,建立大宽表。数据庆纤敏誉枝建模分析是针对预处理提取的特征或数据建模,得到想要的结果。结果可视化及输出API。可视化一般式对结果或部分原始数据做展示。一般有两种情况,行数据展示,和列查找展示。