Hadoop 入门简介

1、数据的存储和分析
      1)、磁盘存储空间增大,读写速度跟不上,导致读写费时?
    存储设备的容量在快速增长,每天的数据产生量也在井喷式增长,而硬盘的读写速度却没有显著的提高,1990年一个存储设备可存储1370MB的数据,读写速度为4.4MB/s,现在一个1T的磁盘容量很常见,但是读写速度只有100MB/s,读写一个磁盘大概需要2.5个小时,同时,写需要的时间会更长。
      答:可以使用多个磁盘并行读写,如:采用100个磁盘,每个磁盘存储1%,然后进行并行读写,可大幅度缩短时间。为了避免存储空间的浪费,可以在同一个存储设备存储多个数据集,实现磁盘共享。
      2)、硬件故障问题?
    使用多个硬件,其中个别硬件很有可能发生故障,为了防止数据丢失,最常见的做法是复制,系统保存数据的副本,一旦发生故障,就可以使用另外保存的复本。
    比如:冗余磁盘阵列就是按照这个原理设计的,Hadoop的文件系统(HDFS)也是这一类,不过采用的方式和磁盘阵列不同。
      3)、如何保证多模块数据分析的正确性?
    大部分分析任务需要以某种方式结合大部分数据来共同完成分析,即从一个磁盘读取的数据可能要与从其他99个磁盘读取的数据结合使用,各种分布式系统允许结合不同来源的数据进行分析,但是保证其正确性是一个很大的挑战。MapReduce提出一个编程模型,该模型抽象出这些硬盘读写问题并转换为对一个数据集(有键值对组成)的计算。这样的计算又map和reduce两部分组成而且只有这两部分提供对外接口。与HDFS类似,MapReduce也有很高的可靠性。

      总结:Hadoop为我们提供一个可靠的共享存储和分析系统。HDFS实现数据的存储,MapReduce实现数据的分析和处理。虽然Hadoop还有其他的功能,但是HDFS和Map Reduce是其核心。

