https://blog.csdn.net/lifuxiangcaohui/article/details/23337905
假设一个应用场景. 我有一个100M 的数据库备份的sql 文件。我现在想在不导入到数据库的情况下直接用grep操作通过正则过滤出我想要的内容。例如:某个表中 含有相同关键字的记录那么有几种方式,一种是直接用linux的命令 grep 还有一种就是通过编程来读取文件,然后对每行数据进行正则匹配得到结果好了 现在是100M 的数据库备份.上述两种方法都可以轻松应对。
那么如果是100G , 1T 甚至 1PB 的数据呢 ?上面2种方法还能行得通吗? 答案是不能。因为毕竟单台服务器的存储与性能是有限的。
那么对于超大数据文件应该要怎么样进行处理呢?方法就是分布式计算,。分布式计算的核心就在于利用分布式算法 把运行在单台机器上的程序扩展到多台机器上并行运行。从而使数据处理能力成倍增加,但是这种分布式计算一般对编程人员要求很高,而且对服务器也有要求,导致了成本变得非常高。
Haddop 就是为了解决这个问题诞生的,Haddop 可以很轻易的把很多linux的廉价pc 组成分布式结点,然后编程人员也不需要知道分布式算法之类,只需要根据mapreduce的规则定义好接口方法,剩下的就交给Haddop, 它会自动把相关的计算分布到各个结点上去,然后得出结果。
例如上述的例子 ,Hadoop 要做的事首先把 1PB的数据文件导入到 HDFS(Hadoop Distributed File System)中, 然后编程人员定义好 map和reduce, 也就是把文件的行定义为key,每行的内容定义为value , 然后进行正则匹配,匹配成功则把结果通过reduce聚合起来返回,Hadoop 就会把这个程序分布到N 个结点去并行的操作;那么原本可能需要计算好几天,在有了足够多的结点并行计算后之后就可以把时间大大缩小。
这也就是所谓的大数据云计算了,再举个简单的例子,
比如 计算1亿个1 相加得出计算结果, 我们很轻易知道结果是 1亿.但是计算机不知道.那么单台计算机处理的方式做一个一亿次的循环每次结果+1,那么分布式的处理方式则变成 我用1万台计算机,每个计算机只需要计算1万个1相加 然后再有一台计算机把 1万台计算机得到的结果再相加
从而得到最后的结果。理论上讲, 计算速度就提高了1万倍. 当然上面可能是一个不恰当的例子.但所谓分布式,大数据,云计算大抵也就是这么回事了。