- ?
什么叫大数据分析
向卉
展开
大数据行业发展如火如荼,国家政策利好,互联网大佬纷纷在大数据行业布局,我们想让自己的职业生涯在一个朝阳行业发展,肯定又要学习相关技术,让自己与时俱进,但是难就难在大数据是一个新兴事物,目前我国大学的专业里面还鲜少有这个专业,国家刚批的大数据专业,全国目前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,什么是大数据
简言之,从各种各样类型的数据中,快速获得有价值信息的能力,就是大数据技术。
2,大数据最核心的价值
大数据最核心的价值就是在于对于海量数据进行存储和分析。相比起现有的其他技术而言,大数据的“廉价、迅速、优化”这三方面的综合成本是最优的。
3,大数据处理分析的六大最好工具
一、 Apache Hadoop
Hadoop 是一个能够对大量数据进行分布式处理的软件框架。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:
⒈高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
⒉高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
⒊高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
⒋高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
Hadoop带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。
二、HPCC
HPCC,High Performance Computing and Communications(高性能计算与通信)的缩写。1993年,由美国科学、工程、技术联邦协调理事会向国会提交了“重大挑战项目:高性能计算与 通信”的报告,也就是被称为HPCC计划的报告,即美国总统科学战略项目,其目的是通过加强研究与开发解决一批重要的科学与技术挑战问题。HPCC是美国 实施信息高速公路而上实施的计划,该计划的实施将耗资百亿美元,其主要目标要达到:开发可扩展的计算系统及相关软件,以支持太位级网络传输性能,开发千兆 比特网络技术,扩展研究和教育机构及网络连接能力。
该项目主要由五部分组成:
1、高性能计算机系统(HPCS),内容包括今后几代计算机系统的研究、系统设计工具、先进的典型系统及原有系统的评价等;
2、先进软件技术与算法(ASTA),内容有巨大挑战问题的软件支撑、新算法设计、软件分支与工具、计算计算及高性能计算研究中心等;
3、国家科研与教育网格(NREN),内容有中接站及10亿位级传输的研究与开发;
4、基本研究与人类资源(BRHR),内容有基础研究、培训、教育及课程教材,被设计通过奖励调查者-开始的,长期 的调查在可升级的高性能计算中来增加创新意识流,通过提高教育和高性能的计算训练和通信来加大熟练的和训练有素的人员的联营,和来提供必需的基础架构来支 持这些调查和研究活动;
5、信息基础结构技术和应用(IITA ),目的在于保证美国在先进信息技术开发方面的领先地位。
三、Storm
Storm是自由的开源软件,一个分布式的、容错的实时计算系统。Storm可以非常可靠的处理庞大的数据流,用于处理Hadoop的批量数据。 Storm很简单,支持许多种编程语言,使用起来非常有趣。Storm由Twitter开源而来,其它知名的应用企业包括Groupon、淘宝、支付宝、阿里巴巴、乐元素、Admaster等等。
Storm有许多应用领域:实时分析、在线机器学习、不停顿的计算、分布式RPC(远过程调用协议,一种通过网络从远程计算机程序上请求服务)、 ETL(Extraction-Transformation-Loading的缩写,即数据抽取、转换和加载)等等。Storm的处理速度惊人:经测 试,每个节点每秒钟可以处理100万个数据元组。Storm是可扩展、容错,很容易设置和操作。
四、Apache Drill
为了帮助企业用户寻找更为有效、加快Hadoop数据查询的方法,Apache软件基金会近日发起了一项名为“Drill”的开源项目。Apache Drill 实现了 Google's Dremel.
据Hadoop厂商MapR Technologies公司产品经理Tomer Shiran介绍,“Drill”已经作为Apache孵化器项目来运作,将面向全球软件工程师持续推广。
该项目将会创建出开源版本的谷歌Dremel Hadoop工具(谷歌使用该工具来为Hadoop数据分析工具的互联网应用提速)。而“Drill”将有助于Hadoop用户实现更快查询海量数据集的目的。
“Drill”项目其实也是从谷歌的Dremel项目中获得灵感:该项目帮助谷歌实现海量数据集的分析处理,包括分析抓取Web文档、跟踪安装在Android Market上的应用程序数据、分析垃圾邮件、分析谷歌分布式构建系统上的测试结果等等。
通过开发“Drill”Apache开源项目,组织机构将有望建立Drill所属的API接口和灵活强大的体系架构,从而帮助支持广泛的数据源、数据格式和查询语言。
五、RapidMiner
RapidMiner是世界领先的数据挖掘解决方案,在一个非常大的程度上有着先进技术。它数据挖掘任务涉及范围广泛,包括各种数据艺术,能简化数据挖掘过程的设计和评价。
功能和特点
免费提供数据挖掘技术和库
100%用Java代码(可运行在操作系统)
数据挖掘过程简单,强大和直观
内部XML保证了标准化的格式来表示交换数据挖掘过程
可以用简单脚本语言自动进行大规模进程
多层次的数据视图,确保有效和透明的数据
图形用户界面的互动原型
命令行(批处理模式)自动大规模应用
Java API(应用编程接口)
简单的插件和推广机制
强大的可视化引擎,许多尖端的高维数据的可视化建模
400多个数据挖掘运营商支持
耶鲁大学已成功地应用在许多不同的应用领域,包括文本挖掘,多媒体挖掘,功能设计,数据流挖掘,集成开发的方法和分布式数据挖掘。
六、 Pentaho BI
Pentaho BI 平台不同于传统的BI 产品,它是一个以流程为中心的,面向解决方案(Solution)的框架。其目的在于将一系列企业级BI产品、开源软件、API等等组件集成起来,方便商务智能应用的开发。它的出现,使得一系列的面向商务智能的独立产品如Jfree、Quartz等等,能够集成在一起,构成一项项复杂的、完整的商务智能解决方案。
Pentaho BI 平台,Pentaho Open BI 套件的核心架构和基础,是以流程为中心的,因为其中枢控制器是一个工作流引擎。工作流引擎使用流程定义来定义在BI 平台上执行的商业智能流程。流程可以很容易的被定制,也可以添加新的流程。BI 平台包含组件和报表,用以分析这些流程的性能。目前,Pentaho的主要组成元素包括报表生成、分析、数据挖掘和工作流管理等等。这些组件通过 J2EE、WebService、SOAP、HTTP、Java、JavaScript、Portals等技术集成到Pentaho平台中来。 Pentaho的发行,主要以Pentaho SDK的形式进行。
Pentaho SDK共包含五个部分:Pentaho平台、Pentaho示例数据库、可独立运行的Pentaho平台、Pentaho解决方案示例和一个预先配制好的 Pentaho网络服务器。其中Pentaho平台是Pentaho平台最主要的部分,囊括了Pentaho平台源代码的主体;Pentaho数据库为 Pentaho平台的正常运行提供的数据服务,包括配置信息、Solution相关的信息等等,对于Pentaho平台来说它不是必须的,通过配置是可以用其它数据库服务取代的;可独立运行的Pentaho平台是Pentaho平台的独立运行模式的示例,它演示了如何使Pentaho平台在没有应用服务器支持的情况下独立运行;Pentaho解决方案示例是一个Eclipse工程,用来演示如何为Pentaho平台开发相关的商业智能解决方案。
Pentaho BI 平台构建于服务器,引擎和组件的基础之上。这些提供了系统的J2EE 服务器,安全,portal,工作流,规则引擎,图表,协作,内容管理,数据集成,分析和建模功能。这些组件的大部分是基于标准的,可使用其他产品替换之。
4. 大数据特点
第一,数据体量巨大。从TB级别,跃升到PB级别。
第二,数据类型繁多,如前文提到的网络日志、视频、图片、地理位置信息,等等。
第三,价值密度低。以视频为例,连续不间断监控过程中,可能有用的数据仅仅有一两秒。
第四,处理速度快。1秒定律。最后这一点也是和传统的数据挖掘技术有着本质的不同。物联网、云计算、移动互联网、车联网、手机、平板电脑、PC以及遍布地球各个角落的各种各样的传感器,无一不是数据来源或者承载的方式。
如果对于大数据还有更多的疑问,可以持续关注作者,也可以留言或者私信问题。
- ?
怎样搭建一个大数据分析平台?内附资料福利
詹千万
展开
一般的大数据平台从平台搭建到数据分析大概包括以下几个步骤:
1、Linux系统安装
一般使用开源版的Redhat系统--CentOS作为底层平台。为了提供稳定的硬件基础,在给硬盘做RAID和挂载数据存储节点的时,需要按情况配置。比如,可以选择给HDFS的namenode做RAID2以提高其稳定性,将数据存储与操作系统分别放置在不同硬盘上,以确保操作系统的正常运行。
2、分布式计算平台/组件安装
当前分布式系统的大多使用的是Hadoop系列开源系统。Hadoop的核心是HDFS,一个分布式的文件系统。在其基础上常用的组件有Yarn、Zookeeper、Hive、Hbase、Sqoop、Impala、ElasticSearch、Spark等。
使用开源组件的优点:1)使用者众多,很多bug可以在网上找的答案(这往往是开发中最耗时的地方);2)开源组件一般免费,学习和维护相对方便;3)开源组件一般会持续更新;4)因为代码开源,如果出现bug可自由对源码作修改维护。
常用的分布式数据数据仓库有Hive、Hbase。Hive可以用SQL查询,Hbase可以快速读取行。外部数据库导入导出需要用到Sqoop。Sqoop将数据从Oracle、MySQL等传统数据库导入Hive或Hbase。Zookeeper是提供数据同步服务, Impala是对hive的一个补充,可以实现高效的SQL查询
3、数据导入
前面提到,数据导入的工具是Sqoop。它可以将数据从文件或者传统数据库导入到分布式平台。
4、数据分析
数据分析一般包括两个阶段:数据预处理和数据建模分析。
数据预处理是为后面的建模分析做准备,主要工作时从海量数据中提取可用特征,建立大宽表。这个过程可能会用到Hive SQL,Spark QL和Impala。
数据建模分析是针对预处理提取的特征/数据建模,得到想要的结果。如前面所提到的,这一块最好用的是Spark。常用的机器学习算法,如朴素贝叶斯、逻辑回归、决策树、神经网络、TFIDF、协同过滤等,都已经在ML lib里面,调用比较方便。
5、结果可视化及输出API
可视化一般式对结果或部分原始数据做展示。一般有两种情况,行数据展示,和列查找展示。
以上就简单介绍这么多,如果有小伙伴想了解和学习更多的大数据技术,可以私信小编索要资料
- ?
干货 | 这是一份完整的大数据处理技术总结与分析
曹乐蕊
展开
一 数据分析处理需求分类
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语句执行其实是有多个操作符组合而成的的树型结构计算流。如下图:
针对该计算流有两种执行方式:一是基于物化或者是实体化执行方式,另外一种是基于数据流的执行方式。
第一种方法的过程是: 把各个操作运算排序,并把每个操作运算的输出的中间结果存储在磁盘上,直到被另外一个操作运算所...
- ?
巨无霸们的数据架构大比拼:Facebook Amazon Airbnb的海量数据如何记录分析
萨曼莎
展开
大数据文摘作品,转载要求见文末
作者 | Michelle Wetzler
编译 | 璐、颖子
全球最好的数据架构长什么样?
我们认为使用事件数据的公司会有很强的竞争优势。这一点在世界领先的科技公司中似乎都得到了证明。脸书、亚马逊、Airbnb,Pinterest和Netflix公司的数据工程师团队一直令人称奇。他们的工作为软件和商务的认知设定了新准则。
因为他们的产品被广泛的使用,这些团队必须不断重新定义大规模数据分析。他们在数据架构上已经投入数以百万计的资金,并且拥有比大多数公司的整个工程部门人数还多的数据团队。
如果你对大型公司的大数据框架感到好奇,下面我们将介绍最好的集成架构。
Netflix 网飞
尽管拥有9300万月活跃用户,网飞在交互上没有任何缺陷。他们每天可以收集到大概5千亿条事件数据,大概占1.3PB。在高峰时段,他们每秒会记录800万条数据。网飞雇佣的数据工程师和分析师超过100人。
下面是在网飞之前公布的公司数据架构的简图,主要包括Apache Kafka, 弹性搜索, AWS S3, Apache Spark, Apache Hadoop, 和EMR。
来源http://techblogflix/2016/02/evolution-of-netflix-data-pipeline.html
Facebook 脸书
由于拥有超过10亿的活跃用户,脸书的数据库是世界上最大的数据库之一,储存了超过300pb的数据。这些数据会用于各种应用程序,从传统的批处理,到图像分析、机器学习和实时交互分析。
为了实现大规模交互查询,脸书的工程师设计了Presto,一个使用特定分析优化的定制分布式SQL查询引擎。上千员工在使用这一引擎,这些人每天跨越各种不同的后端数据库,如Hive, HBase, 和Scribe,执行超过3万个查询。
Airbnb 爱彼迎
爱彼迎支持超过1亿用户对200万条房屋记录进行查询。另外,爱彼迎可以为用户智能地提供旅行建议,这对其发展是非常重要的。他们的团队建立了一个很棒的博客AirbnbEng,去年他们在博客上介绍了爱彼迎的数据架构。
在我们去年办的一个聚会中,爱彼迎的数据科学部的经理, Elena Grewal说“要建立一个世界级的分析团队”。他提到爱彼迎的数据团队已经超过30人,公司每年付给这些职员的薪水超过500万美元。
Pinterest 品趣志
品趣志有超过1亿的月活跃用户和超过100亿的月页面访问量。在2015年,他们的数据团队的工程师就超过了250个。他们的架构很大程度上依赖于Apache Kafka、Storm、Hadoop、HBase 和 Redshift。
品趣志的数据架构概览
品趣志的团队不只需要持续记录巨量的客户数据,他们还需要给他们的广告商提供详细的分析结论。Tongbo Huang写过“在品趣志的背后:建立品趣志分析系统”(https://medium/@Pinterest_Engineering/behind-the-pins-building-analytics-f7b508cdacab?s=hi-from-keen-io),该文章介绍了他们怎样改进数据分析软件栈以满足上述的需求。下图说明了他们如何运用Apache Kafka、AWS S3、和 HBase来实现目标的:
Pinterest商务分析系统数据架构
Pinterest商务分析系统客户界面
Twitter / Crashlytics
Crashlytics Answers团队建立了用来处理每天百万记的移动设备事件的架构。
事件接收器
存档
批处理
运算速度
组合视图
致谢
感谢协作数据工程社区,他们不仅持续发明新的数据科技,并且坚持开源并分享他们的知识。如果不是之前那么多工程师团队所做的基础工作,我们的工作不可能完成。同样如果没有那些日以继夜一直与我们并肩作战的人,我们的工作也不可能完成。欢迎在文章后进行评论和反馈。
特别感谢上面提到的文章的作者和架构师:网飞的Steven Wu, 脸书Presto的Martin Traverso , AirbnbEng,Pinterest Engineering, 和 Crashlytics Answers 的Ed Solovey 。
原文链接:https://blog.keen.io/architecture-of-giants-data-stacks-at-facebook-netflix-airbnb-and-pinterest-9b7cd881af54
- ?
技术干货 | DataHunter CTO马珂:海量数据分析与可视化
宫晟睿
展开
对于个人而言,数据可视化是我们在日常工作中常常能够接触到的一项重要技能,通常,我们会使用Excel进行简单的图表制作,通过这些图表,我们进而就对这些数据有了一个直观的了解和认识。
而对于企业来说,想要“读懂”存储在服务器上的大量业务数据,绝不是Excel能够完成的,这需要数据处理、分析、可视化呈现等一整套解决方案。因此,在实施大数据战略,或者说部署数据分析产品时,很多企业都会有这样的疑问:如何处理海量的业务数据?借助什么样的分析手段才能发现数据价值?如何确保数据可视化分析过程中的实时性?在第九届中国数据库技术大会(DTCC 2018)现场,DataHuner CTO马珂就针对这些问题进行了讲解。
本次分享,马珂从企业内的真实业务场景出发并结合测试实例,逐步介绍大数据时代下,数据可视化分析的技术架构与组成。同时,马柯详细介绍了探索式分析、实时数据分析的技术原理及企业应对海量数据分析的处理方法。
谈谈数据库性能优化
近些年,数据库技术不断推陈出新,从传统的关系型数据库到NoSQL,或者说从行存储发展到列存储,数据库的查询方式发生了根本性的变化。
关系型数据库,基于存储结构,其在模型定义(ORM)、数据关联(TableJoin)、聚合计算(Group)等方面具有优势,关系型数据库的特性往往也是非关系型数据库的短板;而非关系型数据库在处理海量数据(千万行以上)方面则性能突出。
谈到数据库性能,从算法层面来讲,其实无论哪种数据存储结构,基于算法的优化都已达到极限。目前提升数据库性能的途径,主要集中在IO层面,例如DFS系统、MPP的架构。内存数据库(如Redis)虽然在性能上是一种质的提升,但其持久化所引发的一系列问题,可能会使架构复杂度增加,不一定适用于所有场景。
另外,非关系型数据库向关系型数据库查询(T-SQL)的兼容,例如Hive,确实已经取得了长足的发展,但目前看还不够成熟,暂时无法做到平滑迁移。
还有一个隐含的问题,我们可以以一种娱乐的心态观察一下,即:分布式计算。对于以统计学为基础的数据分析,是一种基于全量数据的计算。所以在这种前提下,分布式计算极有可能是一个伪命题。
在MPP架构中下的RDB中,分布式计算应当是耦合在某些查询当中的,例如count(*),这实际上是由分布式存储所带来的算法优化。是否也可以通过某种加权算法,来协调其他的聚合算法?然后用架构性能来抵消加权算法所带来的新的复杂度?我相信答案是肯定的。
可视化技术的演进
相对而言,数据分析技术有比较成熟、丰富的理论和实践支撑,而可视化技术则比较匮乏。从定义上来讲,数据可视化主要是为了增强数据的显示效果,方便用户以更加直观的方式查看数据,进而发现数据中隐藏的价值。
近几年,随着显示技术的突飞猛进,包括从显示器、投影仪,到现在的LED巨幅屏幕,VR/AR,全息技术,乃至移动设备和性能的升级,使得数据可视化领域有大量有趣的事情可以做。回到企业场景,我们可以把可视化分为两个层面的问题:即数据分析中的可视化:从报表到分析、数据展示中的可视化:从平面到多维。
大数据时代的到来,也让数据可视化技术得到了更多的关注,但面对海量数据,可视化技术目前仍然存在很多亟待解决的问题,包括海量数据的ETL处理、实时数据处理等。未来,随着人工智能和机器学习技术的快速发展,其与可视化的结合,相信也会是一个重要挑战。
探索式分析技术
数据分析当中的可视化,最直接的表现就是各类图表。其实,我们在借助Excel或其他工具生成图表时,实际上已经在可视化这条路上迈出了第一步。
在数据分析层面,传统的数据分析有明确的目的性,从数据来源、分析方式、输出结果等方面,都是有传统的业务逻辑支持的,按部就班地进行分析即可。但是进入集约化生产之后,如何调优生产、降低成本,这些事情就不是那么明确了。
与此同时,由于前期的数据积累,数据分析师所面对的数据体量也越来越大。如果我们将传统的数据分析称为粗放式分析,那么当前企业所面临的挑战,是对所拥有数据的精耕细作。这种集约化分析就是对数据金矿的深度挖掘,是企业的必经之路。其背后的分析方式,也就自然进入了探索式分析阶段。
在探索式分析中,可视化(或者说各类图表)此时是用户快速捕捉数据特点最有效的途径,在这种场景下,可视化对象是一个结果集(分析结果,小数据),虽然数据量较小,但人类依然无法直接处理。
同时,因为探索式分析需要协同决策,所以对可视化表现的合理性有较高的要求,背后应该有统一的绘图标准,来实现可视化方式的切换。狭义的数据可视化,也就是图表,我们将其抽象为以下几个部分:
坐标系
1. Rectangular Coord(Q-1, Q-All)
2. Polar Coord
3. GEO
度量(Metric)的图形表达
1. Size(Distance, Radian)
2. Direction
3. Extreme(SUM,MAX,MAXMIN)
4. 色彩饱和度
维度(Dimension)的图形表达
1. Delta(Position, Angle)
强调(基于维度)
1. Color
2. Animation
在这个体系下,可以将我们熟悉的几种图表进行建模。这里我们先不考虑“色彩饱和度”和“强调”两方面的参数。
柱图:
Rectangle: [0, 0, 400, 300]
Coordination = Rectangular:Q1
坐标系:第一象限
Metric = Size:Distance;
Direction =[Left, Up];
Extreme = MAXMIN
度量:距离的Size;左向右排列,下到上为正像;参考极值:最大最小值差。
Dimension = Delta:Position, Offset =[0, 0.8];
纬度:位置偏移,位置矫正:0,视觉矫正:0.8(该参数具体表现为柱图的宽度内缩)
饼图:
Rectangle: [0, 0, 200, 200]
Coordin+tion = Polar
坐标系:极坐标系
Metric = Size:Radian; Direction =[Clockwise]; Extreme = SUM
度量:弧度Size;顺时针排列;参考极值:总和
Dimension = Delta:Angle, Offset = [0,1];
纬度:角度偏移,位置矫正:0,视觉矫正:1
极柱图:
Rectangle: [0, 0, 300, 300]
Coordination = Polar
坐标系:极坐标
Metric = Size:Radian, Direction =[Clockwise]; Extreme = MAXMIN
度量:弧度尺寸,顺时针,差极值参考
Dimension = Delta:Position, Offset =[0, 0.8];
纬度:位置偏移,0位置矫正,0.8视觉矫正
在这种可视化体系下,我们首先可以对各类图表的适配能力进行归纳,并对图表的表现能力进行量化,从而形成基于数据集特点的图表推荐算法。前面提到,每一个图表实际是一个模型。我们在基于SaaS的数据分析产品中,会将这个模型与行业、用户使用习惯结合,借助机器学习,最后产生图表的AI算法。
实时的数据可视化分析
如果说探索式分析的可视化,是OLAP的可视化,那么实时数据可视化,可以说是OLTP的可视化。这种情况下,时间维度往往是基础维度,因为OLTP对实时性有较高的要求。所谓实时性,具体体现在时间切面的密度、采样精度等问题上,从而决定了数据窗口的大小。基于B/S的产品结构,我们对像素绘图的性能进行了测试。浏览器端的绘图分2D和3D两种,基本数据如下:
Mac Pro i7 8G Inter Graphic-card
类型|复杂度|FPS
Canvas 2D 400,000 11FPS
Canvas 3D 1,000,000 30FPS
这里面的复杂度,为一次最简绘图,即描绘一个点的动作。由于Canvas3D(WebGL)调用了显卡计算,所以点绘图方式和2D有所不同,这其中还包含了线绘图和自旋计算。WebGL接口所使用的GL是OpenES,与OpenGL同源。
当然,2D和3D绘图可比性不是很高,但通过这两组数据,我们可以基本了解在浏览器端,2D和3D绘图方面我们能够达到的性能上限。在我们实际遇到的客户场景中,有个上限8万点绘图,2FPS刷新率的案例。根据上面的测试数据,我们可以看到,2D性能完全可以满足需求,富裕的算力可以放在优化视觉效果和用户体验上。
此外,三维甚至多维空间中的可视化还处在萌芽的阶段,在这种场景下,会让数据可视化变得更加困难。未来,随着可视化技术的不断发展,我相信三维空间下的可视化理论会有大幅升级,同时由于显卡GPU的支持,其渲染能力也会大幅度提升。
今天的分享就到这里,感谢大家聆听。
- ?
海量实时用户行为数据的存储和分析
董灵
展开
在短时间内爆发大量数据,这时数据资源的采集、存储和分析和应用等,都是大数据行业的难点。行为数据、日志数据的处理,往往成为企业数据建设首先面对的瓶颈,这些数据不易保存,实时获取分析难度较大,但是数据价值却不可估量。
在大数据中,90% 以上的数据爆发来自于行为数据,就像现在的互联网、移动互联网、甚至在产生于物联网中用来描述人和物的每一分每一秒的变化的数据状态,这些都是行为数据。
行为数据能用做什么?
行为数据能做什么?有一个简单的例子 —— 分析访客行为的路径,我们拿一个网站的数据进行分析,针对网站的访客,我们可以通过分析其访问前期、中期、后期的行为习惯去了解哪些引流的渠道需要加强投入,以及使用这些来指导内容编辑和竞品研究分析工作。
实际上在做需求时,还有更多的细节要求如:对数据的实时性的要求比较高、要求数据的热点情报的准确性、与客户数据的协同分析等。
行为数据的处理方式
用户行为数据通常具备以下特征:
用户基数大;
高基数维度比较多;
数据量大;
时序的特征。
我们用到的高基维,其中有些维度都是上千万的高基维参数。用户行为数据的处理,在支持原始数据查询的同时,也要支持原始数据的聚合能力。
原始数据的聚合分析这块又分为两种,一种是过去常用的做法,通过一个固化的业务模型或者主题,提前计算好的数据,叫做物化视图。
第二种是基于原始数据存储之后,在实时查询的过程中进行多维交叉的计算,这个称为实时聚合。
在查询过程中对实时聚合的一个分析,也是大家在进行数据挖掘分析中共同面临的一个问题,就是针对海量数据。
首先,针对这些数据,需要快速的检索出所需要的数据的行号。其次,在获取数据所在位置之后,如何快速地把数据装载到内存里,最后是装载到内存之后通过分布式计算的方式,怎么去把我们的结果计算出来。
这些就是在做数据的实时查询过程中的需要具备的基本技术条件。
挖掘数据新的价值
面对海量实时行为数据的技术思考,主要是从四个角度来进行:
第一,必须要以原始数据存储。为什么要基于原始数据存储?因为在整个的数据分析阶段,可以细分为三个阶段。第一个就是传统的是 BI 阶段。第二个是数据的挖掘,第三个是数据的预测分析。
想解决这三个阶段的过程,以传统的方法是建一个数仓,基于数仓来实施的时,只能面向比较固化的业务报表模式,产生一些数据的分析结果,得到决策结果。如果想做数据挖掘时,基于固化业务模式计算的结果的很难满足数据挖掘需求,所以必须从初始阶段基于原始数据去提取其特征。
基于固化的的业务报表模型所获取数据计算的结果,对数据挖掘分析的价值不高。存储引擎必须以原始数据进行存储,才能既满足 BI 阶段的需求,又可以解决未来数据挖掘与数据预测分析的需求。
第二,要满足实时多维的查询,是为了在数据基于原始数据存储之后,去做到聚合结果能够满足用户对海量增量数据快速查询的需求。
第三,快速响应需求,在企业内部,其实数据部门的需求量是最大的,各个业务部门的需求都往数据中心提,所以数据部门必须去解决好如何快速地响应业务需求。
第四,数据的探索分析,以往把数据,按照固化的业务报表模式所获取的结果,做二次分析的空间量比较小。所以必须要基于原始多维的数据进行数据的探索,挖掘数据新的价值,而不是按照已有的固化的业务模式,只是生产出一些固化的业务模型的数据。
平台架构
数果现在基于之前做过的一些技术的预言跟验证,自行研发了一个基于 Hadoop 加速引擎,称为 Tindex。之前我也在网络上做过万亿级日志与行为数据存储查询技术剖析http://infoq/cn/articles/trillion-log-and-data-storage-query-techniques 的文章 ,也讲解了 Tindex 是如何实现的。Tindex 的实现主要基于三点,第一点基于索引,第二点基于类似存储的方式,第三点做了分布式内存计算的框架在 Tindex 中,使之能够支持数据的实时的多维分析的能力。
基于加速引擎这块,在其上层做了一个适配层,有 SQL引擎。SQL 引擎支持 SQL 语句和表达式,还有大数据生态技术,目前已经是完全支持。基于适配层,来做不同的行业应用。这是数果整个平台技术架构的一个图。
平台特性
平台的特性方面,支持海量增量数据实时接入。在数据接入这块,现在提供可视化埋点,跟文件、MR 的一些数据的采集,就像我们目前在做的单进程的接入式,基本上在 3 万以上,从数据的产生,到数据显示、出现查询结果,在 5 秒以内即可实现。
第二个特性,基于明细数据的存储与预聚合的存储分别去搭建。为什么不仅要基于原始数据存储,还需要预聚合存储?因为其有两种不同的需求。第一个是面向固化的高频查询的数据,我们可以基于预聚合存储的方式,去查询其周期跨度比较长的需求,一年两年都可以进行查询。但是基于近半年或者一年的数据需要进行深度数据探索分析的,便可以基于原始明细数据做实时聚合分析。还有在基于原始明细数据进行分析的时候,他会更佳灵活。
第三,海量数据中怎么去实现快速检索,是基于搜索引擎的索引技术进行改造的。但是在筛选方式上,目前只能支持时间筛选、文本筛选和数值筛选,例如文本筛选中支持分词与模糊匹配,数值筛选中,数值的分组和数值的范围这些均可支持。
这个展示的是灵活多维的分析,在这个界面中,左边的这一列中是基于原始明细数据产生的所有的维度,可以根据权限去进行显示。而在指标方面通过界面拖拽进行多维实时分析,选择想要的数据分析结果,进行可视化的展示,可以自由地数据探索。因为数据是基于原始明细数据的存储,所以不需要提前预计算。可以在界面上进行任意数据交叉分析,去了解数据的分布态是非常便捷的。
通过指标的灵活定义,来实现实时响应的业务需求,这个指标定义这块有几个指标,一种叫单指标,即按照某一个维度进行一个聚合计算,通过界面可以简单、快速完成。另一种叫复合指标,需要进行一些四则运算,可以通过这个界面定义出来。
在指标这方面还有比较复杂的,需要通过多个维度进行定义的,可以通过一些表达式,进行快速的定义,定义完成后就通过界面,直接看到结果,获得图形显示,进行数据分析。
支持实时监控与跟踪告警,在多维分析界面中把分析结果定义出来后,可以直接形成一个实时监控大屏,不需要重新开放,多站完成各类需求。
最后一个也是最重要的一个特性,是支持二次的开发。数果的平台提供普通类查询,有 Timeseries、TopN、select、groupby、firstN、scanQuery。也提供像用户分组,用户漏斗查询,用户留存查询这类高级查询,还支持多种条件的过滤,像日期范围、数值范围、地理坐标范围,还有字符串的精准匹配。还支持多种聚合的方式。如统计,分组,还有聚合再聚合,这类业务场景,也是在业务需求中经常出现的。
基于平台我们做了什么?
基于这个平台实现了指标任意定制,因为数据是基于原始明细记录存储的,所以指标的定制这方面,不需要提前预计算,直接通过界面,通过一些表达式便可以轻松实现。
维度的自由的筛选,可以通过界面,自由地拖拽数据,就可以完成交叉分析。
基于平台提供用户行为分析模型,例如实时的用户分群,可以通过界面快速的完成。再例如实时的路径分析,实时的流程分析,实时的漏斗分析。提供了一个智能算法模型,相当于在这个模块实现了,将机械学习跟深度学习的算法吸收进来,跟我们的平台打通,就可以实现通过界面的简单拖拽,来完成大部分算法的模型。用户也有一些固化的模型,像用户的扩群,用户 RFM 细分的模型,用户流失预测的模型。基于这方面也提供了一个实时大屏的模块,能够由用户自由拖拽完成其实时监控的需求。
- ?
Kaggle放大招:简单几步实现海量数据分析及可视化
迁就
展开
新智元报道
来源:Kaggle
编译:三石
【新智元导读】近期,Kaggle发布了新的数据分析及可视化工具——Kaggle Kerneler bot,用户只需上传数据集,便可用Python为用户自动获取相关的深度数据分析结果。本文将带领读者体验一下这款便捷而又高效的工具。
Kaggle Kerneler bot是一个自动生成的kernel,其中包含了演示如何读取数据以及分析工作的starter代码。用户可以进入任意一个已经发布的项目,点击顶部的“Fork Notebook”来编辑自己的副本。接下来,小编将以最热门的两个项目作为例子,带领读者了解该如何使用这款便捷的工具。
好的开始是成功的一半!
要开始这个探索性分析(exploratory analysis),首先需要导入一些库并定义使用matplotlib绘制数据的函数。但要注意的是,并不是所有的数据分析结果图像都能够呈现出来,这很大程度上取决于数据本身(Kaggle Kerneler bot只是一个工具,不可能做到Jeff Dean或者Kaggle比赛选手们那么完美的结果)。
In [1]:
from mpl_toolkits.mplot3d import Axes3Dfrom sklearn.decomposition import PCAfrom sklearn.preprocessing import StandardScalerimport matplotlib.pyplot as plt # plottingimport numpy as np # linear algebraimport os # accessing directory structureimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
在本例中,一共输入了12个数据集。
In [2]:
print(os.listdir('../input'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/007_nagato_yuki'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/046_alice_margatroid'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/065_sanzenin_nagi'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/080_koizumi_itsuki'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/096_golden_darkness'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/116_pastel_ink'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/140_seto_san'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/144_kotegawa_yui'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/164_shindou_chihiro'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/165_rollo_lamperouge'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/199_kusugawa_sasara'))print(os.listdir('../input/moeimouto-faces/moeimouto-faces/997_ana_coppola'))
接下里,用户在编辑界面中会看到四个已经编好的代码块,它们定义了绘制数据的函数。而在发布后的页面,这些代码块会被隐藏,如下图所示,只需单击已发布界面中的“code”按钮就可以显示隐藏的代码。
准备就绪!读取数据!
首先,让我们先看一下输入中的第一个数据集:
In [7]:
nRowsRead = 100# specify 'None' if want to read whole file# color.csv may have more rows in reality, but we are only loading/previewing the first 100 rowsdf1 = pd.read_csv('../input/moeimouto-faces/moeimouto-faces/080_koizumi_itsuki/color.csv', delimiter=',', nrows = nRowsRead)df1.dataframeName = 'color.csv'nRow, nCol = df1.shapeprint(f'There are {nRow} rows and {nCol} columns')
那么数据长什么样子呢?
In [8]:
df1.head(5)
Out [8]:
数据可视化:仅需简单几行!
样本的柱状图:
In [9]:
plotHistogram(df1, 10, 5)
二维和三维的PCA图:
In [10]:
plotPCA(df1, 2) # 2D PCAplotPCA(df1, 3) # 3D PCA
同理,更换数据集文件的路径,也可以得到其它数据对应的结果。
当然,除了上述几种可视化的结果外,根据输入数据以及需求的不同,也可以得到其它数据分析可视化结果,例如:
相关矩阵:
In [11]:
plotCorrelationMatrix(df1, 8)
散射和密度图:
In [12]:
plotScatterMatrix(df1, 20, 10)
针对数据分析、数据可视化工作,Kaggle kerneler bot应当说是相当的便捷和高效了。那么你是否也想尝试一下呢?
链接地址:
https://kaggle/kerneler/kernels
新智元AI WORLD 2018大会【早鸟票】
开售!
新智元将于9月20日在北京国家会议中心举办AI WORLD 2018 大会,邀请机器学习教父、CMU教授 Tom Mitchell,迈克思·泰格马克,周志华,陶大程,陈怡然等AI领袖一起关注机器智能与人类命运。
大会官网:
http://aiworld2018/
即日起到8月19日,新智元限量发售若干早鸟票,与全球AI领袖近距离交流,见证全球人工智能产业跨越发展。
活动行购票链接:http://huodongxing/event/6449053775000活动行购票二维码:
- ?
海量数据分析,告诉你男女交往的几个“大忌”,别再犯错了!
觅珍
展开
如今社会,单身青年的数量越来越巨大,在某些单身人士的眼中,谈恋爱似乎是很繁琐又耗费精力的事情。很多单身人士都有这种“不是不去爱,只是怕麻烦”的想法,也有很多在恋爱中的青年说“搞不懂他/她心里到底在想些什么,稍微有点矛盾就发火,还不如自己一个人来的轻松惬意。”不少对于爱情比较迷糊的人,时不时的踩到感情的雷区,因此免不了又有一番不必要的争吵。本次生活馆将告诉你:当男生和女生进行一段感情的时候有哪些举动是极其不明智的;在彼此的恋爱期间,男生女生到底在想什么?情侣究竟怎样才能科学地相处?
一、对方给你的爱,从来都不是理所应当的
男女在交往期间,男生是十分反感一个女生对他的付出以及努力视若,在她享受男生对她的各种福利的时候,满嘴都是“男女平等”,而当她需要为男生做出一点妥协的时候,她又会搬出“女权理论”这一套。曾经有个朋友,男友对她百依百顺,她前一分钟说想吃早餐,下一分钟男友就把早餐送到楼下,当姐妹们羡慕地说她男票真好时,她得意地说:“他说过愿意为我做一切的。”好景不长,女生被分手了,男生表示和她谈恋爱太累了。其实在恋爱期间是十分忌讳一方付出大量时间精力,而另一方把却把这种付出视作她本就应得的福利,那么这段感情的“祸根”在此刻已经种下。恋爱里有种关系叫“壁垒”,指的是恋爱中两个人彼此付出,建立“爱情壁垒”,在发生矛盾时会念及对方的好,提高分手成本。建立“壁垒”需要互动式付出,恋爱中两人的关系是平等的,没有什么爱是“你本应该”。
二、双方产生矛盾,处于争执阶段时,不留情面,狠戳痛处
男性是一种极度爱惜面子的物种,女生不留情面的讽刺挖苦是他们十分难以接受和容忍的。交往期间的磕磕绊绊小小争执都没关系,但如果女生恃宠而骄、口不择言,男生是十分反感的。主持人寇乃馨曾经在节目中提到,她和老公黄国伦都是强势的人,每次吵起架来都互不相让。有次吵得很凶,她怒气冲冲说了句:“黄国伦,你哪一点比得上我寇乃馨啊,你知不知道你离过婚,你是二手货,你配不上我。”黄国伦说了句:“你知道吗?有些话是不能说出口的。”随即消失了3天毫无音讯。恋爱中最无意义的就是贬损了,有些话一旦说出就收不回来,也会拆毁彼此为恋情付出的努力。
三、意见出现分歧,女生就是不言语,让男生猜他的心思
男性和女性对同一件事情上的思考模式的差异真不是一星半点,当一个女生对男生说一些含糊不清的话时候:男生是很害怕去猜女生心思,因为不仅不容易猜到正确答案,而且如果猜错了的 话后果可是相当严重的!女人心海底针,一个糙汉子有能猜到多少,毕竟能心领神会一下子就猜到女朋友此时此刻的想法的男生是十分稀少的,对于一个男生而言,他更希望的是:你的情绪你的想法都能不兜圈子说出来,不然你的需求我怎么去满足?你的情绪我怎么去照顾呢?
- ?
财务报表之海量数据分析
约瑟夫
展开
财务报表是反映公司财务状况的重要数据报表。结构清晰,展示全面的财务报表能够帮助企业的管理人员深入分析报表数据,挖掘数据价值,帮助企业查找问题,以便使企业运行的更加良好。
下面列举使用葡萄城报表制作出的清晰美观的财务报表。
资产负债结构表
这张报表展示了财务三大报表之一的资产负债表,报表让企业现有资产和负债情况一目了然。
费用报表
通过费用报表,可以清晰的查看公司的费用情况趋势等,以便为节省开支计划提供数据依据。
库存分析报表
库存情况代表了企业的生产成品实际的流动情况,反映了企业的销售等情况是否正常。通过库存分析报表,企业的管理人员能实时掌握企业的运营状态。
以上报表均包含在葡萄城报表模板库中。
了解报表模板库:http://grapecity/enterprise-solutions/activereports_server/library/
转载请注明出自:葡萄城报表
关于报表模板库
报表模板库是葡萄城面向广大报表用户推出的免费报表制作、学习及参考工具。通过该工具,降低用户制作报表难度,人人都可成为报表专家,业务数据分析不再遥不可及!
仅需一步!无需配置环境及参数,即可快速浏览百余套来自真实行业的案例及典型应用模板,在了解专业报表的布局及功能的同时,掌握报表从设计到呈现的全部技术细节,还可通过自带的设计器,所见即所得的修改报表模板,并查看效果。
海量数据分析
-
1、只需3秒快速实现求和
-
2、如何快速填充序号
-
3、如何自动填充序号(公式法)
-
4、数据条的神奇应用
-
5、多文本快速合并
-
6、查找与替换的不同玩法
-
7、快速定位到指定区域
-
8、数据排序、工资条制作
-
9、快速筛选(模糊、精确筛选)
-
10、快速插入空行
-
11、快速删除空行
-
12.快速跳转到天涯海角
-
13、.同时查看两个Excel文件
-
14、用条件格式扮靓报表
-
15、一键插入Excel图表
-
16、批量处理行高、列宽
-
17、利用拆分功能查看数据
-
18、批量录入相同内容
-
19、工作表快速跳转
-
20、批量录入表格模板(精品课程)
-
21、Excel函数与公式的应用、公式循环引用的查找
-
22、IF函数单条件判断同比增长
-
23、用sum函数 格式相同,连续多表数据汇总
-
24、excel快捷键
-
25、VLOOKUP函数——根据销售员匹配销售额
-
26、统计各部门销售总额
-
27、统计指定条件个数
-
28、怎样输入当前日期和时间、星期数
-
29、销售业绩排名
-
30、Sumproduct函数-万能函数(销售额汇总求和)
-
31、根据销售员,地区,商品名称汇总
-
32、批量替换PPT字体
-
33、给销售额数据批量添加万元单位
-
34、一秒快速核对两列数据
-
35、快速定位到指定单元格或区域
-
36、快速制作双行标题工资条
-
37、给你的表格做个瘦身
-
38、快速打开常用的Excel文件
-
39、快速打开多个Excel文件
-
40、利用创建组—快速隐藏/展开多列数据
-
41、快速制作下拉菜单
-
42、复制粘贴表格,如何保留数据源列宽格式一致?
-
43、两列数据位置互换
-
44、1秒钟扮靓报表——如何实现表格隔行换色
-
45、快速删除重复记录——保留唯一值
-
46、快速向下填充、向右填充,文本或公式
-
47、给Excel文件添加密码
-
48、插入带图片的批注
-
49、输入公式后不计算?
-
50、如何设置单元格缩进
-
51、快速解决Excel表格总显示货币格式
-
52、批量添加万元单位
-
53、你会四舍五入么?
-
54、用RAND函数机选彩票
-
55、冻结首行你会么?
-
56、超链接的高级应用
-
57、IFERROR函数-屏蔽错误值
-
58、批量填充颜色
-
59、录入数据
-
60、快速输入工号
-
61、快速行列转置
-
62、自定义缩放界面
-
63、多个单元格同时输入
-
64、如何计算立方米?
-
65、快速制作双行标题工资条
-
66、输入带方框的√和×
-
67、快速将姓名对齐
-
68、快速输入性别
-
69、按单位职务排序
-
70、自动计算合同到期日期
-
71、计算时间间隔
-
72、日期和时间的拆分
-
73、快速处理不规范的日期格式
-
74、快速填充合并单元格
-
75、效率加倍的快捷键
-
76、快速复制表格和对象
-
77、快速创建工作表副本
-
78、快速复制序列号
-
79、快速显示公式
-
80、多个单元格同时输入
-
81、快速调整显示比例
-
82、快速自动填充
-
83、快速填充(Ctrl+E)
-
84、Ctrl与数字键结合
-
85、快速将多列数据整理为1列
-
86、快速将1列数据拆分为多列
-
87、快速定位公式
-
88、快速录入数据
-
89、快速累计求和
-
90、身份证号码显示为0怎么办?
-
91、快速制作斜线表头
-
92、文本竖向显示
-
93、神奇的监视窗口
-
94、不一样的格式刷
-
95、快速美化图表
-
96、快速生成当前日期
-
97、快速找出循环引用
-
98、快速提取信息
-
99、二维表快速转换为一维表
-
100、快速多表合并