导航:首页 > 网络数据 > 大数据落盘

大数据落盘

发布时间:2023-05-10 14:52:55

1. 大数据发展遇到的困境

大数据的理念已经被追捧多年,但是还远未达到人们想象的完全实用的程度。大数据的发展受阻主要表现在以下几个方面:

1.数据基础的缺失

大数据发展的前提条件是要有丰富的数据源,对于制造业,IT行业数据化程度比较高,虽然缺少资源共享和信息交换,但至少可以在公司内部探索和尝试。

但对于教育,医疗行业数据化程度还是远远落后于大数据时代的需求。单从患者的角度考虑,自己在各个医院的病例和居家检测的医学数据。如果将这些数据利用起来,就会遇到数据源不算,数据格式不统一,隐私问题等等。

2.数据孤岛之踵

不同的数据源独立存在,不能够互相共享,形成了一个个数据孤岛。

政府部门缺乏数据开放的动力,由于其掌握的数据有一定的敏感性而趋于保守态度。比如税务部门的个人纳税信息会涉及到个人隐私,公安部门的监控信息更是涉及到个人的人身安全问题。

各大企业不会随便开放自身有价值的数据,因为它有巨大的商业价值,也关系到企业的生死存亡。比如搜索引擎,谷歌的搜寻效果比其他的好,其实他们的技术差别不大。真正的差异是谷歌的数据量大,能够找到最佳的搜索策略。而其他的搜索引擎则相反,从而造成恶性循环。

即使没有商业竞争,企业也会尽量独占数据。比如航空公司的航班晚点,他不会提前通知,而会出于商业利益选择在乘客登记结束后广播通知。

3.难以突破创新的瓶颈

对于相应行业数据垄断的大企业,利用自身垄断地位阻碍创新使垄断地位更加坚固。搜索引擎就是一个很好的案例,还有某互联网公司利用资源优势模仿竞争对手的创新产品,并且挤垮对手。

4.个人隐私

个人信息越来越多的被别人掌握,我们既不能阻止,也不知道会产生怎样的后果。一方面,我们的虚拟世界和实际生活轨迹可以通过大数据洞察一切,预测我们的行为。另一方面,作为数据的主人,却不知道数据如何被记录,流向哪里,被谁利用,这个过程我们一无所知。

大数据的发展需要解决个人隐私问题。一方面不能被无限制的使用,每个人都有对个人隐私有知情权,拒绝的权利。另一方面需要将个人隐私数据找到安全,可靠的方法共享,这样大数据才能够发展。

5.其他方面

数据的泛滥,盲目的崇拜等

2. 一般大家都会选择哪款 SDS 一体机

建议客户选择SDS的时候,首先需要问一下自己两个问题:1、主要应用场景是什么?2、最关注的前三位的技术指标是什么?而且还要清楚SDS发展在什么阶段(目前SDS还处在社会主义的初级阶段),把预期和现实拉得近一些,有些过高的要求在这个阶段SDS还不能提供。

关于SDS技术评价通常包括以下7个维度:可靠性、稳定性、扩展性、功能、性能、易用性、兼容性。

针对SDS块存储前三位技术指标维度为:

三大应用场景都把可靠性和稳定性排在了前两位,之所以这样排列因为存储是IT系统的基石。所谓的可靠性就是局部故障不会导致数据丢失和业务中断,这一点理所应当排在第一位;稳定性是指不会因为局部故障造成性能大幅抖动,给业务响应造成影响,比如说看个小电影中途老卡谁受得了。

说到这有人会问,这两点对于传统阵列是必须和默认的要求?我想说,传统阵列都是昂贵、专用的硬件堆起来,发生硬件故障的概率很低,而SDS大都部署在廉价的标准x86服务器上,x86服务器发生硬件故障的概率要高很多;并且SDS都是分布式系统,要管理几十台、乃至成千上万台x86服务器上,这样发生硬件故障的概率会呈数量级的上升。如何保证大规模分布式系统的可靠性和稳定性也正是SDS首要解决的难点。

Amazon的S3系统由上百万台服务器组成,每分钟都会有很多设备下线和上线,能保证这样大规模集群的可靠性和稳定性,应该没几个厂家有这样的技术吧?

另外还别忘了,SDS还处在“社会主义初级阶段”并不是拿出来一个厂家就能保证几千台服务器的SDS系统可靠和稳定的。

VSI和VDI环境通常规模很大,而且规模增长的速度也较快,所以把扩展性放在了第三位。对于数据库应用,性能是毋容置疑非常重要的一个指标,所以排在了第三位。

眼见未必为实,测试中的那些“猫腻”

终于想清楚我要的SDS长什么样了,忽然又想起一件大事“谁家的产品能达到我的要求呢?”

一个最直接的办法就是拿测试来说吧(测试还是蛮麻烦的一件事,准备测试环境、编写测试规范、查看测试结果……)。或许还有一个偷懒的办法,就是“你们有和我的需求差不多的案例吗?我去问问那家企业用的咋样啊”,但耳听为虚眼见为实,听一面之词总是不踏实。

相比之下测试是一个较为让人放心的办法,但如果你不熟悉SDS的水,同样有些坑你也发现不了,嘿嘿。

好了,下面这一段就是从测试和技术构架角度帮助客户判断关键技术指标优劣。

1、B域、C域,1/3节点损坏和RTO为0
可靠性在SDS上主要体现在两个方面,当集群中磁盘或节点发生故障时,数据会不会丢失?业务会不会中断?中断的时长是多少?

这里有两个指标需要关注:1、容错度,2、故障恢复时间。

先说一下容错度这个指标。

