现在的位置: 首页 > 综合 > 正文

Hadoop简介

2014年05月15日 ⁄ 综合 ⁄ 共 1940字 ⁄ 字号 评论关闭

hadoop是什么?


(1)Hadoop
是一个开源的框架,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。
(2)
Hadoop就是一个分布式计算的解决方案.


hadoop
能做什么?

     hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)

    下面举例说明:

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


这也就是所谓的大数据云计算了.如果还是不懂的话再举个简单的例子
比如  1亿个  1
相加得出计算结果,
我们很轻易知道结果是 1亿.但是计算机不知道.那么单台计算机处理的方式做一个一亿次的循环每次结果+1
那么分布式的处理方式则变成我用 1万台计算机,每个计算机只需要计算
1
万个 1
相加然后再有一台计算机把 1万台计算机得到的结果再相加
从而得到最后的结果.
理论上讲,
计算速度就提高了 1万倍.
当然上面可能是一个不恰当的例子.但所谓分布式,大数据,云计算大抵也就是这么回事了.

 

hadoop使用场景

 

·  大数据量存储:分布式存储

·  日志处理: Hadoop擅长这个

·  海量计算: 并行计算

·  ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库

·  使用HBase做数据分析: 用扩展性应对大量的写操作—Facebook构建了基于HBase的实时     

    数据分析系统

·  机器学习: 比如Apache Mahout项目

·  搜索引擎:hadoop + lucene实现

·  数据挖掘:目前比较流行的广告推荐

·  大量地从文件中顺序读。HDFS对顺序读进行了优化,代价是对于随机的访问负载较高。

·  数据支持一次写入,多次读取。对于已经形成的数据的更新不支持。

·  数据不进行本地缓存(文件很大,且顺序读没有局部性)

·  任何一台服务器都有可能失效,需要通过大量的数据复制使得性能不会受到大的影响。

·  用户细分特征建模

·  个性化广告推荐

·  智能仪器推荐

抱歉!评论已关闭.