初识Hadoop
1. 大量的数据
目前我们以每天很大的信息增长速度积累着大量的数据,其中包括个人数据和工业数据。衡量数据的单位的增长也说明了数据的快速街垒。
GB |
TB |
PB |
ZB |
2. 数据分析
通过大量数据的分析我们可以获得更多有价值的信息,但与此同时如何分析如此规模之大的数据也成了一个很大的问题。
针对读写速度慢的问题,可以采用分布式存储的方式(HDFS)提高读写速度。
针对硬件故障可以通过存储冗余数据的方式来解决。
针对如何正确的把分布在不同存储地点的数据加以整合分析,可以通过mapreduce以键值对的形式抽象出磁盘的读写来进行整合。
总之在Hadoop中,存储由HDFS实现,分析由mapreduce实现。
3.与其他系统的比较
1.关系型数据库管理系统
关系型数据库管理系统适用于点查询和更新等针对小部分数据的分析处理,mapreduce适合以批处理方式分析整个数据集的问题。Mapreduce适合一次写入多次读取的问题,而关系型数据库适合持续更新的数据集。
关系型数据库需要有准确定义的实体数据,即结构化数据。Mapreduce更适合处理非结构化或半结构化的数据,即mapreeuce的键值对没有固定的属性,完全由需要决定,着提高了很大的灵活性。
关系型数据库和mapreduce对比
| 关系型数据库 | Mapreduce |
数据大小 | GB | PB |
访问 | 交互型和批处理 | 批处理 |
更新 | 多次读写 | 一次写入多次读写 |
结构 | 静态模式 | 动态模式 |
集成度 | 高 | 低 |
伸缩性 | 非线性 | 线性 |
2网格计算
高性能计算(HPC)和网格计算使用消息传递接口MPI这样的API进行数据处理,主要方式是将作业分配给集群,有集群访问以存储区域网络为管理基础的共享文件系统,这样在大量数据的情况下网络带宽将限制这种处理方式,而mapreduce计算节点本地存储数据的特性有效地避免了这些问题。相对于MPI赋予程序员的可控性,mapreduce则是在更高的层面上完成任务,简化了编程的难度。
对于在计算平台上的进程协调,因为mapreduce没有一个共享的架构,所以所有的任务之间并不彼此依赖,这样任务执行的顺序就无关紧要了,所以mapreduce可以通过重新运行执行失败的作业而不用关心以他的任务。但MPI就必须要显式的管理检查点和恢复机制。
Mapreduce利用键值对将mapper和reducer一一对应起来成为一个相当严格的编程模型,进而在mapper和reducer里实现各种算法完成各种有关数据分析的任务。
3. 志愿计算
志愿计算是一个服务器想需要处理的问题分为“工作单元”的块分发给世界各地的客户机,每个块分发三份,由这个志愿的客户机分析处理分返回给服务器一个结果,如果分发的三份中有至少两份的结果相同则接受,也已此作为防欺骗的措施。
相对mapreduce则是运行在一个聚集带宽很高的可信数据中心的硬件上的。
总之,Hadoop以HDFS和mpareduce为基础在大规模数据处理方面相对其他的系统有较强的优势。