Hadoop

一. 简介
Apache Hadoop是一款支持数据密集型分布式应用程序并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据谷歌公司发表的MapReduce和Google文件系统的论文自行实现而成。所有的Hadoop模块都有一个基本假设,即硬件故障是常见情况,应该由框架自动处理。
Hadoop框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce的编程范型:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上运行或重新运行。此外,Hadoop还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。MapReduce和分布式文件系统的设计,使得整个框架能够自动处理节点故障。它使应用程序与成千上万的独立计算的电脑和PB级的数据连接起来。现在普遍认为整个Apache Hadoop“平台”包括Hadoop内核、MapReduce、Hadoop分布式文件系统(HDFS)以及一些相关项目,有Apache Hive和Apache HBase等等。
Hadoop框架中最核心设计就是:HDFS和MapReduce。HDFS提供了海量数据的存储,MapReduce提供了对数据的计算。Hadoop的发行版除了社区的Apache hadoop外,cloudera,hortonworks,IBM,INTEL,华为,大快搜索等等都提供了自己的商业版本。商业版主要是提供了专业的技术支持,这对一些大型企业尤其重要。
二. Hadoop优点
Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理 。
Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理 。
Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度 。
Hadoop 还是可伸缩的,能够处理 PB 级数据 。
此外,Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用 。
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。
主要有以下几个优点 :
1.高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖 。
2.高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中 [4] 。
3.高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快 [4] 。
4.高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配 [4] 。
5.低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低 [4] 。
Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++ [4] 。
Hadoop大数据处理的意义
Hadoop得以在大数据处理应用中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里
三.Hadoop框架
分布式开源的框架 高可用 将硬件故障看作常态
四大模块
common :工具包 rpc框架(通信框架)
hdfs :分布式文件系统 Hadoop distributed file system
namenode 老大
datanode 小弟
secondarynamenode 助理
mapreduce :分布式计算框架
yarn :资源调度框架
resourcemanager 老大
nodemanager 小弟
四.hadoop技术详解
1、Hadoop运行原理Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,其最核心的设计包括:MapReduce和HDFS。基于Hadoop,你可以轻松地编写可处理海量数据的分布式并行程序,并将其运行于由成百上千个结点组成的大规模计算机集群上。基于MapReduce计算模型编写分布式并行程序相对简单,程序员的主要工作就是设计实现Map和Reduce类,其它的并行编程中的种种复杂问题,如分布式存储,工作调度,负载平衡,容错处理,网络通信等,均由MapReduce框架和HDFS文件系统负责处理,程序员完全不用操心。换句话说程序员只需要关心自己的业务逻辑即可,不必关心底层的通信机制等问题,即可编写出复杂高效的并行程序。如果说分布式并行编程的难度足以让普通程序员望而生畏的话,开源的Hadoop的出现极大的降低了它的门槛。2、Mapreduce原理Map-Reduce的处理过程主要涉及以下四个部分:•Client进程:用于提交Map-reduce任务job;•JobTracker进程:其为一个Java进程,其main class为JobTracker;•TaskTracker进程:其为一个Java进程,其main class为TaskTracker;•HDFS:Hadoop分布式文件系统,用于在各个进程间共享Job相关的文件;其中JobTracker进程作为主控,用于调度和管理其它的TaskTracker进程, JobTracker可以运行于集群中任一台计算机上,通常情况下配置JobTracker进程运行在NameNode节点之上。TaskTracker负责执行JobTracker进程分配给的任务,其必须运行于DataNode上,即DataNode既是数据存储结点,也是计算结点。JobTracker将Map任务和Reduce任务分发给空闲的TaskTracker,让这些任务并行运行,并负责监控任务的运行情况。如果某一个TaskTracker出故障了,JobTracker会将其负责的任务转交给另一个空闲的TaskTracker重新运行。3、HDFS存储的机制Hadoop的分布式文件系统HDFS是建立在Linux文件系统之上的一个虚拟分布式文件系统,它由一个管理节点( NameNode )和N个数据节点( DataNode )组成,每个节点均是一台普通的计算机。在使用上同我们熟悉的单机上的文件系统非常类似,一样可以建目录,创建,复制,删除文件,查看文件内容等。但其底层实现上是把文件切割成Block(块),然后这些Block分散地存储于不同的DataNode上,每个Block还可以复制数份存储于不同的DataNode上,达到容错容灾之目的。NameNode则是整个HDFS的核心,它通过维护一些数据结构,记录了每一个文件被切割成了多少个Block,这些Block可以从哪些DataNode中获得,各个DataNode的状态等重要信息。HDFS的数据块每个磁盘都有默认的数据块大小,这是磁盘进行读写的基本单位.构建于单个磁盘之上的文件系统通过磁盘块来管理该文件系统中的块.该文件系统中的块一般为磁盘块的整数倍.磁盘块一般为512字节.HDFS也有块的概念,默认为64MB(一个map处理的数据大小).HDFS上的文件也被划分为块大小的多个分块,与其他文件系统不同的是,HDFS中小于一个块大小的文件不会占据整个块的空间. 任务粒度——数据切片(Splits)把原始大数据集切割成小数据集时,通常让小数据集小于或等于HDFS中一个Block的大小(缺省是64M),这样能够保证一个小数据集位于一台计算机上,便于本地计算。有M个小数据集待处理,就启动M个Map任务,注意这M个Map任务分布于N台计算机上并行运行,Reduce任务的数量R则可由用户指定。HDFS用块存储带来的第一个明显的好处一个文件的大小可以大于网络中任意一个磁盘的容量,数据块可以利用磁盘中任意一个磁盘进行存储.第二个简化了系统的设计,将控制单元设置为块,可简化存储管理,计算单个磁盘能存储多少块就相对容易.同时也消除了对元数据的顾虑,如权限信息,可以由其他系统单独管理。
五.Hadoop对大数据的5大好处
对于大数据和分析,Hadoop可以挽救生命。仅当出现有意义的模式进而导致更好的决策时,有关人员,流程,对象,工具等的收集数据才有用。Hadoop帮助克服了大数据的巨大挑战:
1.弹性-存储在任何节点中的数据也将复制到群集的其他节点中。这确保了容错能力。如果一个节点出现故障,则群集中始终存在可用数据的备份。
2.可伸缩性—与传统的数据存储受限的系统不同,Hadoop具有可伸缩性,因为它在分布式环境中运行。根据需要,可以轻松扩展设置,使其包含更多服务器,这些服务器可以存储多达PB的数据。
3.低成本— Hadoop是一个开放源代码框架,无需购买许可证,因此与关系数据库系统相比,成本显着降低。廉价商品硬件的使用也有利于保持解决方案的经济性。
4.速度-Hadoop的分布式文件系统,并发处理和MapReduce模型可在几秒钟内运行复杂的查询。
5.数据多样性-HDFS能够存储不同的数据格式,例如非结构化(例如视频),半结构化(例如XML文件)和结构化。在存储数据时,不需要针对预定义的架构进行验证。而是可以以任何格式转储数据。稍后,在检索数据时,将根据需要解析数据并将其装入任何模式。这样就可以灵活地使用相同的数据得出不同的见解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值