因为主流的SDS都采用副本技术,以三副本为例,丢失1份数据,应该还有2份数据存在,数据不会丢,也就是容错度为1/3个节点。但如果超过1/3的节点同时down机,集群还能工作吗?这个不一定所有厂家都能做到。

很多SDS的容错域都是提前配置好的。以3副本9个节点为例,通常会配置3个容错域ABC、每个容错域各3个节点,每个容错域保存独立的副本数据。例如当以一个容错域A的3台机器都故障时,还有两2个副本存在,数据不会丢失,业务照常运行,这就是通常所说的能容忍1/3节点宕机。这样的要求大多数厂家都能做到,但如果同时B域或者C域也有机器down机呢?这时候多半会出现两副本都丢失情况,系统异常了。

故障恢复时间这个指标也很关键。当系统中发生节点宕机,故障恢复的时间当然越快越好了,最高的要求是故障恢复时间等于0。要实现这个指标很不容易,因为当SDS系统中节点发生故障时,要恢复这个故障,需要做很多事:第一步,发现这个故障;第二步,选出一个节点接替故障节点,并进行数据重构;第三步,重新刷新寻址空间,让客户机能获取数据位置的变化。每一步都需要时间花费,特别对大规模集群来讲,想把故障恢复时间控制得很小更是难上加难。宣称故障恢复时间为零的SDS厂家并不多。

所以故障恢复时间的数量级是衡量一个SDS可靠性等级的一个非常重要的因子。用户可以根据前端业务对故障恢复时间的敏感程度,设立相应的要求标准。

2、Ceph性能抖动的问题
对于SDS来讲,它的稳定性主要关注点在:当系统发生磁盘/节点故障,恢复数据而产生数据迁移时,前端的性能表现是否稳定。

在前面可靠性段落中谈到了,SDS故障恢复有三个步骤,每一步处理不好都会影响性能表现。特别是数据重构和重新寻址这两个环节,会对性能稳定性造成很大的影响。

例如著名的开源产品Ceph,不止一个客户反映当系统中出现节点宕机的情况下,性能下降和波动很厉害,对业务影响很大。只所以出现这个问题首先是和它元数据管理和寻址的方式(Crush算法)有关,即在节点动荡时,元数据(其实是ceph内部保存的资源列表)发生变化,从而导致数据的地址发生变化,最终导致大量的没有必要的数据迁移,规模越大,这个问题暴露的越明显。其次是它数据迁移采用整盘拷贝的方式,会有无效迁移导致的网络带宽的拥挤。

还有一个坑透露一下,有些SDS系统在拔盘或者宕节点时,可以不发生数据重构,当磁盘或者节点重新上线或归位时才重构。因此,稳定性测试时最好观察一下,磁盘或者节点归位后的表现。甚至建议,用频繁的节点上/下线来测试它的稳定性,因为节点抖动还是会时常发生的。

3、VSAN的局限
扩展性很难测试,因为你要准备几百台、上千台的服务器环境是不可能,除非你是土豪,那怎么办?没办法,看构架吧。市场上主流SDS分为有中央元数据管理节点的非对称构架和无中央管理节点的全对称构架两大类,前者相比后者扩展性受限。简单的理解就是“非对称构架”中好比有个指挥官,一个指挥官能管的人比较有限的。“全对称构架”中是没有指挥官的,全凭自觉性,像是一大堆人在干活,一个病了,无需向领导请假,会有另外一个人立马自动接替他的工作。举例证明:VSAN是有中央管理节点的,它官方宣称的单集群支持最大节点数64个;鹏云网络的ZettaStor是无中央节点的,能支持万级的节点数量。因此从具体实例上也能看出,构架决定了其扩展能力。

4、SSD缓冲击穿
目前闪存技术发展得很快,性能比传统磁介质硬盘高了几个数量级,正是因为闪存技术的发展也给SDS造就了可以在性能上PK传统阵列的基础。

如果你很有钱的话完全可以用SSD做主存。但目前SSD价格还较贵,性价比较高的方式是用SSD做缓存,通常一个存储节点上配个几百GB-1TB的SSD做缓存。SSD缓存对性能的贡献在小数据量时会表现的非常好,一旦数据量足够大,SSD被穿透,那就实打实地看落盘(写到硬盘持久化层)的性能表现了。如果你的系统数据量很小,SSD缓存的容量足够你支持业务峰值,那可以多些关注SDS缓存加速的性能表现。如果你的系统数据量很大,那SSD会长时间被穿透,那你就重点一下落盘的性能表现了。

目前SDS厂家在SSD缓存利用效率上,水平都差不太多,没有太多很独到的算法出现。倒是落盘这个环节,因为选择的技术路线不同,表现不一。有的就是差不多发挥原有磁盘的性能,甚至还低;有的利用一些IO算法,把普通磁盘的性能表现提升几倍,像鹏云网络的ZettaStor在落盘时采用了“变随机为半顺序”的IO优化算法,把随机IO裸盘的速度提升了3-5倍。鹏云网络之所以能做这样的IO优化,因为ZettaStor是完全自主开发的。采用开源方案的厂家要实现起来估计会很难,这是要动到其核心文件系统层的。

有些厂家在性能测试时会用很小的卷、很小的数据去测试,看上去IOPS会很高,但真实环境不会是这么小的负载,所以一旦多创建些大卷,进行长时间大数据量的性能测试,SSD被写穿透时,性能立马一落千丈,凤凰变乌鸡了。

不记得那位大咖说过一句话,“不谈延迟的性能测试都是耍流氓”。

看一个系统的延迟小不小,一个是实测,另外从构架上也能看出些端倪。就是看一下它的IO路径是否够短。例如,直接写裸磁盘的总比经过文件系统层转换再写裸磁盘的IO路径短很多吧,这就是为什么Ceph想降低延迟很难的原因所在。众所周知,Ceph的块存储不是直接访问裸磁盘的,而是通过文件系统把裸磁盘转换成块设备给应用的。

