hadoop学习1-Hadoop基础概念

孤者浪人 提交于 2019-12-08 19:02:45

         大数据云计算出来也比较久了,目前也比较的火,最近打算学习下相关的知识。进行学习首先得选择一本书,这里我选择

Hadoop+Spark生态系统操作与实战指南,因为书比较薄,适合入门。作者也提供了相关的视频和配置文件,环境。

        hadoop权威指南,书是不错,不过太厚,目前入门不想使用此书,此书打算放在后面再进行看。学习东西,比较喜欢由点到面,步步深入。我的博客也是自己学习总结的过程,同时希望也能帮助到一些人。想买书籍看的,可以点击链接http://product.dangdang.com/25163568.html

       要学hadoop首先我们需要了解一些相关的概念,知道hadoop是什么,可以干什么,然后我们才能深入的学习。

一:hadoop版本和生态系统

1,hadoop版本的优缺点

     目前市面上hadoop主要有两种:apache版本和CDH版本
1)apache版本的hadoop
官网:http://hadoop.apache.org/
优势:对硬件要求低
劣势:搭建繁琐,维护繁琐,升级繁琐,添加组件繁琐

2)CDH版本的hadoop
官网:https://www.cloudera.com/
优势:搭建方便,维护较为容易,升级以及迁移容易,添加组件容易
缺点:对硬件要求高

2,Hadoop生态系统和组件介绍

     Hadoop生态组件主要包括:MapReduce,HDFS,HBase,Hive,Pig,ZooKeeper,Mabout。
1)MapReduce:MapReduce是使用集群的并行,分布式算法处理大数据集的可编程模型。Apache MapReduce是从Google MapReduce派生而来的:在大型集群中简化数据处理。当前的Apache MapReduce版本基于Apache YARN框架构建。YARN是“Yet Another Resource Negotiator”的缩写。YARN可以运行非MapReduce模型的应用。YARN是Apache Hadoop想要超越MapReduce数据处理能力的一种尝试。

2)HDFS:The Hadoop Distributed File System(HDFS)提供跨多个机器存储大型文件的一种解决方案。Hadoop和HDFS都是从Google File System(GFS)中派生的。Hadoop2.0.0之前,NameNode是HDFS集群的一个单点故障(SPOF)。利用ZooKeeper,HDFS高可用性解决了这个问题,提供选项来运行两个重复的NameNodes,在同一个集群中,同一个Active/Passive配置。

3)HBase:灵感来源于Google BigTable。HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用ZooKeeper作为对应。

4)Hive:Facebook开发的数据仓库基础设施。数据汇总,查询和分析。Hive提供类似SQL的语言:HiveQL。(不兼容SQL92)

5)Pig:Pig提供一个引擎在Hadoop并行执行数据流。Pig包含一个语言:Pig Latin,用来表达这些数据量。Pig Latin包括大量的传统数据操作(join,sort,filter等),也可以让用户开发他们自己的函数,用来查看,处理和编写数据。Pig在Hadoop上运行,在Hadoop分布式文件系统HDFS和Hadoop处理系统MapReduce中都有使用。Pig使用MapReduce来执行所有的数据处理,编译Pig Latin脚本,用户可以编写一个系列,一个或者多个的MapReduce作业,然后执行。Pig Latin看起来和大多数编程语言都不一样,没有if状态和for循环。

6)ZooKeeper:ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护,名字服务,分布式同步,组服务等。ZooKeeper的目标就是封装好复杂易出错的服务,将简易易用的接口和性能高效,功能稳定的系统提供给用户。ZooKeeper是Google的Chubby一个开源的实现,是高效和可靠的协同工作系统。ZooKeeper能够用来执行leader选举,配置信息维护等。在一个分布式的环境中,我们需要一个Master实例用来存储一些配置信息,确保文件写入的一致性等。

7)Mahout:基于MapReduce的机器学习库和数学库。


二:MapReduce简介

1,MapReduce是什么

MapReduce是面向大数据并行处理的计算模型,框架和平台,它隐含了以下三层含义:
1)MapReduce是一个基于集群的高性能并行计算平台(Cluster Infrastucture)。它允许用市场上普通的商用服务器构成一个包含数十,数百至数千个节点的分布式和并行计算集群。
2)MapReduce是一个并行计算与运行软件框架(software framework)。它提供了一个庞大但设计精良的并行计算软件框架,能自动完成计算任务的并行处理,自动划分计算数据和计算任务,在集群节点上自动分配和执行任务以及计算结果,将数据分布式存储,数据通信,容错处理等并行计算涉及的很多系统底层的复杂细节交由系统负责处理,大大减少了软件开发人员的负担。
3)MapReduce是一个并行程序设计模型与方法。它借助与函数式程序设计语言Lisp的设计思想,提供了一种简单的并行程序设计方法,用Map和Reduce两个函数编程实现基本的并行计算任务,提供了抽象的操作和并行编程接口,以简单方便的完成大规模数据的编程和计算处理。

2,MapReduce设计目标

MapReduce是一种可用于数据处理的编程框架。MapReduce采用分而治之的思想,把对大规模数据集的操作分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单的说MapReduce就是任务的分解与结果的汇总。
    在分布式计算中,MapReduce框架负责处理并行编程中分布式存储,工作调度,负载均衡,容错均衡,容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map和reduce,map负责把任务分解成多个任务,reduce负责把分解后多任务处理的结果汇总起来。

3,MapReduce适用场景

   用MapReduce来处理的数据集(或任务)必须具备这样的特点:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。



三:HDFS简介

1,HDFS是什么

   Hadoop分布式文件系统被设计成适合在通用硬件上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模的数据集上的应用。

2,HDFS适用场景与不适用场景

适用:大文件访问;流式数据访问
不适用:存储大量小文件;随机读取,低延迟读取

3,HDFS的基本概念

1)数据块(block)
   大文件被分割成多个block进行存储,block大小默认为128MB。小于一个块大小的文件不会占据整个块的空间。
    每个block会在多个DataNode上存储多份副本,默认是3份。
   比如:1MB的文件有1个block块,128MB的文件有1个block块,129MB的文件有2个block块。

2)NameNode
   记录文件系统的元数据,单一主元数据服务器,其中包括每个文件,文件位置以及这些文件所在的DataNode内的所有数据块的内存映射。维护文件系统树及整棵树内所有的文件和目录。

3)DataNode
   负责存储和检索数据块,它受客户端和NameNode调度,并且它会定期向NameNode发送节点所存储的块列表,这就是为什么NameNode并不是永久保存各个节点块信息的原因了。



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!