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中, 而后编程人员定义好 map和reduce, 也就是把文件的行定义为key,每行的内容定义为value , 而后进行正则匹配,匹配成功则把结果 经过reduce聚合起来返回.Hadoop 就会把这个程序分布到N 个结点去并行的操做. 那么本来可能须要计算好几天,在有了足够多的结点以后就能够把时间缩小到几小时以内. 这也就是所谓的 大数据 云计算了.若是仍是不懂的话再举个简单的例子 好比 1亿个 1 相加 得出计算结果, 咱们很轻易知道结果是 1亿.可是计算机不知道.那么单台计算机处理的方式作一个一亿次的循环每次结果+1 那么分布式的处理方式则变成 我用 1万台 计算机,每一个计算机只须要计算 1万个 1 相加 而后再有一台计算机把 1万台计算机获得的结果再相加 从而获得最后的结果. 理论上讲, 计算速度就提升了 1万倍. 固然上面多是一个不恰当的例子.但所谓分布式,大数据,云计算 大抵也就是这么回事了. hadoop能为我司作什么? 零数据基础,零数据平台,一切起点都是0。
|