当常规思维转换为计算机技术时,人们很容易迷失,但村长认为知识和技术都是相通的。
大数据技术为什么会出现呢?
当我们学习一项技术的时候,如果搞清它出现的背景,从无到有的发展过程,就更容易掌握它,同时,也不会被一些“昙花一现”的技术所迷惑,有些技术看起来很新很潮,但却因为需求不稳定,技术路线有缺陷而难以为继。
那么大数据技术呢?它并不是什么新需求,处理海量的数据是很久以来就有的需求,人们积累的大量文档和数据,包括历史文献、国家运转产生的数据、企业经营数据、个人生活学习产生的数据等,从这些数据中我们可以掌握规律、查找原因、及时发现问题,但是在没有合适的信息技术出现之前,这些数据难以处理。
【分工合作】
当人们处理繁重任务的时候,最先想到的就是分解任务、分工处理,人类社会就是这样构成的,这是一种通用的思维方法。在处理大数据的时候也是这样,数据存储、处理都采用分布式的方式,保证安全的同时提高效率。
HDFS、TFS:分布式文件系统。
HBASE、OSS:分布式数据库系统。
HIVE:对分布式数据进行提取、转化、加载的工具。
【专人专用】
专用的事情让专门的人去处理,人们在存储数据的时候就采用了这种逻辑。对于文档、关系数据、时序数据都可以采用专门的存储方法,这样可以提高空间利用率、存取效率。人们在处理数据时也是这样,是否要实时处理?能不能异步处理?总是有重复的处理需求吗?需要按时间维度进行统计分析吗?等等,这些都有专门的处理方法。
这些技术常常结合使用,比如分布的存储对象(文档、图片、视频)数据,并行处理时序数据(并行是动态的分布式)。
关系型数据库、对象数据库、时序数据库、Key-Value数据库、内存数据库、列式数据库。
【任务负责人】
当对某一项工作进行分解和分工时,需要一个负责人,这个负责人掌握所有成员的工作状态,接到任务时就按它们现在的状态进行分工,然后再对结果进行合并,期间如果哪个成员工作出了问题,还要对失败的任务重新分配。
那如果这个负责人自己出了问题呢?所以还得给他配一、两个助手,他们随时把掌握的情况进行分享,以便出现问题时及时替代。
MapReduce、Spark:并行计算软件。
【任务分解】
计算机要处理的任务可能有依赖关系,这要看你如何进行分解的,可以按“职能部门”的方式,也可以按“项目组”的方式,或者是交叉的方式。
MapReduce、Spark:并行计算软件。
Storm、Flink、Kafka、Spark Streaming:并行流数据处理软件。
【一人多角色】
以上角色都可以定义为:处理某项任务的管理者、角色或成员。因为这些角色本质上是程序,所以它们可能在同一台服务器上,同一台服务器可以处理不同的业务。就像在企业中,一个人可能是某个部门的负责人,但同时是另一个项目组的成员,等等。
Docker、K8、VMware:虚拟环境系统。
【联络官】
不同的业务之间可能也要沟通的,就像部门之间沟通一样,难道都要建立一对多的关系,就像打“循环赛”一样吗?不用,所有这些沟通都可以交给一个联络官去处理,告诉他我有什么消息、需要什么消息、某个消息要找哪些人去处理,让他去跑腿。
RabbitMQ、Kafka:分布式结构、订阅发布机制的消息系统。
【资源协调员】
上面说了一个人(服务器)可能承担多个角色,要干很多活,可能会干不过来,就需要一个“资源管理员”来协调,当某个人太累(CPU、内存紧张)时,就不能给他分配更多任务。这个资源协调员可管理多个任务的不同角色,就相当于企业中的CEO,他要了解每项任务(要干什么)、每个人的能力(装了什么软件)以及他当前的工作量(忙不忙),然后进行分工,并随时掌握资源使用情况。
YARN:分布式、资源分配系统。
【秘书、文书】
不论一个角色在干什么?我们都希望知道它在不在线,就像一个企业中,我们需要知道每个人今天来没来,没来就不能把任务分给他,这就是“注册与发现”,这个服务掌握角色的状态,它同时还可以管理一些“共享信息”,免得你哪一天没来,就不能掌握最新的事务进展,我们可以把它想象成一个文书或秘书,管理考勤和文档。
Zookeeper:分布式调度软件、配置共享、服务注册与发现。
【复合性人才】
有时候一个软件可能实现多种功能,比如既进行资源管理,又进行服务登记。软件是很灵活的,有时候加上一些代码就顺带实现了另一些功能,所以不能用绝对的眼光去看待它们,就像人一样,一些人可能在很多领域都有所涉猎。
Zookeeper。
【数据基础】
我们管理的数据都是对现实事物的描述,不同的人、不同的业务、不同的系统都有各自的需求和方式,太乱了,怎么办呢?就用一个专门管理数据的工具去统一管理,包括事物的属性和它们之间的关系。与此同时,还需要一个去其他系统提取数据的工具,因为目前还没有哪个软件能够代替所有其他软件,但可以慢慢把数据都统一管理起来,新的系统都从统一的数据源存取数据。
元数据管理、数据模型管理、数据关系管理等。
【数据并非无中生有】
有人说,人类的数据为什么越来越多了,这主要是因为原来很多数据是不记录的,比如现在可以在所有的路口都装上摄像机,在井盖上装上传感器,在不装之前就没有数据吗?只是没记录或没有手段记录而已。当然社会发展也促使产生了更多的数据,现在有更多的生产、更频繁的交易活动。
【进无止境】
现在的技术并非是最好的技术,它们一直在演进。
YARN的任务管理功能原来是在MapReduce中实现的,后来发现依赖过强、占用内存过多,后来独立出来,使分布式架构更为灵活、稳健和优雅。
网友评论