2、相比与其他系统的优势
    MapReduce是一个批量查询处理器,能够在合理的时间内处理对真个数据集的动态查询。
      1)、为什么不用数据库对大量磁盘上的数据进行批量分析?为什么需要MapReduce?
      答:这些问题的答案来自磁盘的另一个发展趋势:寻址时间的提高远远慢于传输速率的提高。寻址是将磁头移动到特定磁盘位置进行读写操作的过程。它是导致磁盘操作延迟的主要原因,而传输速率取决于磁盘的带宽。  
    如果数据访问模式中包含大量的磁盘寻址,那么读取大量数据集所花的时间势必会更长(相较于流式数据读取模式),流式读取主要取决于传输速率。另一方面,如果数据库系统只要更新一小部分,那么传统的B树更有优势(关系型数据库中使用的一种数据结构,受限于寻址的比例)。但数据库系统更新大部分数据时,B树的效率比MapReduce低的多,因为需要使用“排序/合并”来重建数据库 
    MapReduce和关系型数据库之间的另一个区别在于他们所操作的数据集的结构化程度。 结构化数据是具有既定格式的实体化数据,诸如xml文档或满足特定预定义格式的数据库表。这是RDBMS包括的内容。另一个方面, 半结构化数据比较松散,虽然可能有格式,但经常被忽略,所以它只能用作对数据结构的一般指导。例如,一张电子表格,其结构是由单元格组成的网格,但是每个单元格自身可保存任何形式的数据。 非结构化数据没有什么特别的内部结构,例如纯文本或图像数据。 MapReduce对于非结构化或半结构化数据非常有效,因为在处理数据时才对数据进行解释。换句话说:MapReduce输入的键和值并不是数据固有的属性,而是由分析数据的人员来选择的。
      2)、网格计算和高性能计算
  • 网格计算:网格计算即分布式计算,是一门计算机科学。它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终结果。 最近的分布式计算项目已经被用于使用世界各地成千上万志愿者的计算机的闲置计算能力,通过因特网,您可以分析来自外太空的电讯号,寻找隐蔽的黑洞,并探索可能存在的外星智慧生命;您可以寻找超过1000万位数字的梅森质数;您也可以寻找并发现对抗艾滋病毒更为有效的药物。用以完成需要惊人的计算量的庞大项目。
  • 高性能计算:高性能计算(High performance computing, 缩写HPC) 指通常使用很多处理器(作为单个机器的一部分)或者某一集群中组织的几台计算机(作为单个计 算资源操作)的计算系统和环境。有许多类型的HPC 系统,其范围从标准计算机的大型集群,到高度专用的硬件。大多数基于集群的HPC系统使用高性能网络互连,比如那些来自 InfiniBand 或 Myrinet 的网络互连。基本的网络拓扑和组织可以使用一个简单的总线拓扑,在性能很高的环境中,网状网络系统在主机之间提供较短的潜伏期,所以可改善总体网络性能和传输速率。
  • 分布式计算:
    分布式计算是利用 互联网上的 计算机的 CPU 的闲置处理能力来解决大型计算问题的一种计算科学。
        随着 计算机的普及,个人电脑开始进入千家万户。与之伴随产生的是电脑的利用问题。越来越多的电脑处于闲置状态,即使在开机状态下CPU的潜力也远远不能被完全利用。我们可以想象,一台家用的 计算机将大多数的时间花费在“等待”上面。即便是使用者实际使用他们的 计算机时,处理器依然是寂静的消费,依然是不计其数的等待(等待输入,但实际上并没有做什么)。 互联网的出现, 使得连接调用所有这些拥有闲置计算资源的 计算机系统成为了现实。
        那么,一些本身非常复杂的但是却很适合于划分为大量的更小的计算片断的问题被提出来,然后由某个研究机构通过大量艰辛的工作开发出计算用 服务端和 客户端。 服务端负责将计算问题分成许多小的计算部分,然后把这些部分分配给许多联网参与计算的 计算机进行 并行处理,最后将这些计算结果综合起来得到最终的结果。
        分布式计算意味着应用程序不再“绑定”到具体的物理系统和平台软件上,数据和程序是能够在计算节点间“流动起来”的。
   Hadoop 入门简介_第1张图片
Hadoop 入门简介_第2张图片
Hadoop 入门简介_第3张图片
2、Hadoop 相关项目
Hadoop 入门简介_第4张图片
Hadoop 入门简介_第5张图片
3、Hadoop 社区版本优缺点

优点:

  • 完全开源免费
  • 社区活跃
  • 文档、资料详实

缺点:

  • 复杂的版本管理。版本管理比较混乱,各种版本层出不穷,让使用者不知所措。
  • 复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下。
  • 复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大。
  • 复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题。
4、Hadoop 第三方发行版本优缺点

优点:

  • 基于Apache协议,100%开源。
  • 版本管理清晰。比如Cloudera,CDH1,CDH2,CDH3,CDH4,CDH5等,后面加上补丁版本,如CDH4.1.0 patch level 923.142,表示在原生态Apache Hadoop 0.20.2基础上添加了1065个patch。
  • 比Apache Hadoop在兼容性、安全性、稳定性上有增强。第三方发行版通常都经过了大量的测试验证,有众多部署实例,大量的运行到各种生产环境。
  • 版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。
  • 基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch
  • 提供了部署、安装、配置工具,大大提高了集群部署的效率,可以在几个小时内部署好集群。
  • 运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。

缺点:

  • 涉及到厂商锁定的问题。(可以通过技术解决)

综上所述,考虑到大数据平台高效的部署和安装,中心化的配置管理,使用过程中的稳定性、兼容性、扩展性,以及未来较为简单、高效的运维,遇到问题低廉的解决成本。建议使用第三方发行版本。其中在第三发发行版中,国内应用较多的是Cloudera的CDH。
v

你可能感兴趣的