3. 移动互联网如何让大数据“落地”,有哪些产品实例

问题补充:“大数据”这件事大家提了很久,可是真正能用好的产品少之又少。移动互联网使得更多、更广的数据不断产生,它是否能真正促使大数据“落地”,变成每个人真正能享受到的服务?下面是来自知乎小伙伴maggie的回答:云计算出现之前,传统的计算机无法处理大量的非结构化数据,云计算使得海量数据的存储和快速分析成为可能,而每个人都拥有的智能终端(手机、电脑、智能设备)以及带宽不断增加的移动通信网络,使得海量数据的收集成为可能。大数据的核心在于“预测”,而云计算使数据从“小样本”转变成有机会对所有可能的数据进行分析,预测将基于 “数据之间的关联性” 而非 “为什么是这样的因果性”,我们只需要按照预测出来的趋势去响应,使用这些结果。比如预测机票价格的走势,并给出可信度,帮助用户来决定什么时间购买机票最省钱。它不用关心为什么机票会有差异,是因为季节性还是因为其他什么原因,它仅仅是预测当前的机票未来一段时间会上涨还是下降。如果机票价格有上涨的趋势,系统就系统用户立即购买机票。而原始的数据可以从机票预订数据库或者行业网站上扒下来。这项预测技术可以用在类似的相关领域。比如宾馆预订,商品购买等。比如通过汽车引擎的散热和振动来预测引擎是否会出现故障。亚马逊的推荐系统是很好的例子:亚马逊从每一个客户身上捕获了大量的数据,历史购买了什么,哪些商品只是浏览却没有购买,浏览停留的时间,哪些商品是合并购买的,它要做的是找到产品之间的关联性,感兴趣的可以去搜索亚马逊推荐引擎的专利。在中国,淘宝、支付宝拥有大量的用户数据,还记得 “淘宝时光机吗“ ?通过数据分析,把毕业- 恋爱- 迁移城市-结婚- 买房- 生子- 买车的人生轨迹串起来,我不敢说有多准,但是的确感动了我们。从数据中挖掘出背后的故事,这是一个非常有意思的关联性数据挖掘尝试。想想也挺可怕的,淘宝是个拥有海量用户数据的平台,每天还有源源不断地从移动终端、电脑上不断增加的数据,如果把这些数据利用起来,不止可以做商品购物推荐,同时还可以对可能的关联性做预测。在零售行业,销售数据的统计分析,可以让供应商监控销售速率、数量、以及存货情况,可以知道什么货物和什么货物摆在一起,放在什么位置销量最好,特定的季节,什么产品销量最高。公共设施领域,不再是随机的巡检,而是针对设施上报的数据以及故障发生的历史数据、环境数据进行分析和预测,集中人力和物力优先检查最有可能出现问题的那些设施,减少整体平均的故障发生率。大数据革命首先要把这些可以获得的数据收集上来,包括未来可能被利用的信息。比如很多应用不管是不是需要位置信息,通常都会问你要位置信息,为未来能做出更多的智能反应做数据储备。保险公司通过车险投保人的历史数据(时间、地点、实际行驶路程)来为车险定价。广告公司可以根据人们的居住地点、要去的地方,提供定制广告,信息汇集起来可能会揭示某种发展趋势。交通服务公司可以通过手机的位置来预测交通情况,和某个地方目前聚集了多少人。最近的 ”棱镜计划“ ,从音视频、图片、邮件、文档以及连接信息中分析个人可能对国家安全造成威胁的行动。大数据可用的领域实在是很多,具体有什么好点子,哪些产品有机会,我觉着还得多去想和研究。总结起来,首先是数据收集,除了利用现有的数据渠道之外,还可能需要改造一些产品形态,使得数据更好地被量化和可被学习。然后是通过云计算来做数据相关性的分析,这里面有大量的算法工作要去做,所以未来算法人才是最具有技术挑战的工种。

4. Spark 处理小文件

不论是Hive还是Spark SQL在使用过程中都可能会遇到小文件过多的问题。小文件过多最直接的表现是任务执行时间长,查看Spark log会发现大量的数据移动的日志。我们可以查看log中展现的日志信息,去对应的路径下查看文件的大小和个数。租敬稿

通过上述命令可以查看文件的个数以及大小。count查看出的文件大小单位是B,需要转换为MB。

在spark官方的推荐文档中,parquet格式的文件推荐大小是128MB,小于该大小的均可以称之为小文件,在实际的工作,往往小文件的大小仅仅为几KB,表现为,可能文件大小为几百MB,但是文件个数可能到达了几十万个。一般来说,我们可以通过简单相除获得文件的平均大小,如果文件数目不多,我们也可以通过下述命令获得每个文件的大小。

1.任务执行时间长

2.真实的文件大小独占一个数据存储块,存放到DataNode节点中。同时 DataNode一般默认存三份副本,以保障数据安全。同时该文件所存放的位置也写入到NameNode的内存中,如果有Secondary NameNode高可用节点,也可同时复制一份过去。NameNode的内存数据将会存放到硬盘中,如果HDFS发生重弊孝启,将产生较长时间的元数据从硬盘读到内存的过程。

3.不论在Hive还是在Spark中,每一个存储块都对应一个Map程序,一个Map呈现就需要一个JVM,启动一个JVM去读取或者写小文件是吃力不讨好的行为。在实际的生产中,为了更好的管理集群资源,一般会要求程序执行时限制Executor数量和每个Executor的核心数量,需要频繁创建Executor来读取写入。

5.影响磁盘寻址时间

