Hadoop的历史
这里就不多说了,网上很多资料,总而言之对于hadoop谷歌和雅虎对于ta的贡献功不可没。更多介绍请自行查看这里:https://baike.baidu.com/item/Hadoop/3526507?fr=aladdin
Hadoop的应用场景
数据分析,如日志系统、推荐系统
离线计算
海量数据存储
Hadoop的核心
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
这里特别需要注意的是hadoop是一个总称,主要由HDFS和MapReduce组成。其中MapReduce可以独立使用,用户只要继承MapReduceBase,提供分别实现Map和Reduce的两个类,并注册Job即可自动分布式运行
HDFS
ta是Hadoop分布式文件系统,是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集的应用程序。可以加入QQ交流群522720170一起来学习。
那么HDFS有什么优势吗?显然非常多,大致有如下几点:
1、适合存储大数据的文件,T级别以上或者一大坨的数据
2、这些大数据文件被打散存储,存储在不同的计算器上,这样方便快速的读取
3、一次写入不能做变化了,如果变化也只能在末尾添加,也就是不支持动态改变文件内容
4、同一个文件块副本会分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件
5、不用多说了,一堆廉价的机器就可以撑起大数据集群
了解HDFS之后我们来看看他的存储结构,看图说话
上图的解释如下:
- HDFS 内部的所有通信都基于标准的 TCP/IP 协议
- NameNode(仅一个),保存整个文件系统的目录信息、文件信息及分块信息。以前如果NameNode挂了那就完蛋了,但是hadoop2.x之后可以有备用使用了。
- DataNode可以分布在不同的机器上,用来存储在 HDFS 中的文件被分成块(block)
- block块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。
- NameNode 依赖来自每个 DataNode 的定期心跳消息。如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块
MapReduce
ta大家可以理解为编程模型,主要就是完成对数据的处理的。当HDFS完成存储之后,对海量数据的分析处理就要依靠MapReduce了。简单来理解就是先对数据进行map划分,在对数据进行reduce合并,如下图。
为了让大家更好的理解,这里举个栗子。假设小强测试品牌学员群有上亿的学员(这是我们的目标,嘿嘿,官网http://xqtesting.sxl.cn)我们想找出其中薪水最高的那个人。放到MapReduce里大概是这样的过程:将数据扔到block中,然后进行map找到最高的,然后再reduce汇总分析找出最大的。这个过程非常复杂要经历key-value的产生重组等过程,但是hadoop已经帮我们实现了,我们只需要编写相应的命令即可。
hadoop大数据处理的意义
Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。
Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。
Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里
原文地址:http://blog.51cto.com/xqtesting/2062189