做大数据过程中遇到的13个问题_第1页
做大数据过程中遇到的13个问题_第2页
做大数据过程中遇到的13个问题_第3页
做大数据过程中遇到的13个问题_第4页
做大数据过程中遇到的13个问题_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、做大数据过程中遇到的 13 个问题1、最早的数据分析可能就报表目前很多数据分析后的结果,展示的形式很多,有各种图形以及报表,最早的应该是简单的几条数据,然后搞个 web 页面,展示一下数据。早期可能数据量也不大,随便搞个数据库,然后 SQL 搞一下,数据报表就由来了。但是数据量大起来怎么分析呢?数据分析完了怎么做传输呢?这么大的数据量怎么做到实时呢?分析的结果数据如果不是很大还行,如果分析的结果数据还是很大改怎么办呢?这些问题在这篇文章中都能找到答案,下面各个击破。2、要做数据分析,首先要有数据这个标题感觉有点废话,不过要做饭需要食材一样。有些数据时业务积累的,像交易订单的数据,每一笔交易都会

2、有一笔订单,之后再对订单数据作分析。但是有些场景下,数据没法考业务积累,需要依赖于外部,这个时候外部如果有现成的数据最好了,直接 join 过来,但是有时候是需要自己获取的,例如搞个爬虫爬取网页的数据,有时候单台机器搞爬虫可能还爬不完,这个时候可能就开始考虑单机多线程爬取或者分布式多线程爬取数据,中间涉及到一个步骤,就是在线的业务数据,需要每天晚上导入到离线的系统中,之后才可以进行分析。3、有了数据,咋分析呢?先将数据量小的情况下,可能一个复杂的 SQL 就可以搞由来,之后搞个 web 服务器,页面请求的时候,执行这个 SQL,然后展示数据,好了,一个最简单的数据分析,严格意义上讲是统计的分析

3、。这种情况下,分析的数据源小,分析的脚本就是在线执行的 SQL,分析的结果不用传输, 结果的展示就在页面上, 整个流程一条龙。 4、数据量大了,无法在线分析了,咋办呢?这个时候,数据量已经大的无法用在线执行 SQL 的形式进行统计分析了。这个时候顺应时代的东西产生了(当然还有其他的,我就知道这个呵呵),数据离线数据工具 hadoop 由来了。这个时候,你的数据以文件的形式存在,可能各个属性是逗号分隔的,数据条数有十几个亿。这时候你可能需要构建一个 hadoop 集群,然后把自己的文件导入到集群上面去,上了集群之后,文件就是 HDFS 的格式了,然后如果要做统计分析,需要写mapreduce 程

4、序,所谓的 mapreduce 程序,就是实现 map 和 reduce的接口,按照自己的业务逻辑写分析流程,之后把程序打成 jar 包上传到集群, 之后开始执行。 分析后的结果还是文件的形式产生。 5、分析个数据还要写 java 代码是不是效率低了点这个确实是,mapreduce 的程序,本身的可测性没有执行一个简单的单元测试来的爽,所以效率确实不高。这个时候,hive 由现了,hive 是一个数据仓库分析的语言,语法类似于数据库的 SQL,但是有几个地方是不同的。有了 hive 之后,数据分析就好之前写 SQL 一样了,按照逻辑编写 hiveSQL,然后控制台执行。可能最大的感觉是,数据库

5、的 sql 很快就能有结果,但是 hive 的,即使很小的一个数据分析,也需要几分钟时间。构建 hive,需要在 hadoop 的集群上,原理很简单,就是把文件构建成表的形式(有一个数据库或者内存数据库维护表的 schema 信息),之后提交写好的 hivesql 的时候,hadoop 集群里面的程序把 hive 脚本转换成对应的 mapreduce 程序执行。这个时候,做离线的数据分析简单写脚本就行了,不用再搞 java 代码,然后上传执行了。6、数据产生的结果,怎么搞到线上提供服务的数据库中呢?这个时候分析的结果有了,可能是一个很宽很长的excel 表格,需要导入到线上的数据库中,可能你想