小文件合并,本质上就是通过某种操作,将一系列小文件合并成大文件。我们知道,以MapRece为代表的大数据系统,都习惯用K-V键值对的形式来处理文件,最后文件落盘,也是一个rece对应一个输出文件。所以直观上,我们可以减少rece数量,达到减少文件数量的目的。

从Map到Rece需要一个Shuffle过程,所以我们将小文件合并理解为通过一个Shuffle,合并小文件成一个大文件。基于这样的思想,我们的策略可以稿耐分为两类:一类是原来的计算已经有Shuffle了,那么我们可以认为控制输出文件的数量;二类是强制触发Shuffle,进行小文件合并。

1-设置参数 (一般用于Hive)

2-distribute by rand()

往动态分区插入数据时,在已经写好的SQL末尾加上distribute by rand()

该算子只是起到打散的效果,但是我们还要设置文件的大小,以免打散后仍然有小文件。

表示每个rece的大小,Hive可以数据总量,得到rece个数,假设hive认为会有10个rece,那么,这里rand()则会为 x % 10

3-group by

我们知道,group by算子会触发Shuffle,因此只要我们设置好Shuffle时的文件个数就好,在Spark SQL中,我们可以设置partition个数,因为一个partition会对应一个文件。

上述的操作,会触发shuffle,因此我们再设置partition个数。

则表示,shuffle后,只会产生10个partition.

4-repartition()

5-coalesce()

需要注意的是,4和5都是spark 2.4以及以后才会支持的。

5. 数据多的时候为什么要使用redis而不用mysql

通常来说,当数据多、并发量大的时候,架构中可以引入Redis,帮助提升架构的整体性能,减少Mysql(或其他数据库)的压力,但不是使用Redis,就不用MySQL。

因为Redis的性能十分优越,可以支持每秒十几万此的读/写操作,并孙唯高且它还支持持久化、集群部署、分布式、主从同步等,Redis在高并发的场景下数据的安全和一致性,所以它经常用于两个场景:

缓存

判断数据是否适合缓存到Redis中,可以从几个方面考虑: 会经常查询么?命中率如何?写操作多么?数据大小?

我们经常采用这样的方式将数据刷到Redis中:查询的请求过来,现在Redis中查询,如果查询不到,就查询数据库拿到数据,再放到缓存中,这样第二次相同的查询请求过来,就可以直接在Redis中拿到数据;不过要注意【缓存穿透】的问题。

缓存的刷新会比较复杂,通常是修改完数据库之后,还需要对Redis中的数据进行操作;代码很简单,但是需要保证这两步为同一事务,或最终的事务一致性。

高速读写

常见的就是计数器,比如一篇文章的阅读量,不可能每一次阅读就在数据库里面update一次。

高并发的场景很适合使用Redis,比如双11秒杀,库存一共就一千件,到了秒杀的时间,通常会在极为短暂的时间内,有数万级的请求达到服务器,如果使用数据库的话,很可能在这一瞬间造成数据库的崩溃,所以通常会使用Redis(秒杀的场景会比较复杂,Redis只是其中之一,例如如果请求超过某个数量的时候,多余的请求就会被限流)。

这种高并发的场景,是当请求达到服务器的时候,直接山或在Redis上读写,请求不会访问到数据库;程序会在合适的时间,比如一千件库存都被秒杀,再将数据批量写到数据库中。


所以通常来说,在必要的时候引入Redis,可以减少MySQL(或其他)数据库的压力,两者不是替代的关系 。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

Redis和MySQL的应用场景是不同的。

通常来说,没有说用Redis就不用MySQL的这种情况。

因为Redis是一种非关系型数据库(NoSQL),而MySQL是一种关系型数据库。

和Redis同类的数据库还有MongoDB和Memchache(其实并没有持久化数据)

那关系型数据库现在常用的一般有MySQL,SQL Server,Oracle。

我们先来了解一下关系型数据库和非关系型数据库的区别吧。

1.存储方式

关系型数据库是表格式的,因此存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是大块的组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。

2.存储结构

关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这一点对数据建模至关重要,虽然预定义结构带来了可靠性和稳定性,但是修改这些数据比较困难。而Nosql数据库基于动态结构,使用与非结构化数据。因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。

3.存储规范

关系型数据库的数据存储为了更高的规范性,把数据分割为最小的关系表以避免重复,获得精简的空间利用。虽然管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点麻烦。而Nosql数据存储在平面数据集中,数据经常可能会重复。单个数据库很少被分隔开,而是存储成了一个整体,这样整块数据更加便于读写

4.存储扩展

这可能是两者之间最大的区别,关系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机。因为数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很大的扩展空间,但是最终会达到纵向扩展的上限。而Nosql数据库是横向扩展的,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库则尺服务器来分担负载。

5.查询方式

关系型数据库通过结构化查询语言来操作数据库(就是我们通常说的SQL)。SQL支持数据库CURD操作的功能非常强大,是业界的标准用法。而Nosql查询以块为单元操作数据,使用的是非结构化查询语言(UnQl),它是没有标准的。关系型数据库表中主键的概念对应Nosql中存储文档的ID。关系型数据库使用预定义优化方式(比如索引)来加快查询操作,而Nosql更简单更精确的数据访问模式。

6.事务

关系型数据库遵循ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)),而Nosql数据库遵循BASE原则(基本可用(Basically Availble)、软/柔性事务(Soft-state )、最终一致性(Eventual Consistency))。由于关系型数据库的数据强一致性,所以对事务的支持很好。关系型数据库支持对事务原子性细粒度控制,并且易于回滚事务。而Nosql数据库是在CAP(一致性、可用性、分区容忍度)中任选两项,因为基于节点的分布式系统中,很难全部满足,所以对事务的支持不是很好,虽然也可以使用事务,但是并不是Nosql的闪光点。

7.性能

关系型数据库为了维护数据的一致性付出了巨大的代价,读写性能比较差。在面对高并发读写性能非常差,面对海量数据的时候效率非常低。而Nosql存储的格式都是key-value类型的,并且存储在内存中,非常容易存储,而且对于数据的 一致性是 弱要求。Nosql无需sql的解析,提高了读写性能。

8.授权方式

大多数的关系型数据库都是付费的并且价格昂贵,成本较大(MySQL是开源的,所以应用的场景最多),而Nosql数据库通常都是开源的。

所以,在实际的应用环境中,我们一般会使用MySQL存储我们的业务过程中的数据,因为这些数据之间的关系比较复杂,我们常常会需要在查询一个表的数据时候,将其他关系表的数据查询出来,例如,查询某个用户的订单,那至少是需要用户表和订单表的数据。

查询某个商品的销售数据,那可能就会需要用户表,订单表,订单明细表,商品表等等。

而在这样的使用场景中,我们使用Redis来存储的话,也就是KeyValue形式存储的话,其实并不能满足我们的需要。

即使Redis的读取效率再高,我们也没法用。

但,对于某些没有关联少,且需要高频率读写,我们使用Redis就能够很好的提高整个体统的并发能力。

例如商品的库存信息,我们虽然在MySQL中会有这样的字段,但是我们并不想MySQL的数据库被高频的读写,因为使用这样会导致我的商品表或者库存表IO非常高,从而影响整个体统的效率。

所以,对于这样的数据,且有没有什么复杂逻辑关系(就只是隶属于SKU)的数据,我们就可以放在Redis里面,下单直接在Redis中减掉库存,这样,我们的订单的并发能力就能够提高了。

个人觉得应该站出来更正一下,相反的数据量大,更不应该用redis。


为什么?

因为redis是内存型数据库啊,是放在内存里的。

设想一下,假如你的电脑100G的资料,都用redis来存储,那么你需要100G以上的内存!

使用场景

Redis最明显的用例之一是将其用作缓存。只是保存热数据,或者具有过期的cache。

例如facebook,使用Memcached来作为其会话缓存。



总之,没有见过哪个大公司数据量大了,换掉mysql用redis的。


题主你错了,不是用redis代替MySQL,而是引入redis来优化。

BAT里越来越多的项目组已经采用了redis+MySQL的架构来开发平台工具

如题主所说,当数据多的时候,MySQL的查询效率会大打折扣。我们通常默认如果查询的字段包含索引的话,返回是毫秒级别的。但是在实际工作中,我曾经遇到过一张包含10个字段的表,1800万+条数据,当某种场景下,我们不得不根据一个未加索引的字段进行精确查询的时候,单条sql语句的执行时长有时能够达到2min以上,就更别提如果用like这种模糊查询的话,其效率将会多么低下。

我们最开始是希望能够通过增加索引的方式解决,但是面对千万级别的数据量,我们也不敢贸然加索引,因为一旦数据库hang住,期间的所有数据库写入请求都会被放到等待队列中,如果请求是通过http请求发过来的,很有可能导致服务发生分钟级别的超时不响应。

经过一番调研,最终敲定的解决方案是引入redis作为缓存。redis具有运行效率高,数据查询速度快,支持多种存储类型以及事务等优势,我们把经常读取,而不经常改动的数据放入redis中,服务器读取这类数据的时候时候,直接与redis通信,极大的缓解了MySQL的压力。

然而,我在上面也说了,是redis+MySQL结合的方式,而不是替代。原因就是redis虽然读写很快,但是不适合做数据持久层,主要原因是使用redis做数据落盘是要以效率作为代价的,即每隔制定的时间,redis就要去进行数据备份/落盘,这对于单线程的它来说,势必会因“分心”而影响效率,结果得不偿失。

楼主你好,首先纠正下,数据多并不是一定就用Redis,Redis归属于NoSQL数据库中,其特点拥有高性能读写数据速度,主要解决业务效率瓶颈。下面就详细说下Redis的相比MySQL优点。( 关于Redis详细了解参见我近期文章:https://www.toutiao.com/i6543810796214813187/ )

读写异常快

Redis非常快,每秒可执行大约10万次的读写速度。

丰富的数据类型

Redis支持丰富的数据类型,有二进制字符串、列表、集合、排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。

原子性

Redis的所有操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。

丰富实用工具 支持异机主从复制

Redis支持主从复制的配置,它可以实现主服务器的完全拷贝。

以上为开发者青睐Redis的主要几个可取之处。但是,请注意实际生产环境中企业都是结合Redis和MySQL的特定进行不同应用场景的取舍。 如缓存——热数据、计数器、消息队列(与ActiveMQ,RocketMQ等工具类似)、位操作(大数据处理)、分布式锁与单线程机制、最新列表(如新闻列表页面最新的新闻列表)以及排行榜等等 可以看见Redis大显身手的场景。可是对于严谨的数据准确度和复杂的关系型应用MySQL等关系型数据库依然不可替。

web应用中一般采用MySQL+Redis的方式,web应用每次先访问Redis,如果没有找到数据,才去访问MySQL。

本质区别

1、mysql:数据放在磁盘 redis:数据放在内存。

首先要知道mysql存储在磁盘里,redis存储在内存里,redis既可以用来做持久存储,也可以做缓存,而目前大多数公司的存储都是mysql + redis,mysql作为主存储,redis作为辅助存储被用作缓存,加快访问读取的速度,提高性能。

使用场景区别

1、mysql支持sql查询,可以实现一些关联的查询以及统计;

2、redis对内存要求比较高,在有限的条件下不能把所有数据都放在redis;

3、mysql偏向于存数据,redis偏向于快速取数据,但redis查询复杂的表关系时不如mysql,所以可以把热门的数据放redis,mysql存基本数据。

mysql的运行机制

mysql作为持久化存储的关系型数据库,相对薄弱的地方在于每次请求访问数据库时,都存在着I/O操作,如果反复频繁的访问数据库。第一:会在反复链接数据库上花费大量时间,从而导致运行效率过慢;第二:反复地访问数据库也会导致数据库的负载过高,那么此时缓存的概念就衍生了出来。

Redis持久化

由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时mp到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。

redis是放在内存的~!

数据量多少绝对不是选择redis和mysql的准则,因为无论是mysql和redis都可以集群扩展,约束它们的只是硬件(即你有没有那么多钱搭建上千个组成的集群),我个人觉得数据读取的快慢可能是选择的标准之一,另外工作中往往是两者同是使用,因为mysql存储在硬盘,做持久化存储,而redis存储在内存中做缓存提升效率。

关系型数据库是必不可少的,因为只有关系型数据库才能提供给你各种各样的查询方式。如果有一系列的数据会频繁的查询,那么就用redis进行非持久化的存储,以供查询使用,是解决并发性能问题的其中一个手段

6. 应用Spark技术,SoData数据机器人实现快速、通用数据治理

Spark是处理海量数据的歼毕凳快速通用引擎。作为大数据处理技术,Spark经常会被人们拿来与Hadoop比较。

Hadoop已经成了大数据技术的事实标准,Hadoop MapRece也非常适合于对大规模数据集合进行批处理操作,但是其本身还存在一些缺陷。具体表现在:

1、Hadoop MapRee的表达能力有限。所有计算都需要转换成Map和 Rece两个操作,不能适用于所有场景,对于复杂的数据处理过程难以描述。

2、磁盘I/O开销大。Hadoop MapRece要求每个步骤间的数据数巧序列化到磁盘,所以I/O成本很高,导致交互分析和迭代算法开销很大,而几乎所有的最优化和机器学习都是迭代的。所以,Hadoop MapRece不适合于交互分析和机器学习。

3、计算延迟高。如果想要完成比较复杂的工作,就必须将一系列的MapRece作业串联起来然后顺序执行这些作业。每一个作业都是高时延的,而且只有在前一个作业完成之后下一个作业才能开始启动。因此,Hadoop MapRece不能胜任比较复杂的、多阶段的计算服务。

Spark借鉴Hadoop MapRece技术发展而来,继承了其分布式并行计算的优点的同时,改进了MapRece的许多缺陷。具体优势如下:

1、Spark提供广泛的数据集操作类型(20+种),支持Java,Python和Scala API,支持交互式的Python和Scala的shell。比Hadoop更加通用。

2、Spark提供Cache机制来支持需要反复迭代的计算或者多次数据共享,减少数据读取的I/O开销。Spark使用内存缓存来提升性能,因此进行交互式分析也足够快速,缓存同时提升了迭代算法的性能,这使得Spark非常适合数据理论任务,特别是机器学习。

3、Spark提供了内存计算,把中间结果放到内存中,带来了更高的迭代运算效率。通过支持有向无环图(DAG)的分布式并行计算的编程框架,减少迭代过程中数据需要写入磁盘的需求,提高处理效率。

此外,Spark还能与Hadoop无缝衔接,Spark可以使用YARN作为它的集群管理器,可以读取HDFS、HBase等一切Hadoop的数据。

Spark在最近几年发展迅速,相较于其他大数据平台或框架,Spark的代码库最为活跃。截止目前,最新发布的版本为Spark3.3.0。

也有许多数据治理工具,为了实现实时、通用的数据治理而采用Spark技术。以飞算推出的SoData数据机器人为例,是一套实时+批次、批流一体、高效的数据开发治理工具,能够帮助企业快速实现数据应用。

相较于传统数据加工流程,SoData数据机器人实现了流批一体数据同步机制,基氏旅于Spark和Flink框架进行深度二次开发,实现数据采集、集成、转换、装载、加工、落盘全流程实时+批次处理的极致体验,秒级延迟,稳定高效平均延迟5-10s,快速响应企业数据应用需求。

除了具备Spark数据处理的优势,SoData数据机器人的Spark体系还支持从各种数据源执行SQL生成Spark字典表,边开发边调试的Spark-SQL开发,支持任意结果集输出到各类数据库。可视化的运维、开发方式也能在极大降低数据开发、治理、应用门槛的同时,提升效率。

在某综合医院的信息化建设中,SoData数据机器人曾在5分钟内完成原本需要8-9小时才能完成的数据迁移工作。

目前,SoData数据机器人已应用于金融、医疗、能源等多个行业,将持续通过创新技术,为各行业组织机构带来更优质、快速的数据开发、治理、应用体验。

7. 闲话国内大数据发展简史&产业化落地

文·blogchong

之所以想要说一说这个话题,是因为下午在技术群中不经意间,就类似话题进行了比较剧烈的脑暴讨论。

讨论范围包括了互联网公开数据的挖掘、价值变现、数据获取的合法性以及数据产业落地等相关方向。

当时就一直在思考这个问题,后续完了自己又想了几遍,发现确实有所得,也挺多东西想表达一下的。

大数据是在2009年开始相对比较正式引入国内的,基本上与Hadoop的“入侵”国内同步。

但在那时其实并没有实际落地的东西,除了一些大公司在试探性使用,直到2012-2013年,国外已经完成一轮“探险”,国内才陆续开始思考大数据如何落地的事了。

确实是这样的,国内在新技术领域上,一向落后于国外半拍,而我也恰恰也是在那个时候“入坑”的。

那个时候其实很多公司企业(除了当时BAT内部使用的案例),也是在尝试性的涉足大数据领域,一边追逐技术的完善,一边在探索大数据与实际业务的结合点。

直到2014年,算是大数据在国内的一个爆发点,正式的转折点。

首先,以Hadoop为代表的生态趋于成熟,甚至结合内存处理领域、数据实时处理领域,已经形成了一套完整的大数据平台技术解决方案。

其次,已经越来越公司结束了探索性实验,用实际的成果尝到了大数据这种处理模式的好处,已经形成了越来越多的实际可参考的良性案例。

当然,最重要的是确实存在实际的规模数据处理的需求。其实这个需求一直存在,只是很多时候没有找到合适的契机爆发出来。

也就是从2014开始,大数据的人才市场需求在急剧扩增,很多其他IT领域开发人员纷纷转型到数据行业,其中以逐渐没落的传统IT行业为代表。

有人才市场需求,进一步促进了大数据培训市场的发展,各种大数据培训机构如雨后春笋般的出现。

其实这也是没办法的事,因为当时还没有哪个高校开设有大数据相关的课程呢。

当然,这波浪潮同样卷到了学术界,部分高校也意识到了这个技术大势,陆续有不少高校开始开设大数据相关的专业课程。

2015年,随着互联网的发展,市场各种互联网应用需求的饱和,导致了流量红利的消失,让很多企业公司不得不考虑通过数据来提升效率以及推进用户体验,例如推荐系统、个性化服务等。

资本市场从2014-2015年逐渐介入,进一步促进各大互联网企业公司向数据化转型,使得大数据这个领域进一步达到高潮。

我们知道,资本市场算是迎来半个寒冬,流量红利的消失,o2o在15年底都死的差不多了,16年让资本市场变得更谨慎。

但是,就算是这样,国内很多以大数据为技术驱动的公司依然拿了不少融资,包括神策、诸葛IO、GrowingIO等第三方数据分析公司,明略数据等这种针对于服务偏传统行业的数据公司,甚至如DataEye类似垂直领域的数据分析公司都活的好好的。

同时,在国家政策方面,2016年可谓是大数据的国家政策元年,各种国家政策开始偏向大数据。

这意味着,大数据已经从半个风口的状态,过渡到理性、稳健的状态,这是一个良性的状态。

正如上面所说,目前大数据已经逐渐从“潮流”这种略带风险性的标志状态,过渡到稳健、良性发展的状态。

提前“入坑”的童鞋,相信已经享受到“潮流”带来的部分福利,包括比其他普通IT同行们略高的薪酬待遇,以及更多、更自由的选择性等。

好吧,其中也包括我了~~ 哈哈

那么,后续会是一种什么样的情况呢?

首先,数据化依然会是一个不可逆的趋势,在资本以及政策的驱动下,更多的公司会逐渐的进行数据化,甚至包括很多传统IT产业,一样挡不住这个大势。

那么在人才市场需求上的情况呢?个人感觉需求还是在的,因为市场远没有达到饱和,但是福利待遇会有所下降。

这是为什么呢?

2016-2017年,各大高校逐渐会开始投放专业的“正规军”,是的,那些大数据专业的学生们将被正式投放到市场中了。

此外,从2014年到2016年,大数据的培训市场一直在增加的,不管是线上的还是线下的。

这意味着,每年,哦不,应该是每几个月都会有大量的大数据速成工投放到人才需求市场中。

最重要的一点,经过四五年的大浪淘沙,市场已经有一大批“自学成才”的“老司机”可以撑起场面了。

在人才需求以及人才的待遇上,而不是一才难求的现象了,也会逐渐的趋于良性,趋于理性(之前写过一篇大数据招聘乱象的文章,喜欢可以看看 《你们是不是真的很缺大数据工程师?》 )。

所以,如果你从大学刚毕业出来,发现大数据没有传说中那么“香馍馍”,也不要奇怪;而从大数据培训流水线上下来的童鞋们,也需要做好准备,薪水可能无法跟你想象中那样了,翻个几倍之类的。

不过“老司机们”到不用太过于担心,虽然大数据的人才市场趋于日渐饱和,但是“驾龄”足够,“车”开的足够溜的,依然只有那么一小戳人。

你依然是稀缺资源,所以不要怕怕。

你看我就不怕怕,哈哈~~

虽然,这一切看似良好,但是有些东西依然值得我们更进一步的深思。

正如之前在技术群中进行脑暴讨论的那样,这几年大数据虽然市场需求不少,但是依然难以达到产业化的状态。

这里贴一个产业化的概念:产业化是指某种产业在市场经济条件下,以行业需求为导向,以实现效益为目标,依靠专业服务和质量管理,形成的系列化和品牌化的经营方式和组织形式。

目前大数据的实际落地形式大部分都以辅助、加速其他业务为主,起一个催化剂,提升效率,加快速度的作用,鲜有看到以大数据作为独立产业而存在的。

当然也有,比如上面提到的第三方数据分析商、垂直领域的DataEye,以及为企业提供大数据解决方案的明略数据等,也算是以大数据为根深立命而存在的。

但是总体来说,真的不多,而且绝大部分都是以2B的形式存在。我们知道,从格局上来看,2B的产品永远是难以做到2C产品那种真正宏伟规模,改变产业格局的。

所以,从这点来说,虽然你市场需求放在这里,但想真正以大数据为切入点、为立足的根本做点事,其实也没有想象中那么容易。

纠结~~

不过作为大数据领域的半个“老司机”,依然是希望大数据这个技术领域、这个行业,有一天能够形成独立的、推动人类进程的一些东西。

亦如互联网、亦如社交网络、亦如电子商务、亦如移动互联网等!

最近一直有很多新手同行们向我请教大数据方向上的一些事,自己也一直在思考互联网开放数据落地变现、以及大数据产业格局相关的问题。

所以,想的多了,对一些东西还是有一些看法的,藏在心中不吐不快。

也希望,上面闲话里的一些东西能够引起你的一些共鸣,当然反驳也欢迎,欢迎一切与人格无关,与技术有关、与业态有关的探讨。

下次希望有时间,能和大家一起探讨一些关于互联网开放数据落地变现相关的话题,这也是我目前一直想探索的东西,下次如果有所收获再写点 东西吧。

(正文完)

8. 谁能说说华为大数据一体机怎么样

在德国CeBIT(汉诺威消费电子、信息及通信博览会)上,华为发布了大数据一体机,为全球的客户提供更易部署和管理、更高性能和更低TCO的大数据解决方案,帮助客户加速数字化转型。

华为发布FusionCube大数据一体机

此次华为发布的FusionCube大数据一体机,使用了华为专门针对大数据应用优化的FPGA压缩技术,可以使数据的压缩速度从MB/s级别提升到GB/s级别,有效释放CPU,降低落盘IO。通过该技术,有效存储容量可提升250%,同时和传统压缩方案对比,可降低30%的CPU占用率,为客户带来更高价值。另外,华为服务器秉承开放、共赢的理念,与业界大数据软件提供商广泛开展合作,比如华为与Hortonworks建立了合作伙伴关系,加入了其MDS(Modern Data Solutions)伙伴关系项目,为双方更加紧密的合作奠定了基础。FusionCube大数据一体机将帮助客户在大数据应用上提供了一站式的解决方案。

华为IT服务器产品线总裁邱隆表示:“大数据快速的发展,能够给客户的数据带来快速增值变现,华为服务器将大数据定位为重要的战略方向,华为服务器在自身高质量、创新、高性价比的基础上,致力提供一个开放的计算平台,通过和业界主流大数据厂家合作,面向客户提供最佳性价比的大数据解决方案。华为服务器通过与Hortonworks建立伙伴关系,实现了在大数据领域的强强联合,将华为服务器硬件的优势和Hortonworks的大数据平台优势相结合,双方的客户将能从这次合作中受益。通过双方合作将给最终客户提供简单、高效、低TCO的大数据解决方案,帮助用户实现数据的价值。”

9. 大数据要想落地,必备的条件是什么

大数据要想落来地,必须有三个条件:自一是丰富的数据源,二是强大的数据挖掘和数据分析能力,三是建立完善的数据服务产业链,也就是商业模式。商业模式指导着公司如何赚取剩余价值,因此确立公司在产业链和价值链中的位置,至关重要。

10. 如何保证从数据仓库取出的数据质量

一、了解数据仓库的表



在接到一个数据分析的任务时,第一件时间就是找到相关数据的负责人,拿到存储数据的表和文档。一般金融公司会有几个部门:DEV、DE、BI、DS。作为DS的建模人员,去问谁才能获得最准确的信息呢?



这里大部分人会选择问DS内部的同事或者BI,因为都是做数据分析,大家也比较熟悉。但事实上,DS和BI都不是数据质量负责的人;很多时候,数据表的变动他们是不清楚的,询问他们大概率拿到的信息都不能保证权威性。在初步了解一个数据的时候,作为DS,其实最佳的询问对象是DE。因为DE是负责把DEV做的生产数据库的表拉到数据仓库或手,并构建数仓表的负责人,他们对表的结构和数据的变动是最有发言权的。



二、整理表和表之间的逻辑关系



在找到DE的负责人后,需要他们提供数据表对应的文档,然后整理出这些表之间的逻辑关系,一衫毁嫌般数仓表都会有维度表和明细表两大类,常见的套路就是维度表去关联明细表。



三、理解用户数据在数据仓库的落库逻辑



在熟悉了数据表里的字段和表的相互关系后,接下来就需要感受数据在业务逻辑中的流动和落盘。一个数据老鸟在和业务沟通时候,会在脑子里带着表结构去询问业务的SOP。



当业务说用户注册账户,脑子里就要想着在用户维度表增加一行,用户注册的相关信息会被记录在这个维度表里。然后用户填写相关的表格提交信息,就会知道我们收集的用户信息会按SOP流程在规定的时间落盘在用余差户信息表中。其中哪些信息是必须非空的,哪些是可以有缺失的,缺失的时候数据表里是None值还是默认值。



关于我们怎样保证从数据仓库取出的数据质量,青藤小编今天就和您分享到这里了。如果您对大数据工程有浓厚的兴趣,希望这篇文章可以为您提供帮助。如果您还想了解更多关于数据分析师、大数据工程师的技巧及素材等内容,可以点击本站的其他文章进行学习。

阅读全文

与大数据落盘相关的资料

热点内容
python所支持的文件格式 浏览:983
gif87a文件 浏览:782
wordstarter2010下载 浏览:803
苹果百分之一的电量 浏览:651
孔的倒角怎么编程 浏览:139
大家用哪个网站找传奇 浏览:462
怎么用qq绑定微信账号密码错误 浏览:461
word文字横版变竖版 浏览:46
js正则表达式整数 浏览:9
dvd视频文件刻录视频dvd 浏览:550
列举四种linux文件系统命令 浏览:348
海尔网站交互功能有哪些 浏览:85
小米手机切换不同网络 浏览:996
xp系统怎样设置开机密码 浏览:604
上传图片伪装为php执行文件 浏览:20
查看数据库的角色 浏览:291
学的计算机编程怎么用专业术语说 浏览:288
appium启动失败 浏览:902
怎么用编程写逆转数 浏览:942
ps关闭图像文件的快捷键 浏览:465

友情链接