(1)
大数据的发展史上,有一个著名的案例——啤酒与尿布。
“啤酒与尿布”的故事产生于20世纪90年代的美国沃尔玛超市中,沃尔玛的超市管理人员分析销售数据时发现了一个令人难于理解的现象:在某些特定的情况下,“啤酒”与“尿布”两件看上去毫无关系的商品会经常出现在同一个购物篮中,这种独特的销售现象引起了管理人员的注意,经过后续调查发现,这种现象出现在年轻的父亲身上。
在美国有婴儿的家庭中,一般是母亲在家中照看婴儿,年轻的父亲前去超市购买尿布。父亲在购买尿布的同时,往往会顺便为自己购买啤酒,这样就会出现啤酒与尿布这两件看上去不相干的商品经常会出现在同一个购物篮的现象。如果这个年轻的父亲在卖场只能买到两件商品之一,则他很有可能会放弃购物而到另一家商店,直到可以一次同时买到啤酒与尿布为止。沃尔玛发现了这一独特的现象,开始在卖场尝试将啤酒与尿布摆放在相同的区域,让年轻的父亲可以同时找到这两件商品,并很快地完成购物;而沃尔玛超市也可以让这些客户一次购买两件商品、而不是一件,从而获得了很好的商品销售收入,这就是“啤酒与尿布”故事的由来。
尤其,很多计算机科学家获得启示,面对互联网时代的告诉发展和数据量的指数增加,从海量的数据之中发现有用的资源和发现数据之间的各个方面的联系,成了当下获取价值的新途径。
(2)
利用大数据获取我们想要的信息有很多途径,但是
编程能力是基础,对算法的掌握和使用是精髓。
当然,对计算机网络,软件工程,各种IDE环境的熟悉也是必不可少的背景知识的积累,有了这些,才能知道某些专业术语的含义,更好的去实现大数据的算法或者功能。
当先最常用的编程语言主要有java、python、scala、ruby。
算法则是很多种,在基本算法的基础上又有很多改进,但是学好算法的基础是对线性代数的理解和掌握程度。所以很多人说“学好数学者得天下”是有一定道理的。
(3)
大数据要解决的问题其实在上2个章节已经有所阐述,应用面最广的平台就是Hadoop。小编用非专业术语讲解hadoop各个组建要实现的功能:
Hadoop Common:Hadoop体系最底层的一个模块,为Hadoop各子项目提供各种工具,如:配置文件和日志操作等。
HDFS:英文全称为Hadoop Distributed File System,即分布式文件系统。
简单理解就是有很多数据在世界上最大号的设备上都放不下了,然后需要将这些数据切分成好多块,然后去存放。存放的话,就要有一定的存放逻辑,还要有备份,一方数据丢失。存放了以后还要考虑,怎么样在这些机器上快速精准的找到我们当下需要查找的数据。然后这么多数据谁来管理节点(NameNode),万一管理的节点坏了谁来顶替(SecondaryNameNode)通过什么机制来发现管理节点坏了(心跳机制)?
MapReduce:一个分布式海量数据处理的软件框架集计算集群。这个组件主要设涉及的编程和算法,这些内容以后的章节里面会讲到。
Pig :是一个并行计算的高级的数据流语言和执行框架 ,SQL-like语言,是在MapReduce上构建的一种高级查询语言,把一些运算编译进MapReduce模型的Map和Reduce中,并且用户可以定义自己的功能。可以理解为是MapReduce的升级版本。
ZooKeeper:Google的Chubby一个开源的实现。它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。它通过投票机制管理着大数据集群中的所有节点,可以理解为管家的角色,随时监视调控着所有的节点状态和修复。
HBase :基于HDFS,是一个开源的,传统的数据库SQL等都是基于行去存储的,HBase基于列存储模型的可扩展的分布式数据库,支持大型表的存储结构化数据,可以说说专门为大数据准备的。
Hive :类似CloudBase,就是将HBase数据库云化,也可以理解为是大数据生态圈里面的数据仓库,也是基于hadoop分布式计算平台上的提供data warehouse的sql功能的一套软件。使得存储在hadoop里面的海量数据的汇总,即席查询简单化。hive提供了一套QL的查询语言,以sql为基础,使用起来很方便。
Avro :doug cutting主持的RPC项目,主要负责数据的序列化。所谓序列化,就是为了在传输过程中安全,少出错。有点类似Google的protobuf和Facebook的thrift。avro用来做以后hadoop的RPC,使hadoop的RPC模块通信速度更快、数据结构更紧凑。这个组件是为了生态圈之间的组件靠数据沟通起来畅通无阻,精确及时。
Kafka是一种高吞吐量的分布式发布订阅消息系统,就是可以按照编程者的意愿对一些指定的消息进行消息订阅,所谓的消息订阅,其实就是人类在指定的网站上点击鼠标进行动作流的抓取和记录,最终整理成日志的形式。
它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。
Chukwa :一个管理大型分布式系统的数据采集系统 由yahoo贡献。
Mahout :一个可扩展的机器学习和数据挖掘库,就是将机器学习和数据发掘的很多算法封装起来,可以直接调动接口。
(4)
大数据开发工程师主要负责将这些组件进行选择,然后挑选出最合适的实现系统的架构和联系,通过编写代码完成产品经理的需求,实现所有的功能。
大数据算法工程师以及AI 工程师就是在以及有了大数据和大数据生态环境稳态的条件下,利用数据实现高级的功能。