6、到了,如果我的数据库是 mysql,我直接执行 load 命令就搞进去了,哪有那么麻烦。但是数据源可能有多了,mysql/oracle/hbase/hdfs 按照笛卡尔积的形式,这样搞要搞死程序员了。这个时候 datax(已经开源)生现了,能够实现异构数据源的导入和导由,采用插件的形式设计,能够支持未来的数据源。如果需要导数据,配置一下 datax 的 xml 文件或者在 web 页面上点击下就可以实现了。7、离线分析有时间差,实时的话怎么搞呢?要构建实时的分析系统,其实在结果数据由来之前,架构和离线是截然不同的。数据时流动的,如果在大并发海量数据流动过程中,进行自己的业务分析呢?这里其实说简

7、单也简单,说复杂也复杂。目前我接触过的,方案是这样的,业务数据在写入数据库的时候,这里的数据库 mysql,在数据库的机器上安装一个程序,类似 JMS的系统,用于监听 binlog 的变更,收到日志信息,将日志信息转换为具体的数据,然后以消息的形式发送由来。这个时候实现了解耦,这样的处理并不影响正常的业务流程。这个时候需要有个 Storm 集群,storm 集群干啥事情呢?就一件事情,分析数据,这个集群来接收刚才提到的 JMS 系统发送由来的消息,然后按照指定的规则进行逻辑合并等计算,把计算的结果保存在数据库中, 这样的话, 流动的数据就可以过一遍筛子了。 8、分析的结果数据特别大,在线请求这

8、些结果数据数据扛不住了,咋搞?一般的结果数据,数据量没有那么大,也就几十万的样子,这样的数据级别,对于 mysql 这样的数据库没有任何压力,但是这个数据量如果增加到千万或者亿级别,同时有复杂的 SQL 查询,这个时候 mysql肯定就扛不住了。这个时候,可能需要构建索引(例如通过 lucene来对于要检索的字段添加索引),或者用分布式的内存服务器来完成查询。总之,两套思路,一个是用文件索引的形式,说白来就是空间换时间,另外一种是用内存,就是用更快的存储来抗请求。9、在线的数据库,除了 mysql、oracle 之外,还有其他选择不?其实目前大家的思维定势,往往第一个选择就是oracle 或者

9、 mysql,其实完全可以根据场景来进行选择,mysql 和oracle 是传统的关系型数据库,目前 nosql 类的数据库也很多,例如 HBase 就是其中一个重要的代表。如果数据离散分布比较强,且根据特定的 key 来查询,这个时候 HBase 其实是一个不错的选择。10、空间的数据怎么分析上面的分析大都是统计维度的,其实最简单的描述就是求和或者平均值等,这个时候问题来了,大数据量的空间数据如何分析呢?对于我们电子商务而言,空间数据可能就是海量的收货地址数据了。需要做分析,第一步就是先要把经纬度添加到数据中(如果添加经纬度,这个可以搞 http 的请求来通过地图服务提供商来或者,或者是根据

10、测绘公司的基础数据来进行文本切割分析),之后空间数据是二维的,但是我们常见的代数是一维的,这个时候一个重要的算法由现了,geohash 算法,一种将经纬度数据转换为一个可比较,可排序的字符串的算法。然后,这样就可以再空间距离方面进行分析了,例如远近,例如方圆周边等数据的分析。11、上面这些仅仅是统计,如果想搞算法或者挖掘之类的,怎么搞呢上述的分析,大多数是统计分析,这个时候如果想高一点高级的,例如添加一个算法,咋搞呢?其他复杂的算法我没咋接触过。将拿一个我练过手的算法来讲吧。逻辑回归,如果样本数据量不是很大,可以采用 weka 来做了个回归,获得一个表达式,然后在线上系统中应用这个表达式,这种类似的表达式获取对于实时性要求不是很高, 所以公式每天跑一次就行了。如果数据量比较大,单机的 weka 无法满足需求了,可以将 weka 的 jar 包集成在系统中分析,当然也可以通过 hadoop 中的 mahout 来进行离线分析,获取这个表达式。12、我就是想离线分析数据,但是受不了 hive 或者 hadoop 的速度,咋搞其实搞过一段时间 hadoop 的人肯定有一点不爽,就是离线分析的速度太慢了,可能需要等很久,这个时候 spark由现了,他和 hadoop 类似,不过由于是内存中计算,所以速度快了很多,底层可以介入 HDFS 的文件系统,具体我没有使用过,但是公司内部一个团队目

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论