中企动力 > 商学院 > 大数据分析与大数据开发
  • ?

    大数据引擎和大数据分析系统

    伊萨贝拉

    展开

    在惠普“超越存储 远见未来”2015存储远见者高峰论坛上,惠普就给出了他们的答案。对于如何定义未来存储,惠普也给出了“超越闪存、超越融合、超越架构、超越虚拟化、超越性能、超越扩展”这六大超越理念。在会上,惠普还发布了HP 3PAR StoreServ全闪存阵列,并逐一为大家展示了全新产品在这六大超越中的表现。

    “现在传统的网络安全防护的体系已经崩溃,攻防对抗当中防护的模式也已经过时,未知的威胁可以绕过现有部署的一切安全设备切入到我们的系统。360的安全解决之道就是用大数据,用数据来提供安全,这是一个全新的技术安全体系。这里边包括了大数据中心、。”大数据引擎和大数据分析系统

    普元资深架构师顾伟指出,”微服务“是一种更灵活、更可靠、更开放的架构,它的特点集中在开放、轻量、松耦合、易迁移、易伸缩、容错性、自监控、语言中性等。”微服务“的“零散”特征使得企业能够快速应对服务扩容、业务开放、业务变化、服务整合等需求。“微服务”通常的解决方案会结合当下比较流行的Docker和OpenStack技术。而支撑“微服务”的就是能够快速迭代“微应用”,在“微应用”之下是一个以各种技术标准、进行兼容和统一为基础、并提供多类型的业务平台。

  • ?

    大数据分析下的小程序应用该如何选择和开发?

    Koge

    展开

    我们目前通过大数据监测到很多人在关心百度小程序和小程序,整个市场容易用的选择,以及还提到了今日头条的小程序。就目前我们所看到的小程序市场和趋势来讲,未来小程序必然成为整个应用市场中比较主流的一种做法。它的便利性,便捷性和可控制性,以及互动性强的这些优势,会逐步应用到所有的程序应用当中去。实际上这是整个互联网技术进一步向前发展和进一步拓展的一个风向标。从最早的静态html语言到h5,实现了自由拖拽和自适应强的一个过程。同样的小程序通过在腾讯,微信相关的应用当中,得出一个总结性的经验,就是他的日活和他的便捷性逐步得到大众的认可。那么在如此汹涌的一个市场爆发的前景下,我们该如何去选择和开发呢??

    实际上在我们看来,无论是百度小程序还是今日头条的小程序,我们都独立的分析和看一看他们的布局和他们的想法。实际上对于百度小程序来讲,目前我们从入口和审核的过程中可以看得出,他们只是在尝试而已。就像当年百度的电商平台一样,是紧随潮流和跟随这个时代发展中针对这个风口的一个浪潮而已。,因为百度在小程序开放的过程中依然要使用,邀请码以及非常执着的审核入口。我们也从后续的开发文档中可以看得出来,她实际上布局和,用途和微信小程序是差不多的。但是百度如此做,只是相当于在移动互联网或移动布局上面,增加一些新的活力和一些元素。百度擅长于搜索引擎这一块,因此在未来的搜索引擎中添加小程序的这个元素是必然可能的一个风向。但是目前来讲我们知道,百度的小程序需要依托在百度APP上去使用,那么APP使用的用户到底有多少呢?只有百度自己才知道。是百度的小程序,背后所占领的流量,是百度小程序最大的依托和靠山。

    那就目前来讲,肯定作为今日头条来讲,它是未来可能要去放大的一个过程,而是未来如何将这些小程序分布,或者将它扩散到其他几个应用当中去,也是目前他们应该也在考虑的问题。但实际上来讲,小程序作为一种依附性的产品,也就是他必须要找到互补,必须要有一个主体的产品,给予他去依附才能够正常的使用。在今日头条疯狂的征服过程中,他们现在做的最大的一件事情和最多的一件事情就是将流量变现。但是如果他们的开发部门能够将,这个小程序落为他们未来开放过程中必经之路的话,那么,未来也是比较有前景的。最起码现在所有的互联网风向标都指向未来的移动互联网。

    实际上所谓的小程序总结出来,他们有一个非常好的一个优势,就是在于它是一个轻量级的应用。什么叫轻量级的应用呢?就是它本身的体积比较小,功能比较多,谁用的属于泼妇式的瀑布流加载模式,去通过实时获取一些数据而来展现。他相比之下的话,和JAVA开发的程序比较相像,它是通过实施更新和后台注入的形式,在固定的框架上去表现这些,主要表现的内容。 那从目前国内的环境来讲,5G布局还是对小程序或者智能,模块研究的,进一步发展的话,都是为了在移动市场的布局,或者是未来的,应该是指向于移动互联网这一块。

    所以作为科技巨头或者传媒系或者是作为互联网应用科技公司的,他们都会去考虑,进入到这个领域当中去,因为要为未来布局,要为未来去做打算,这个谁也说不清楚的事情,万一在未来这个东西模糊,而成为一个公司的救命稻草,也是极为有可能的。所以我们关注的不是哪一家好用,而是作为用户来讲我们都可以用,因为我们选择的余地要比他们本身要选择的余地多得多。所以我们要用好它们,而不是去比较他们,因为你比较出来,你也并不能改变他们。

  • ?

    人工智能与大数据开发需要注意什么?

    控恋

    展开

    人工智能与大数据,越来越受瞩目,那在开发过程中,我们需要注意些什么?

    一、你的数据未必可靠

    在我们实际应用中,并不能确保我们的数据是完全可靠的。通常,都会出现各种各样的原因会来导致数据不可靠的因素:

    1、用于开发的数据,会与实际情况下的数据分布有所差异。

    2、你的数据集中会存在很多缺失的数据。事实上,除非是人为构造的数据集合,否则很难避免缺失数据问题的发生,如何处理数据缺失的问题是很有技巧的事情。实践中我们要么是干脆丢弃一部分残缺的数据,要么就是想办法计算一些数值去填补这些缺失值。无论哪种方法都可能导致应用结果的不稳定。

    3、数据随时在变,数据库的表结构可能会变,数据定义也是可能会改变的。

    4、你的数据或许没有被归一化。假设你可能在观察一组用户的体重,为了能够获得有效的结论,首先需要对每个体重的衡量单位进行归一化,是英镑还是公斤,不能混淆着用

    5、你的数据可能并不适用于相应的算法。数据存在着各种各样的形式和规范,或者叫数据类型(data types),有些是数值化的数据,有些则不是。有些数据集合能被有序排列,有些则做不到。有些是离散化的数据(例如房间里的人数),另一些则是连续化的(例如气温或者气压等数据)

    二、计算难以瞬间完成

    完成任一人工解决方案的计算,都是需要一定的时间,也就是说方案的响应速度,对商业应用的成功起到了十分关键的作用。所以,不要天真的以为任何算法在所有数据集上都可以在规定时间内完成。

    以搜索引擎为例,用户对结果返回的时长是有忍耐的限度的。如果用户等待的时间超过10秒,50%的用户会流失,如果等待时间超过1分钟,90%以上的用户会流失。在开发智能应用系统时,不能为了达到更好的算法精度而忽略系统运算和等待的时间,否则会导致整个产品的失败。

    三、 数据的规模非常重要

    当我们考虑智能应用时,数据规模是很重要的因素。数据规模的影响可以分为两点来考察:第一点是规模会影响应用系统的响应速度;第二点是在很大的数据集上的挖掘出有价值结果的能力会受到考验。

    其次,使用更多的数据来训练的简单算法,比受制于维度诅咒(Dimension Curse)的复杂算法往往有好得多的效果。类似Google这样拥有海量数据的大型企业,优秀的应用效果不仅来自于精妙复杂的算法,也来自于其对海量训练数据的大规模分析挖掘。(达观数据 陈运文)

    四、 不同的算法具有不同的扩展能力

    我们不能假设智能应用系统都可以通过简单增加服务器的方法来扩展性能。有些算法是有扩展性的,而另一些则不行。

    例如如果我们要从数亿的文章标题里,找出标题相似的各个组的文章,注意并不是所有的聚类算法此时都能并行化运行的,你应该在设计系统的同时就考虑可扩展性。有些情况下你需要将数据切分成较小的集合,并能够让智能算法在各个集合上并行运行。设计系统时所选择的算法,往往需要有并行化的版本,而在一开始就需要将其纳入考虑,因为通常围绕着算法还会有很多相关联的商业逻辑和体系结构需要一并考虑。

    五、并不存在万能的方法

    你可能听说过一句谚语“当你有了把榔头的时候,看什么东西都像钉子”,这里想表达的意思是:并不存在能够解决所有智能应用问题的万能算法。

    智能应用软件和其他所有软件类似——具有其特定的应用领域和局限性。当面对新的应用领域时,一定要充分的验证原有方法的可行性,而且你最好能尝试用全新的视角来考察问题,因为不同的算法在解决特定的问题时才会更有效和得当(达观数据 陈运文)。

    六、数据并不是万能的

    就说机器学习,它也是需要从训练开始的,然后再逐步延伸到未知数据中。

    例如若你已经对数据的分布规律有所了解,那么通过图模型来表达这些先验的知识会非常有效。除了数据以外,你还需要仔细的考虑,该领域有哪些先验知识可以应用,这对开发一个更有效的分类器会很有帮助。数据和行业经验结合往往能事半功倍。

    七、模型训练的时间差异很大

    在特定应用中,可能某些参数的微小变化就会让模型的训练时间出现很大的差异。例如在深度神经网络训练时就会有各种各样的参数调节的情况发生。

    人们往往会直观地觉得调整参数时,训练时间是基本稳定不变的。例如假设有个系统是计算地球平面上任意两点之间的距离的,那么任意给出两个点的坐标时,计算时间差不多都是相同的。但在另一些系统里却并非如此,有时细微的调整会带来很明显的时间差异,有时差异甚至可以大到数小时,而不是数秒。

    八、泛化能力是目标

    机器学习实践中最普遍存在的一个误区是陷入处理细节中而忘了最初的目标——通过调查来获得处理问题的普适的方法。

    测试阶段是验证某个方法是否具备泛化能力(generalization ability)的关键环节(通过交叉验证、外部数据验证等方法),但是寻找合适的验证数据集不容易。如果在一个只有几百个样本的集合上去训练有数百万维特征的模型,试图想获得优秀的精度是很荒唐的。

    九、人类的直觉未必准确

    在特征空间膨胀的时候,输入信息间形成的组合关系会快速增加,这让人很难像对中等数据集合那样能够对其中一部分数据进行抽样观察。更麻烦的是,特征数量增加时人类对数据的直觉会迅速降低。

    例如在高维空间里,多元高斯分布并不是沿着均值分布,而是像一个扇贝形状围绕在均值附近,这和人们的主观感受完全不同。在低维空间中建立一个分类器并不难,但是当维度增加时,人类就很难直观的理解了。

    十、要考虑融入更多新特征

    你很可能听说过谚语“进来的是垃圾,出去的也是垃圾”(garbage in, garbage out),在建立机器学习应用中这一点尤其重要。为了避免挖掘的效果失控,关键是要充分掌握问题所在的领域,通过调查数据来生成各种各样的特征,这样的做法会对提升分类的准确率和泛化能力有很大的帮助。仅靠把数据扔进分类器就想获得优秀结果的幻想是不可能实现的。

    十一、要学习各种不同的模型

    模型的组合(Ensemble)技术正变得越来越流行了,因为组合方法,仅需要付出少许偏见(bias)的代价,就能大大的减少算法的不确定性。在著名的Netflix算法竞赛中,冠军队以及成绩优异队伍们全都使用了组合模型方法,把超过100个模型合并在一起(在模型上叠加高层的模型形成组合)以提升效果。在人工智能用于实际应用时,从业者普遍都认为,未来的算法一定时会通过模型组合的方法来获得更好精度,但是这也会抬高非专业人员理解系统机制的门槛。

    十二、相关关系不等同于因果关系

    这一点值得反复强调,我们可以通过一句调侃的话来解释:“地球变暖、地震、龙卷风,以及其他自然灾害,都和18世纪以来全球海盗数量的减少有直接关系”。这两个变量的变化有相关性,但是并不能说存在因果关系,因为往往存在第三类(甚至第4、5类)未被观察到的变量在起作用。相关关系应该看作是潜在的因果关系的一定程度的体现,但需要进一步研究。

  • ?

    什么叫大数据分析

    睡猫

    展开

    大数据行业发展如火如荼,国家政策利好,互联网大佬纷纷在大数据行业布局,我们想让自己的职业生涯在一个朝阳行业发展,肯定又要学习相关技术,让自己与时俱进,但是难就难在大数据是一个新兴事物,目前我国大学的专业里面还鲜少有这个专业,国家刚批的大数据专业,全国目前35个高校,但是从17年开始招生,2021年才有第一批毕业生进入职场,在四年期间,是大数据行业发展的飞速时期,没有行业发展是等着人才进入的,而是需要要虚位以待、蓄势待发,所以在没有高等教育准备好的大数据教育,如何高效的学习大数据,如何快速的与行业发展想契合,那么需要我们成为第一个吃螃蟹的人,作为一个随着大数据行业成长的职业人,首先要知道大数据是个啥?

    大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    那来帮大家分析下:如何高效的学习大数据。

    经常有初学者会问,自己想往大数据方向发展,该学哪些技术,学习路线是什么样的,觉得大数据很火,就业很好,薪资很高……首先,如果你确定了想往这个方面发展,先考虑自己的过去从业经历、专业、兴趣是什么。计算机专业——操作系统、硬件、网络、服务器?软件专业——软件开发、编程、写代码?还是数学、统计学专业——对数据和数字特别感兴趣?

    那么你能找师傅带吗?

    但凡有这种想法的人,或多或少都会存有侥幸之心,或者叫做“天真,单纯”。希望不花一分钱,就能更快速的学到更优质,更实用的技能。

    关于这一点,我只想反问一句你:“如果你是大师,你凭什么愿意带我?”

    其实这就是想告诉你大数据的三个发展方向,平台搭建/优化/运维/监控、大数据开发/设计/架构、数据分析/挖掘。

    先说一下大数据的4V特征:

    数据量大,TB->PB

    数据类型繁多,结构化、非结构化文本、日志、视频、图片、地理位置等;

    商业价值高,但是这种价值需要在海量数据之上,通过数据分析与机器学习更快速的挖掘出来;

    处理时效性高,海量数据的处理需求不再局限在离线计算当中。

    现如今,正式为了应对大数据的这几个特点,开源的大数据框架越来越多,越来越强,先列举一些常见的:

    文件存储:Hadoop HDFS、Tachyon、KFS

    离线计算:Hadoop MapReduce、Spark

    流式、实时计算:Storm、Spark Streaming、S4、Heron

    K-V、NOSQL数据库:HBase、Redis、MongoDB

    资源管理:YARN、Mesos

    日志收集:Flume、Scribe、Logstash、Kibana

    消息系统:Kafka、StormMQ、ZeroMQ、RabbitMQ

    查询分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid

    分布式协调服务:Zookeeper

    集群管理与监控:Ambari、Ganglia、Nagios、Cloudera Manager

    数据挖掘、机器学习:Mahout、Spark MLLib

    数据同步:Sqoop

    任务调度:Oozie

    ······

    第一步:初识Hadoop

    1.1 学会百度与Google

    不论遇到什么问题,先试试搜索并自己解决。

    Google首选,翻不过去的,就用百度吧。

    1.2 参考资料首选官方文档

    特别是对于入门来说,官方文档永远是首选文档。

    相信搞这块的大多是文化人,英文凑合就行,实在看不下去的,请参考第一步。

    1.3 先让Hadoop跑起来

    Hadoop可以算是大数据存储和计算的开山鼻祖,现在大多开源的大数据框架都依赖Hadoop或者与它能很好的兼容。

    关于Hadoop,你至少需要搞清楚以下是什么:

    · Hadoop 1.0、Hadoop 2.0

    · MapReduce、HDFS

    · NameNode、DataNode

    · JobTracker、TaskTracker

    · Yarn、ResourceManager、NodeManager

    自己搭建Hadoop,请使用第一步和第二步,能让它跑起来就行。

    建议先使用安装包命令行安装,不要使用管理工具安装。

    另外:Hadoop1.0知道它就行了,现在都用Hadoop 2.0.

    1.4 尝试使用Hadoop

    · HDFS目录操作命令;

    · 上传、下载文件命令;

    · 提交运行MapReduce示例程序;

    · 打开Hadoop WEB界面,查看Job运行状态,查看Job运行日志。

    · 知道Hadoop的系统日志在哪里。

    1.5了解它们的原理

    MapReduce:如何分而治之;

    HDFS:数据到底在哪里,什么是副本;

    Yarn到底是什么,它能干什么;

    NameNode到底在干些什么;

    ResourceManager到底在干些什么;

    1.6 自己写一个MapReduce程序

    仿照WordCount例子,自己写一个(照抄也行)WordCount程序,

    打包并提交到Hadoop运行。

    不会Java的话,Shell、Python都可以,有个东西叫Hadoop Streaming。

    如果能认真完成了以上几步,恭喜你,你的一只脚已经进来了。

    第二步:更高效的WordCount

    2.1 学点SQL吧

    如果不懂数据库的童鞋先学习使用SQL句。

    2.2 SQL版WordCount

    在1.6中,你写(或者抄)的WordCount一共有几行代码?

    如果用SQL的话:

    SELECT word,COUNT(1) FROM wordcount GROUP BY word;

    这便是SQL的魅力,编程需要几十行,甚至上百行代码,SQL一句就搞定;使用SQL处理分析Hadoop上的数据,方便、高效、易上手、更是趋势。不论是离线计算还是实时计算,越来越多的大数据处理框架都在积极提供SQL接口。

    2.3 安装配置Hive

    Hive算是数据仓库工具,安装不难,网上有很多教程,配置完成后,可以正常进入Hive命令行。

    2.4 试试使用Hive

    尝试在Hive中创建wordcount表,并运行2.2中的SQL语句。在Hadoop WEB界面中找到刚才运行的SQL任务。看SQL查询结果是否和1.4中MapReduce中的结果一致。

    明明写的是SQL,为什么Hadoop WEB界面中看到的是MapReduce任务?

    2.5 学会Hive的基本命令

    创建、删除表;加载数据到表;下载Hive表的数据;并学习更多关于Hive的语法和命令。

    0和Hadoop2.0的区别

    MapReduce的原理(还是那个经典的题目,一个10G大小的文件,给定1G大小的内存,如何使用Java程序统计出现次数最多的10个单词及次数);

    HDFS读写数据的流程;向HDFS中PUT数据;从HDFS中下载数据;

    自己会写简单的MapReduce程序,运行出现问题,知道在哪里查看日志;

    会写简单的SELECT、WHERE、GROUP BY等SQL语句;

    Hive SQL转换成MapReduce的大致流程;

    Hive中常见的语句:创建表、删除表、往表中加载数据、分区、将表中数据下载到本地;

    从上面的学习,你已经了解到,HDFS是Hadoop提供的分布式存储框架,它可以用来存储海量数据,MapReduce是Hadoop提供的分布式计算框架,它可以用来统计和分析HDFS上的海量数据,而Hive则是SQL On Hadoop,Hive提供了SQL接口,开发人员只需要编写简单易上手的SQL语句,Hive负责把SQL翻译成MapReduce,提交运行。

    第三步:把别处的数据搞到Hadoop上

    此处也可以叫做数据采集,把各个数据源的数据采集到Hadoop上。

    3.1 HDFS PUT命令

    put命令在实际环境中也比较常用,通常配合shell、python等脚本语言来使用。建议需熟练掌握。

    3.2 HDFS API

    HDFS提供了写数据的API,自己用编程语言将数据写入HDFS,put命令本身也是使用API。

    实际环境中一般自己较少编写程序使用API来写数据到HDFS,通常都是使用其他框架封装好的方法。比如:Hive中的INSERT语句,Spark中的saveAsTextfile等。

    可以尝试了解原理,试着写几个Demo。

    3.3 Sqoop

    Sqoop是一个主要用于Hadoop/Hive与传统关系型数据库Oracle/MySQL/SQLServer等之间进行数据交换的开源框架。

    就像Hive把SQL翻译成MapReduce一样,Sqoop把你指定的参数翻译成MapReduce,提交到Hadoop运行,完成Hadoop与其他数据库之间的数据交换。

    自己下载和配置Sqoop(建议先使用Sqoop1,Sqoop2比较复杂)。

    了解Sqoop常用的配置参数和方法。

    使用Sqoop完成从MySQL同步数据到HDFS;

    使用Sqoop完成从MySQL同步数据到Hive表;

    PS:如果后续选型确定使用Sqoop作为数据交换工具,那么建议熟练掌握,否则,了解和会用Demo即可。

    3.4 Flume

    Flume是一个分布式的海量日志采集和传输框架,因为“采集和传输框架”,所以它并不适合关系型数据库的数据采集和传输。Flume可以实时的从网络协议、消息系统、文件系统采集日志,并传输到HDFS上。因此,如果你的业务有这些数据源的数据,并且需要实时的采集,那么就应该考虑使用Flume。

    下载和配置Flume。使用Flume监控一个不断追加数据的文件,并将数据传输到HDFS;

    PS:Flume的配置和使用较为复杂,如果你没有足够的兴趣和耐心,可以先跳过Flume。

    3.5 阿里开源的DataX

    之所以介绍这个,是因为以前某公司客户目前使用的Hadoop与关系型数据库数据交换的工具,就是之前基于DataX开发的,个人感觉非常好用。现在DataX已经是3.0版本,支持很多数据源。你也可以在其之上做二次开发。

    PS:有兴趣的可以研究和使用一下,对比一下它与Sqoop。

    至此,你的“大数据平台”应该是这样的:

    第四步:把Hadoop上的数据搞到别处去

    前面介绍了如何把数据源的数据采集到Hadoop上,数据到Hadoop上之后,便可以使用Hive和MapReduce进行分析了。那么接下来的问题是,分析完的结果如何从Hadoop上同步到其他系统和应用中去呢?

    其实此处的方法和第三步基本一致的。

    4.1 HDFS GET命令

    把HDFS上的文件GET到本地。需要熟练掌握。

    4.2 HDFS API

    原理同3.2。

    4.3 Sqoop

    原理同3.3。

    使用Sqoop完成将HDFS上的文件同步到MySQL;

    使用Sqoop完成将Hive表中的数据同步到MySQL;

    4.4 DataX

    原理同3.4

    此时,“你的大数据平台”应该是这样的:

    走完第三步和第四步的流程,那么你应该已经具备以下技能和知识点:

    · 知道如何把已有的数据采集到HDFS上,包括离线采集和实时采集;

    · 知道sqoop(或者还有DataX)是HDFS和其他数据源之间的数据交换工具;

    · 知道flume可以用作实时的日志采集;

    至此,对于大数据平台,应该已经掌握如何搭建Hadoop集群,把数据采集到Hadoop上,使用Hive和MapReduce来分析数据,把分析结果同步到其他数据源。

    接下来的问题就是,Hive使用的越来越多,你会发现很多不愉快的地方,特别是速度慢,

    大多情况下,明明我的数据量很小,它都要申请资源,启动MapReduce来执行。

    第五步:快一点吧,我的SQL

    其实大家都已经发现Hive后台使用MapReduce作为执行引擎,实在是有点慢。因此SQL On Hadoop的框架越来越多,按我的了解,最常用的按照流行度依次为SparkSQL、Impala和Presto.这三种框架基于半内存或者全内存,提供了SQL接口来快速查询分析Hadoop上的数据。

    目前我们的方案使用的是SparkSQL,至于为什么用SparkSQL,原因大概如下:

    · 使用Spark还做了其他事情,不想引入过多的框架;

    · Impala对内存的需求太大,没有过多资源部署;

    5.1 关于Spark和SparkSQL

    什么是Spark,什么是SparkSQL。

    Spark有的核心概念及名词解释。

    SparkSQL和Spark是什么关系,SparkSQL和Hive是什么关系。

    5.2 如何部署和运行SparkSQL

    Spark有哪些部署模式?

    如何在Yarn上运行SparkSQL?

    使用SparkSQL查询Hive中的表。

    PS:Spark不是一门短时间内就能掌握的技术,因此建议在了解了Spark之后,可以先从SparkSQL入手,循序渐进。

    第六步:一夫多妻制

    其实我想说的是数据的一次采集、多次消费。

    在实际业务场景下,特别是对于一些监控日志,想即时的从日志中了解一些指标(关于实时计算,后面步节会有介绍),这时候,从HDFS上分析就太慢了,尽管是通过Flume采集的,但Flume也不能间隔很短就往HDFS上滚动文件,这样会导致小文件特别多。

    为了满足数据的一次采集、多次消费的需求,这里要说的便是Kafka。

    6.1 关于Kafka

    Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    6.2 如何部署和使用Kafka

    使用单机部署Kafka,并成功运行自带的生产者和消费者例子。

    使用Java程序自己编写并运行生产者和消费者程序。

    Flume和Kafka的集成,使用Flume监控日志,并将日志数据实时发送至Kafka。

    至此,“大数据平台”应该扩充成这样:

    这时,使用Flume采集的数据,不是直接到HDFS上,而是先到Kafka,Kafka中的数据可以由多个消费者同时消费,其中一个消费者,就是将数据同步到HDFS。

    总结:

    为什么Spark比MapReduce快。

    使用SparkSQL代替Hive,更快的运行SQL。

    使用Kafka完成数据的一次收集,多次消费架构。

    自己可以写程序完成Kafka的生产者和消费者。

    前面的学习已经掌握了大数据平台中的数据采集、数据存储和计算、数据交换等大部分技能,而这其中的每一步,都需要一个任务(程序)来完成,各个任务...

  • ?

    大数据集中处理会用到的编程语言有哪些?

    岑尔云

    展开

    随着互联网的高速发展,大数据的浪潮仍在继续,几乎渗透到了所有的行业。如今,数据处理不再无足轻重,并且对精密分析和强大又实时处理的需要变得前所未有的巨大。那么,在巨大的数据集中进行筛选的最好工具是什么?

    大数据信息处理语言

    通过和数据骇客的交流,小编了解了一些用于硬核数据分析最喜欢的语言和工具包。

    1、R语言

    在这些语言名单中,如果R语言排第二,那就没其他能排第一。自1997年以来,作为昂贵的统计软件,如Matlab和SAS的免费替代品,它渐渐风靡全球。

    在过去的几年时间中,R语言已经成为了数据科学的宠儿——数据科学现在不仅仅在书呆子一样的统计学家中人尽皆知,而且也为华尔街交易员,生物学家,和硅谷开发者所家喻户晓。各种行业的公司,例如Google,Facebook,美国银行,以及纽约时报都使用R语言,R语****在商业用途上持续蔓延和扩散。它被比喻为是Excel的一个极度活跃版本。

    R语言的日渐成熟,使得它成为了数据建模的首选语言,虽然当企业需要生产大型产品时它的能力会变得有限,也有的人说这是因为它的地位正在被其他语言篡夺。

    “R更适合于做一个草图和大概,而不是详细的构建”Michael Driscoll,Metamarkets的首席执行官说。“你不会在谷歌的网页排名以及Facebook的朋友推荐算法的核心找到R语言。工程师会用R语言做原型,然后移交给用Java或Python写的模型。”

    2、Rython

    如果说R语言是一个神经质又可爱的高手,那么Python是它随和又灵活的表兄弟。作为一种结合了R语言快速对复杂数据进行挖掘的能力并构建产品的更实用语言,Python迅速得到了主流的吸引力。

    Python是直观的,并且比R语言更易于学习,以及它的生态系统近年来急剧增长,使得它更能够用于先前为R语言保留的统计分析。

    在数据处理中,在规模和复杂性之间往往会有一个权衡,于是Python成为了一种折中方案。IPython notebook和NumPy可以用作轻便工作的一种暂存器,而Python可以作为中等规模数据处理的强大工具。丰富的数据社区,也是Python的优势,因为可以提供了大量的工具包和功能。

    不过,它并非最高性能的语言,只能偶尔用于大规模的核心基础设施,Driscoll这样说道。

    3、Julia

    虽然当前的数据科学绝大多数是通过R语言,Python,Java,MatLab和SAS执行的,但依然有其他的语言存活于夹缝中,Julia就是值得一看的后起之秀。

    业界普遍认为Julia过于晦涩难懂,但数据骇客在谈到它取代R和Python的潜力时会不由得眉飞色舞,Julia是一种高层次的,极度快速的表达性语言。它比R语言快,比Python更可扩展,且相当简单易学。使用Julia,你就能够办到任何用R和Python可以做到的事情。

    但是至今为止,年轻人对Julia依然犹豫不前,Julia数据社区还处于早期阶段,要能够和R语言和Python竞争,它还需要添加更多的软件包和工具。

    4、JAVA

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

    Java,以及基于Java的框架,被发现俨然成为了硅谷最大的那些高科技公司的骨骼支架。Java不能提供R和Python同样质量的可视化,并且它并非统计建模的最佳选择。但是,如果你移动到过去的原型制作并需要建立大型系统,那么Java往往是你的最佳选择。

    5、Hadoop和Hive

    一群基于Java的工具被开发出来以满足数据处理的巨大需求。

    Hadoop作为首选的基于Java的框架用于批处理数据已经点燃了大家的热情。Hadoop比其他一些处理工具慢,但它出奇的准确,因此被广泛用于后端分析。它和Hive——一个基于查询并且运行在顶部的框架可以很好地结对工作。

    6、Scala

    Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。

    Scala还包含了若干函数式语言的关键概念,包括高阶函数(Higher-Order Function)、局部套用(Currying)、嵌套函数(Nested Function)、序列解读(Sequence Comprehensions)等等。

    Scala是另一种基于Java的语言,并且和Java相同的是,它正日益成为大规模机器学习,或构建高层次算法的工具。它富有表现力,并且还能够构建健壮的系统。

    7、Kafka和Storm

    那么,当你需要快速实时的分析时又该怎么办呢?Kafka会成为你的好朋友。Kafka,诞生于LinkedIn内部,是一个超快速的查询消息系统。Kafka的缺点?好吧,它太快了。在实时操作时会导致自身出错,并且偶尔地会遗漏东西。

    Storm是用Scala编写的另一个框架,它在硅谷中因为流处理而受到了大量的青睐。它被Twitter纳入其中,勿庸置疑的,这样一来,Twitter就能在快速事件处理中得到巨大的裨益。

    8、MatLab

    MatLab一直以来长盛不衰,尽管它要价不菲,但它仍然被广泛使用在一些非常特殊的领域:研究密集型机器学习,信号处理,图像识别。

    MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

    MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

    MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

    9、Octave

    Octave是一种高层解释类编程语言,旨在解决线性和非线性的数值计算问题。Octave为GNU项目下的开源软件,早期版本为命令行交互方式,4.0.0版本发布基于QT编写的GUI交互界面。

    Octave语法与Matlab语法非常接近,可以很容易的将matlab程序移植到Octave,同时与C++,QT等接口较Matlab更加方便。

    Octave是一种科学计算软件,它提供了方便的互动命令列接口来解决线性与非线性的数值运算问题,并可将计算结果可视化,与高价的商业软体MATLAB语法几乎兼容。

    10、GO

    Go是一种编译型语言,它结合了解释型语言的游刃有余,动态类型语言的开发效率,以及静态类型的安全性。它也打算成为现代的,支持网络与多核计算的语言。要满足这些目标,需要解决一些语言上的问题:一个富有表达能力但轻量级的类型系统,并发与垃圾回收机制,严格的依赖规范等等。这些无法通过库或工具解决好,因此Go也就应运而生了。

    GO是另一个正在掀起浪潮的后起之秀。它由Google开发,从C语言松散地派生,并在构建健壮基础设施上,正在赢得竞争对手,例如Java和Python的份额。

  • ?

    大数据分析与数据分析的根本区别在哪里?

    诺登哈姆

    展开

    作者:CDA数据分析师

    大数据分析与数据分析这几年一直都是个高频词,很多人都开始纷纷转行到这个领域,也有不少人开始跃跃欲试,想找准时机进到大数据或数据分析领域。如今大数据分析和数据分析火爆,要说时机,可谓处处都是时机,关键要明了的一点是,大数据分析和数据分析两者的根本区别在哪里,只有真正了解了,才会知晓更加适合自己的领域是大数据分析师还是数据分析师。毕竟职场如战场,时间就是生活,不容儿戏,更不容怠慢。下面我来好好告诉大家两者的本质区别到底是什么!

    大数据分析:指无法在可承受的时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 中大数据分析指不用随机分析法(抽样调查)这样的捷径,而采用所有数据进行分析处理,因此不用考虑数据的分布状态(抽样数据是需要考虑样本分布是否有偏,是否与总体一致)也不用考虑假设检验,这点也是大数据分析与一般数据分析的一个区别。

    数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。

    大数据分析与数据分析最核心的区别是处理的数据规模不同,由此导致两个方向从业者的技能也是不同的。在CDA人才能力标准中从理论基础、软件工具、分析方法、业务分析、可视化五个方面对数据分析师与大数据分析师进行了定义。

    【数据分析师的要求】

    数据分析师的理论要求:统计学、概率论和数理统计、多元统计分析、时间序列、数据挖掘。

    工具要求:必要:Excel、SQL可选:SPSS MODELER、R、Python、SAS等

    分析方法要求:除掌握基本数据处理及分析方法以外,还应掌握高级数据分析及数据挖掘方法(多元线性回归法,贝叶斯,神经网络,决策树,聚类分析法,关联规则,时间序列,支持向量机,集成学习等)和可视化技术。

    业务分析能力:可以将业务目标转化为数据分析目标;熟悉常用算法和数据结构,熟悉企业数据库构架建设;针对不同分析主体,可以熟练的进行维度分析,能够从海量数据中搜集并提取信息;通过相关数据分析方法,结合一个或多个数据分析软件完成对海量数据的处理和分析。

    结果展现能力:报告体现数据挖掘的整体流程,层层阐述信息的收集、模型的构建、结果的验证和解读,对行业进行评估,优化和决策。

    【大数据分析师的要求】

    理论要求:统计学、概率论和数据库、数据挖掘、JAVA基础、Linux基础。

    工具要求:必要: SQL、Hadoop、HDFS、Mapreduce、Mahout、Hive、Spark可选:RHadoop、Hbase、ZooKeeper等

    分析方法要求:熟练掌握hadoop集群搭建;熟悉nosql数据库的原理及特征,并会运用在相关的场景;熟练运用mahout、spark提供的进行大数据分析的数据挖掘算法,包括聚类(kmeans算法、canopy算法)、分类(贝叶斯算法、随机森林算法)、主题推荐(基于物品的推荐、基于用户的推荐)等算法的原理和使用范围。

    业务分析能力:熟悉hadoop+hive+spark进行大数据分析的架构设计,并能针对不同的业务提出大数据架构的解决思路。掌握hadoop+hive+ Spark+tableau平台上Spark MLlib、SparkSQL的功能与应用场景,根据不同的数据业务需求选择合适的组件进行分析与处理。并对基于Spark框架提出的模型进行对比分析与完善。

    结果展现能力:报告能体现大数据分析的优势,能清楚地阐述数据采集、大数据处理过程及最终结果的解读,同时提出模型的优化和改进之处,以利于提升大数据分析的商业价值。

    综上大数据分析与数据分析的根本区别就是分析的思维与分析所用的工具不同。大家在求职或转行过程认清自己对两者的偏好和自己的兴趣所在,以及自己的能力更适合在哪个领域发挥,还有自己所在城市对两者的职业需求,综合天时地利人和三个条件,我们才能做出更理智更客观更科学的抉择。

  • ?

    大数据分析:最难的不是分析,而是大数据

    徐若翠

    展开

    从先进的BI工具到机器学习,人工智能,现代企业拥有着各式各样整理分析数据的方法和途径。数据科学家和企业领导人都关注着这些新技术的巨大潜力,然而,当我们将焦点放在分析工具身上时,我们也可能忽略了数据本身的重要性。毕竟如果没有正确的数据,视觉化和预测分析也没有任何用处。

    每一个企业需要将他们的基础数据进行分析和甄别,在此基础上,对数据进行不同层次和结构的分类。原因如下:

    数据深度融入在商业的各个环节

    现代企业逐渐意识到,纷繁复杂的数据固然重要,而这些数据是否真的被企业职工运用,并对其工作产生了相关性的影响,才是企业领导所看重的。不同的层级岗位和职位角色都需要做出正确的决策,而良好的决策必须是基于用户数据所提出的。因此,不仅仅是数据科学团队,从产品部门到客户服务部门,再到销售等各个部门都应该获得这些数据资源和信息。

    在现代企业中,对数据的处理还仅仅是在每个月的全体会议上查看各项指标还远远不够。组织必须要将数据驱动纳入到决策制定中。以现代营销团队为例。营销人员有大量的丰富的数据可供他们自由支配,尤其是在智能手机,平板电脑,社交媒体平台爆炸式普及的今天,这样,一个品牌可以远距离地与观众互动,并了解顾客的相关信息。如果所有的这些数据被收集到一个中心位置,进行数据分析,那么对客户的长期行为分析并进行消费预判则成为了可能。同样地,根据这样的方法,其他部门,如销售、产品和客户服务部门也能获得前所未有的数据量。

    零碎数据共同形成宏观趋势判断

    如今,数据在各个行业和企业扮演着越来越重要的角色,企业应该将数据视为机会。每个数据集——CRM、CMS、ERP、营销软件,都包含大量信息和基础数据。现在或许看起来很微小,可是对数据深入的挖掘和分析将会给企业带来巨大的财富。而在现实生活当中,由于不可能预先知道哪些数据很重要,所以企业需要收集尽可能多的数据,这样即使市场环境发生大的改变,企业也能够做出合理的预判和尽可能贴近市场的决策。

    基础数据和数据分析同样重要

    数据质量是重中之重,倾斜的数据会导致错误的结果。如果你的判断来源于不完整的数据基础,你的决策便会产生一定的偏差甚至产生错误,而这最终将会侵蚀在数据驱动文化背景下人们对数据分析的信心。因此,简洁、完整和正确的数据是有效决策产生的必要前提。

    2016年美国总统大选的预测分析,很好地证明了数据质量的重要性。在当时的预测中,大多数数据是基于州级和国家级的电话投票进行的。但是电话调查中很容易出现无人接听的现象,而各州无人接听的占比率也存在着很大的区别,这会很大程度上影响选举团的预测(选举团制度是美国特有的一种选举方式, 选民在大选日投票时,不仅要在总统候选人当中选择,而且要选出代表50个州和华盛顿特区的538名选举人,以组成选举团。当选的选举人必须宣誓在选举团投票时把票投给在该州获胜的候选人。美国总统由选举团选举产生,并非由选民直接选举产生,获得半数以上选举人票者当选总统),结果就是,倾斜的数据产生错误的预测。

    如今,机器学习已经受到了大量的炒作。而机器依据大数据分析出来的预判,是否真的能符合事实情况,很大程度上决定于是否拥有坚实的数据基础:一个将数据驱动纳入到组织文化的企业,采集到的简介、完整和正确的数据。”数据驱动”一词已存在多年,但在今天快节奏和迅猛发展的数字经济中,它将成为当代企业的文化使命。

  • ?

    大数据工程师和数据分析师有何区别?

    韵晓风

    展开

    大数据并不是一种概念,而是一种方法论。简单来说,就是通过分析和挖掘全量的非抽样的数据辅助决策。大数据可以实现的应用可以概括为两个方向,一个是精准化定制,第二个是预测。比如像通过搜索引擎搜索同样的内容,每个人的结果却是大不相同的。

    随着大数据的愈演愈热,相关大数据的职业也成为热门,给人才发展带来带来了很多机会。数据工程师、数据分析师已经成为大数据行业最热门的职位。

    数据分析师是什么?

    数据分析师不同行业中获取数据,并通过获取到的数据对问题进行解答。最后还需要以合适的方式对结果进行展示,以辅助企业做出商业决策。一般来讲,数据分析师的任务是对数据进行清洗、分析以及可视化。

    根据行业的不同,数据分析师的头衔也可能不同。比如:业务分析师、商业智能分析师、运营分析师、数据库分析师等等。不管头衔是什么,数据分析师都可谓是通才。他们能够胜任诸多岗位与团队角色,同时也能在极大程度上帮助企业做出基于数据的决策。

    数据分析师所需技能

    编程,统计学和数学,机器学习,数据可视化和通信技术,数据处理和数据集定义

    数据工程师是什么?

    在大数据的时代,数据工程师的角色愈发地重要。数据工程师一般被定义成“深刻理解统计学科的明星软件工程师”。数据工程师是系统的构建者与优化者,所有公司正常运营的基础之一,数据工程师的职责就是保证数据在接收、转移的准确性,并且保证其它用户对数据的可访问性。

    和数据分析师不同,他们不太关注统计、分析技能、建模等。他们的工作重点在于数据架构、计算、数据存储、数据流等。因此,数据工程师必须具备相当强的编程能力—包括编写数据查询程序的能力。也就是说,他们的能力必须达到开发运营高手的级别。

    数据工程师还负责数据库设计、仓储数据库、建立数据库等。 这就意味着,他们必须十分熟悉现有的数据库技术和数据管理系统,比如和大数据有关的Hadoop与HBase 等。此外,非功能性的基础设施问题,如数据的可扩展性、可靠性、韧性、有效性,备份等也由数据工程师来负责。

    数据工程师所需技能

    数学和统计学,程序设计和计算机科学,分析技能,商业战略

    对于招聘市场端在大数据工程师和大数据分析师二个方向所涉及的岗位具体名称如下图所示:

    大数据工程师方向:

    大数据分析师方向:

    总结:

    数据工程师的重心在“后端”,他们需要持续的优化数据通道,才能保证企业数据的准确性与可用性。同时还需确保在需要的时候能够顺畅地将数据提供给用户。

    数据分析师则是通过使用数据工程师所构建的自定义API来提取新的数据集,并对其中的数据趋势进行识别,同时对异常数据进行分析。分析师们将会对结果进行总结,并以一种清晰直观的方式来展示这些结果,以便于其它非技术团队能够更好地了解他们目前的工作效果。

    有了以上信息,数据分析师和大数据工程师之间的差异应该清楚。对于数据驱动的职位来说,通过数据来找到正确的问题,并据此进行更加精确的试验,这就是其最根本的工作内容。进一步的,数据科学领域将不断发展进步,同时也会对相关从业人员提出持续学习的要求。

    分享 IT 技术和行业经验,请关注-技术学派。

  • ?

    干货 | 这是一份完整的大数据处理技术总结与分析

    雷欧

    展开

    一 数据分析处理需求分类

    1 事务型处理

    在我们实际生活中,事务型数据处理需求非常常见,例如:淘宝网站交易系统、12306网站火车票交易系统、超市POS系统等都属于事务型数据处理系统。

    这类系统数据处理特点包括以下几点:

    一是事务处理型操作都是细粒度操作,每次事务处理涉及数据量都很小。

    二是计算相对简单,一般只有少数几步操作组成,比如修改某行的某列;

    三是事务型处理操作涉及数据的增、删、改、查,对事务完整性和数据一致性要求非常高。

    四是事务性操作都是实时交互式操作,至少能在几秒内执行完成;

    五是基于以上特点,索引是支撑事务型处理一个非常重要的技术。

    在数据量和并发交易量不大情况下,一般依托单机版关系型数据库,例如ORACLE、MYSQL、SQLSERVER,再加数据复制(DataGurad、 RMAN、MySQL数据复制等)等高可用措施即可满足业务需求。

    在数据量和并发交易量增加情况下,一般可以采用ORALCE RAC集群方式或者是通过硬件升级(采用小型机、大型机等,如银行系统、运营商计费系统、证卷系统)来支撑。

    事务型操作在淘宝、12306等互联网企业中,由于数据量大、访问并发量高,必然采用分布式技术来应对,这样就带来了分布式事务处理问题,而分布式事务处理很难做到高效,因此一般采用根据业务应用特点来开发专用的系统来解决本问题。

    2 数据统计分析

    数据统计主要是被各类企业通过分析自己的销售记录等企业日常的运营数据,以辅助企业管理层来进行运营决策。典型的使用场景有:周报表、月报表等固定时间提供给领导的各类统计报表;市场营销部门,通过各种维度组合进行统计分析,以制定相应的营销策略等。

    数据统计分析特点包括以下几点:

    一是数据统计一般涉及大量数据的聚合运算,每次统计涉及数据量会比较大。

    二是数据统计分析计算相对复杂,例如会涉及大量goupby、 子查询、嵌套查询、窗口函数、聚合函数、排序等;有些复杂统计可能需要编写SQL脚本才能实现。

    三是数据统计分析实时性相对没有事务型操作要求高。但除固定报表外,目前越来越多的用户希望能做做到交互式实时统计;

    传统的数据统计分析主要采用基于MPP并行数据库的数据仓库技术。主要采用维度模型,通过预计算等方法,把数据整理成适合统计分析的结构来实现高性能的数据统计分析,以支持可以通过下钻和上卷操作,实现各种维度组合以及各种粒度的统计分析。

    另外目前在数据统计分析领域,为了满足交互式统计分析需求,基于内存计算的数据库仓库系统也成为一个发展趋势,例如SAP的HANA平台。

    3 数据挖掘

    数据挖掘主要是根据商业目标,采用数据挖掘算法自动从海量数据中发现隐含在海量数据中的规律和知识。

    数据挖掘主要过程是:根据分析挖掘目标,从数据库中把数据提取出来,然后经过ETL组织成适合分析挖掘算法使用宽表,然后利用数据挖掘软件进行挖掘。传统的数据挖掘软件,一般只能支持在单机上进行小规模数据处理,受此限制传统数据分析挖掘一般会采用抽样方式来减少数据分析规模。

    数据挖掘的计算复杂度和灵活度远远超过前两类需求。一是由于数据挖掘问题开放性,导致数据挖掘会涉及大量衍生变量计算,衍生变量多变导致数据预处理计算复杂性;二是很多数据挖掘算法本身就比较复杂,计算量就很大,特别是大量机器学习算法,都是迭代计算,需要通过多次迭代来求最优解,例如K-means聚类算法、PageRank算法等。

    因此总体来讲,数据分析挖掘的特点是:

    1、数据挖掘的整个计算更复杂,一般是由多个步骤组成计算流,多个计算步骤之间存在数据交换,也就是会产生大量中间结果,难以用一条sql语句来表达。

    2、计算应该能够非常灵活表达,很多需要利用高级语言编程实现。

    二 大数据背景下事务型处理系统相关技术

    在google、facebook、taobao等大互联网公司出现之后,这些公司注册和在线用户数量都非长大,因此该公司交易系统需要解决“海量数据+高并发+数据一致性+高可用性”的问题。

    为了解决该问题,从目前资料来看,其实没有一个通用的解决方案,各大公司都会根据自己业务特点定制开发相应的系统,但是常用的思路主要包括以下几点:

    (1)数据库分片,结合业务和数据特点将数据分布在多台机器上。

    (2)利用缓存等机制,尽量利用内存,解决高并发时遇到的随机IO效率问题。

    (3)结合数据复制等技术实现读写分离,以及提高系统可用性。

    (4)大量采用异步处理机制,对应高并发冲击。

    (5)根据实际业务需求,尽量避免分布式事务。

    1相关系统介绍

    1) 阿里CORBAR系统

    阿里COBAR系统是一个基于MYSQL数据库的分布式数据库系统,属于基于分布式数据库中间件的分布式数据库系统。该系统是前身是陈思儒开发的“变形虫”系统(以前调研过),由于陈思儒离开阿里去了盛大,阿里当心“变形虫”稳定性等问题,重新开发该项目。

    该系统主要采用数据库分片思路,实现了:数据拆分、读写分离、复制等功能。由于此系统由于只需要满足事务型操作即可,因此相对真正并行数据库集群(例如TeraData等),此类系统提供操作没有也不需要提供一些复杂跨库处理,因此该系统存在以下限制:

    (1)不支持跨库的join、分页、排序、子查询。

    (2)insert等变更语句必须包括拆分字段等。

    (3)应该不支持跨机事务(以前变形虫不支持)。

    说白了此类系统不具备并行计算能力,基本上相当于数据库路由器!

    另外此类系统的在实际应用的关键问题是,根据什么对数据进行切分,因为切分不好会导致分布式的事务问题。

    2) 阿里OceanBase系统

    该系统也是淘宝为了解决高并发、大数据环境下事务型处理而定制开发的一个系统。该系统主要思路和特点如下:

    (1)他们发现在实际生成环境中,每天更新的数据只占总体数据的1%不到,因此他们把数据分为:基线数据和增量更新数据。

    (2)基线数据是静态数据,采用分布式存储方式进行存储。

    (3)只在一台服务器上存储和处理增量更新数据,并且是在内存中存储和处理更新数据。

    (4)在系统负载轻的时候,把增量更新批量合并到基线数据中。

    (5)数据访问时同时访问基线数据和增量更新数据并合并。

    因此这样好处是:

    (1)读事务和写事务分离

    (2)通过牺牲一点扩展性(写是一个单点),来避免分布式事务处理。

    说明:该系统虽然能处理高并发的事务型处理,号称很牛逼,但其实也只是根据电商的事务处理来定制开发的专用系统,个人认为其技术难度小于oracle等通用型的数据库。该系统无法应用到银行或者12306等,因为其事务处理的逻辑远远比电商商品买卖处理逻辑复杂。

    在目前的大数据时代,一定是基于应用定制才能找到好的解决方案!

    3) 基于Hbase的交易系统

    在hadoop平台下,HBASE数据库是一个分布式KV数据库,属于实时数据库范畴。支付宝目前支付记录就是存储在HBASE数据库中。

    HBASE数据库接口是非SQL接口,而是KV操作接口(基于Key的访问和基于key范围的scan操作),因此HBASE数据库虽然可扩展性非常好,但是由于其接口限制导致该数据库能支持上层应用很窄。基于HBASE应用的设计中,关键点是key的设计,要根据需要支持的应用来设计key的组成。

    可以认为HBASE数据库只支持作为KEY的这一列的索引。虽然目前HBASE有支持二级索引的方案,二级索引维护将会比较麻烦。

    2并发和并行区别

    并发是指同时执行通常不相关的各种任务,例如交易型系统典型属于高并发系统。

    并行是通过将一个很大的计算任务,划分为多个小的计算任务,然后多个小计算任务的并行执行,来缩短该计算任务计算时间。

    两者主要区别在于:

    (1)通讯与协调方面:在并行计算中,由于多个小任务同属一个大的计算任务,因此小任务之间存在依赖关系,小任务之间需要大量通讯和协调;相反,并发中的多个任务之间基本相互独立,任务与任务之间相关性很小。

    (2)容错处理方面:由于并发任务之间相互独立,某个任务执行失败并不会影响其它的任务。但是并行计算中的多个任务属于一个大任务,因此某个子任务的失败,如果不能恢复(粗粒度容错与细粒度容错),则整个任务都会失败。

    3本章总结

    数据量大不一定需要并行计算,虽然数据量大,数据是分布存储,但是如果每次操作基本上还是针对少量数据,因此每次操作基本上都是在一台服务器上完成,不涉及并行计算。只是需要通过数据复制、数据缓存、异步处理等方式来支撑高并发访问量

    三 大数据背景下数据统计分析技术介绍

    随数据量变大,和事务处理不同的是,单个统计分析涉及数据量会非常大,单个统计分析任务涉及数据会分散在多台服务器上,且由于计算量大,采用单台服务器进行计算,会导致计算时间非常长,单个统计分析任务必须采用并行计算方式来加快单个统计分析任务执行速度。

    1并行查询与并行计算技术介绍

    在大数据背景下的数据统计分析技术门类很多,常见的有:

    n MPP并行数据库 : TeraData、GreenPlum、Vertica等。

    n 基于MapReduce并行计算框架的数据仓库:

    HIVE(Hadoop平台) 、Tenzing(Google公司)

    n 基于Hbase的Phoenix系统

    n HadoopDB系统

    n EMC公司的hapt系统

    n MPP分布式查询引擎: Dremel、Impala、Presto、Shard query、Citusdb。

    n 基于SPARK的Shark、基于Dryad的SCOPE、基于Tez的stinger。

    n 基于hadoop+index的JethroData系统

    n 基于内存计算的Druid系统

    这些系统都解决了海量数据下的数据统计分析的问题,并且这些系统另外一个共同特点是都提供了SQL或者类SQL接口。

    为了能够较好研究这些系统,我们需要对并行查询与并行计算的相关技术做一个简要的介绍。

    首先所有的系统都可以分为三个层次: 语义层、并行计算引擎层、分布式存储层。语义层提供一个编程接口让用户表达所需要计算,并负责把该计算翻译成底层并行计算引擎可以执行的执行计划,并由并行计算引擎来执行,最下面一层是分布式存储层。

    对于提供类SQL接口并行计算系统,语义层可以认为是SQL解析层。

    1) 语义层

    SQL语言是一种声名式语言,SQL只是表达了要做什么,而没有表达怎么做。为此,SQL解析层主要作用是:将用户提交的基于SQL的统计分析请求,转化为底层计算引擎层可以执行的执行计划。也就是解决“怎么做”的问题。

    SQL解析层工作主要包括两个大方面:

    (1) 通过语法分析技术来理解要做什么。在关系数据库中,一般会把SQL语言分析后,形成树型结构的执行计划。

    (2) 在语法分析技术上,利用各种优化技术和算法,找出一种最经济物理执行计划。

    优化可以分为两个方面:一是逻辑层面优化、二是物理执行层面优化。

    (1) 逻辑层优化

    逻辑层面个人认为主要是因为同样表达一个分析请求,有的人SQL写的好,有的人SQL写的烂,因此在逻辑层面可以通过一些等价关系代数变换,实现查询重写,将写的比较烂的sql变换为好的写法。

    比较典型优化是:“把投影和过滤下沉,先执行过滤和投影操作”,减少中间结果。

    (2) 物理层优化

    物理层面优化是在逻辑优化后,结合实际物理执行过程,找出最优的物理执行计划。生成物理查询计划的工作包括:

    ü 增加一些操作符: 包括扫描和排序等。

    ü 确定各个操作符实现算法。例如扫描是全表扫描还是利用索引;Join是采用HASH连接、索引连接、合并排序等实现算法中的那一种。

    ü 确定操作符之间的数据流转方法:物化还是流水线方式。

    ü 采用基于代价估算方法确定最优的物理执行计划,目前代价估算主要是以估算该物理计划需要的IO量。另外对于并行数据库,则还要考虑通讯代价,即尽量减少数据在各个机器之间的传递。

    在物理层优化的代价估算过程中,代价估算需要依靠很多统计信息,如表有多大,表中相关列的值分布是什么样子等。传统数据库在数据Load过程中会事先计算好这些统计信息。并行计算中还需要考虑通讯代价。

    需要指出是,由于imapla、Presto、HIVE等系统只是一个查询引擎,它们可以直接查询以普通文件方式存储在HDFS系统上的文件,因此这些系统一般无法使用索引和各种统计信息来进行物理执行计划的优化,这些系统一般只能在逻辑层进行一些基于规则静态优化。根据SHARK论文,SHARK系统支持根据前面一些节点计算获得的信息,来动态优化后面执行计划。

    (3) 物化与流水线执行方法

    一条SQL语句对开发人员而言,感觉只是一次调用,但是实际上在数据库内部,一条SQL语句执行其实是有多个操作符组合而成的的树型结构计算流。如下图:

    针对该计算流有两种执行方式:一是基于物化或者是实体化执行方式,另外一种是基于数据流的执行方式。

    第一种方法的过程是: 把各个操作运算排序,并把每个操作运算的输出的中间结果存储在磁盘上,直到被另外一个操作运算所...

  • ?

    大数据挖掘与大数据分析一样吗?有什么区别?

    杨如豹

    展开

    大数据挖掘与大数据分析一样吗?随着大数据越来越火,与大数据相关的职位也开始粉墨登场,引人关注。作为大数据行业最为重要的两种职位,大数据挖掘和大数据分析更是受到了与众不同的待遇。现在有许多的朋友都会问:大数据挖掘和大数据分析有什么区别,不是都是搞数据的吗?在这里,魔据小编认为:尽管大数据挖掘和大数据分析同属于大户数据行业,但是依然有着很大的区别。

    大数据挖掘与大数据分析一样吗?

    一.什么是数据

    不谈数据,就无以谈大数据挖掘和大数据分析,因此,我们先说一下什么是数据。

    其实很简单,数据就是观测值。例如测量数据。大家可能有个误区,认为客户填写的表单就是数据,对编程序而言,是的,但是不是常规的数据。当然填写的内容,一旦落入到观测空间,自然就成了数据。

    二.什么是大数据挖掘和大数据分析

    大数据挖掘指对大数据数据分析手段后的信息,进行价值化的分析。

    大数据分析指对大数据的一种操作手段,或者算法。目标是针对先验的约束,对数据进行整理、筛选、加工,由此得到信息。

    三.大数据挖掘和大数据分析有什么区别

    大数据挖掘是对信息的价值化的获取。价值化自然不会考虑数据本身,而是考虑数据是否有价值。由此,一批数据,你尝试对它做不同的价值评估,这是大数据挖掘。

    大数据分析是以输入的数据为基础,通过先验的约束,对数据进行处理,但是不以结论何如为调整。例如你需要图像识别,这个属于大数据分析。你要分析人脸,数据就是通过先验的 方法,就是出来个猫脸。你的数据分析也没有问题,你需要默默承受结果,并且尊重事实。因此大数据分析的重点在于数据的有效性、真实性和先验约束的正确性。

    大数据挖掘与大数据分析一样吗?

    此时对比大数据分析,最大的特点就是你需要调整你不同的先验约束,再次对数据进行分析。而先验的约束已经不是针对数据来源自身的特点,例如信噪比处理算法。你期望得到的一个有价值的内容,做先验的约束,以观测,数据根据这个约束,是否有正确的反馈。

    大数据挖掘与大数据分析一样吗?

    不管大数据挖掘和大数据分析有什么不同,这两个职位的前景都是十分好的,现在入行,正是最好的时机。

大数据分析与大数据开发

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP