什么是大数据?
“大数据” 作为时下最火热的IT行业的词汇,随之而来的数据仓库、数据安全、数据分析、数据挖掘等等围绕大数据的商业价值的利用逐渐成为行业人士争相追捧的利润焦点。
对于“大数据”(Big data)研究机构Gartner给出了这样的定义。“大数据”是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。“大数据”这个术语最早期的引用可追溯到apache org的开源项目Nutch。当时,大数据用来描述为更新网络搜索索引需要同时进行批量处理或分析的大量数据集。随着谷歌MapReduce和Google File System (GFS)的发布,大数据不再仅用来描述大量的数据,还涵盖了处理数据的速度。----来自百度百科大数据今天之所以妇孺皆知,多半是来自商业的概念炒作。就像是物联网一样,个人感觉物联网的这个概念死的比较快,难道是因为国产的概念么 ?在我看来大数据就是由于数据量指数级增长后,带来的困境和对应一些列的解决方案。举个例子,假如说腾讯每天有5000万用户登陆(实际肯定不止这个数目),每一个用户发10条信息,粗略估算就有5亿条信息需要存储下来,假定每一条数据按照500bit计算,每天需要存储28GB的数据。每一条数据包括N个字段(实际上至少N个字段,这种用户信息的商业价值都是巨大的)。N个字段:时间 操作系统 用户ID ...............................好了,你已经了解什么是日志了,现在的日志就是你在企鹅上发的消息,附加上一些环境因素(时间,地点,还有你的一些基本概况)。suppose 你是一个data engineer(数据工程师)小明,你的组长让你今天下午前统计出今天到底有多少条消息,如果统计不出来就杀之。然而但凡作为一个程序员,在你的字典里面就没有死胡同这几个字,虽然日志很大,你还是要去数数。数数这些该死的日志到底有多少条。孩子们,这些日志存在10多台机器上。小明,用了8个小时终于把问题给解决了,他是这么干的。
1.将分步在10台机器的日志,汇总到一台机器上。由于各种网络原因,和机器硬盘大小,他换了好几台机器,但是不管怎么样,他还是汇总到了一起。2.他把汇总到一起的日志做了一个数数的命令。虽然任务是按时完成的,但是这个时间和过程是折磨人啊,对不对。这才是数数(PV page view),如果组长让他计算UV(unique viewer独立用户个数),我想他一定得至少花两天才行。数据量指数级增长后的困境。最必然的结果是一台机器算不完 ,以前的时候有可能是2G的日志,一台服务器只要不到一个小时就可以扫一遍。现在增加到200G,一台机器扫一次就要N久,这些都是raw data,没有经过清洗里面会有各种各样的错误,想要写一个准确的分析程序就要耗费N久,更别说更高层次的操作了。于是有很多很牛逼的程序员开始写分布式程序,就是自己写一个MPI框架。在分布式程序中,有非常难的一点是容错和故障处理机制,当然这些攻城师日以继夜的想这些东东,最后他们都失败了,要么写程序写死了,要么知难而退了。
解决苦难的一些列方案,这里面最著名的就是google发布的三篇文章<MapReduce><BigTable><GoogleFileSystem>。Hadoop基本上都是由这三篇文章组成的。 Doug Cutting是Hadoop的发起者,Hadoop这个名字是他孩子起的,而且这个项目也是从Nutch迁移过去的,随着D.C加入Yahoo以后,这个项目就是Yahoo开发维护的了,并且开源了。Yahoo也是非常牛逼的公司,无偿捐助并且控制着Hadoop社区。
大数据领域包括很多技术:1. 超高并发程序设计:此项技术是 数据的必备条件。所谓超高并发程序是指能够在规定时间内响应至少10000qps的服务程序。由于每一个公司的设计风格不同,超高并发程序设计的方式也不同。他们首先都会通过一个负载均衡设备(这种设备的功能就是将http request 根据配置文件的要求转发到制定的机器上),然后部署在这台机器上的程序会处理这次请求,处理后返回结果。为什么要在规定的时间内返回? 从用户体验,如果一个内容在用户打开网页后几秒钟内都没有响应,你会继续浏览这个网站么?从 协议角度,如果请求一个服务需要等待几秒的话,那么此服务是不可靠的。服务器程序会根据业务需要记录下对应的日志,这些日志都是用户访问这个服务产生的。用户产生的日志,顾名思义是用户自己行为产生的。例如该用户访问了那些网站,看了那些视频,这些都直接表明了用户的意图,这部分数据十分宝贵是数据挖掘的重要战场。在移动互联网中,用户在一些app上的行为都是先保存在本地,然后在有wifi的时候上传到服务器中,当然也不排除一些无良公司在数据流量下传日志。2.数据处理技术:在这里的数据处理技术都是Hadoop平台的。MapReduce:它是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量编程语言借来的特性。HDFS:全称是Hadoop Distributed File System。HDFS是Hadoop存储文件的系统,非常重要这个以后会详细谈。Hive:这个是数据仓库,你可以标准化查询你想要的东东。非常强大,方便的工具。Spark:一种比MapReduce快10倍的编程模型和计算平台。
页:
[1]