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

下载本文档

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

文档简介

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

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

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

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

5、QL 一样了,按照逻 辑编写 hive SQL ,然后控制台执行。可能最大的感觉是,数 据库的 sql 很快就能有结果,但是 hive 的,即使很小的一个 数据分析,也需要几分钟时间。构建 hive ,需要在 hadoop 的集群上,原理很简单,就是把文件构建成表的形式(有一 个数据库或者内存数据库维护表的 schema 信息),之后提交 写好的 hive sql 的时候, hadoop 集群里面的程序把 hive 脚本 转换成对应的 mapreduce 程序执行。这个时候,做离线的数 据分析简单写脚本就行了,不用再搞 java 代码,然后上传执 行了。 6、数据产生的结果,怎么搞到线上提供服

6、务的数据 库中呢?这个时候分析的结果有了,可能是一个很宽很长的 excel 表格,需要导入到线上的数据库中, 可能你想到了, 如 果我的数据库是 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、另外一种是用内存,就是用 更快的存储来抗请求。 9、在线的数据库, 除了 mysql、oracle 之外,还有其他选择不?其实目前大家的思维定势,往往第 一个选择就是 oracle 或者 mysql ,其实完全可以根据场景来 进行选择, mysql 和 oracle 是传统的关系型数据库, 目前 nosql 类的数据库也很多,例如 HBase 就是其中一个重要的代表。如果数据离散分布比较强,且根据特定的key 来查询,这个时候 HBase 其实是一个不错的选择。 10、空间的数据怎么分 析上面的分析大都是统计维度的,其实最简单的描述就是求 和或者平均值等,这个时候问题来了,大数据量的空间数据

10、如何分析呢?对于我们电子商务而言,空间数据可能就是海 量的收货地址数据了。需要做分析,第一步就是先要把经纬 度添加到数据中(如果添加经纬度,这个可以搞 http 的请求 来通过地图服务提供商来或者,或者是根据测绘公司的基础 数据来进行文本切割分析) ,之后空间数据是二维的,但是 我们常见的代数是一维的,这个时候一个重要的算法出现 了,geohash算法,一种将经纬度数据转换为一个可比较, 可排序的字符串的算法。然后,这样就可以再空间距离方面 进行分析了,例如远近,例如方圆周边等数据的分析。11、上面这些仅仅是统计,如果想搞算法或者挖掘之类的,怎么 搞呢上述的分析,大多数是统计分析,这个时候如果

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

提交评论