HADOOP介绍

HADOOP介绍

1.   HADOOP的起源

1.1起源:

HadoopApache Lucene创始人DougCutting创建的,Lucene是一个广泛使用的文本搜索系统库。Hadoop起源于Apache Nutch,一个开源的网络搜索引擎,它本身也是Lucene项目的一部分。为了实现这个搜索引擎算法的平台,后台参考了GoogleGFSMapReduce,实现了Nutch自己的NDFSMapReduce,并在20062月,开发人员将NDFSMapReduce移出Nutch形成Lucene的一个

子项目,称为Hadoop

1.2发展历史:

2004年由Doug CuttingMikeCafarella实现了现在HDFSMapReduce的最初版本。

200512 Nutch移植到新框架,Hadoop20个节点上稳定运行。

20062 ApacheHadoop项目正式启动以支持MapReduceHDFS的独立发展。

20064月在188个节点上(每个节点10GB)运行排序测试集需要47.9小时。

20065 Yahoo!建立了一个300个节点的Hadoop研究集群。

2007年研究集群增加到900个节点,在900个节点上运行1TB排序测试仅需209秒,成为世界最快。

2008年研究集群每天装载10TB数据。

2009 17个集群总共24000台机器,赢得每分钟排序,59秒内排序500GB(在1400个节点上)和173分钟内排序100TB数据(在3400个节点上)。

2.   HADOOP的原理

HADOOP的核心是HDFSMapReduce,它利用HDFS实现数据的存储,而Mapreduce实现分析处理。


 

2.1 HDFS工作原理:

HDFS集群中有两类节点,并以管理者-工作模式运行,即一个namenode(管理者)和多个datanode(工作者)namenode管理文件系统的命名空间。它维护着文件系统树及整棵树内所有的文件和目录。这些信息以两个文件形式永久保存在本

地磁盘上:命名空间镜像文件和编辑日志文件。namenode也记录着每个文件中

各个块所在的数据节点信息,但它并不永久保存块的位置信息,因为这些信息

会在系统启动时由数据节点重建。客户端(client)代表用户通过与namenodedatanode交互来访问整个文件系统。客户端提供一个类似于POSIX(可移植操作系统界面)的文件系统接口,因此用户在编程时无需知道namenodedatanode也可以实现其功能。datanode是文件系统的工作节点。它们根据需要存储并检索数据块(受客户端或namenode调度),并且定期向namenode发送它们所存储的块的列表。没有namenode,文件系统将无法使用。事实上,如果运行namenode服务的机器毁坏,文件系统上所有的文件将会丢失,因为我们不知道如何根据datanode的块来重建文件。因此,对namenode实现容错非常重要,HADOOP为此提供了两种机制。第一种机制是备份那些组成文件系统元数据持久状态的文件。HADOOP可以通过配置使namenode在多个文件系统上保存元数据的持久状态,这些写操作是实时同步的,是原子操作。一般的配置是,将持久状态写入本地磁盘的同时,写入一个远程挂载的网络文件系统(NFS)。另一种可行的方法是运行一个辅助namenode,但它不能用作namenode。这个辅助namenode的重要作用是定期通过编辑日志合并命名空间镜像,以防止编辑日志过大。这个辅助namenode一般在另一台单独的物理机器上运行,因为它需要占用大量的CPU时间与namenode相同容量的内存来执行合并操作。它会保存合并后的命名空间镜像的副本,并在namenode发生故障时启用。

2.2MapReduce工作原理:

MapReduce 是大规模数据(TB 级)计算的利器,Map Reduce 是它的主要思想,来源于函数式编程语言,它的原理如下图所示:Map负责将数据打散,Reduce负责对数据进行聚集,用户只需要实现map reduce 两个接口,即可完成TB级数据的计算,常见的应用包括:日志分析和数据挖掘等数据分析应用。另外,还可用于科学数据计算,如圆周率PI 的计算等。Hadoop MapReduce的实现也采用了Master/Slave 结构。Master 叫做JobTracker,而Slave 叫做TaskTracker。用户提交的计算叫做Job,每一个Job会被划分成若干个TasksJobTracker负责Job Tasks 的调度,而TaskTracker负责执行Tasks

3.   HADOOP的优缺点

3.1 优点:

1. 高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。

2. 高效性:HADOOP的工作原理在于将数据拆分成片,并将每个“分片”分配到特定的集群节点上进行分析,每个数据分片都是在独立的集群节点上进行单独处理的。同时,Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

3. 高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

4. 高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

5. 低成本:与一体机、商用数据仓库以及QlikViewYonghongZ-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。同时, Hadoop设计对应急需求比较低,只须运行在低廉的商用硬件集群上,而无需在昂贵的高可用性机器上。

3.2 缺点:

1. 不适合低延迟数据访问:如果要处理一些用户要求时间比较短的低延迟应用请求,则HDFS不适合。HDFS是为了处理大型数据集分析任务的,主要是为达到高的数据吞吐量而设计的,这就可能要求以高延迟作为代价。

改进策略:对于那些有低延时要求的应用程序,HBase是一个更好的选择,通过上层数据管理项目尽可能地弥补这个不足。在性能上有了很大的提升,它的口号是goes real time。使用缓存或多个master设计可以降低Clinet的数据请求压力,以减少延时。

2. 无法高效存储大量的小文件:因为NameNode把文件系统的元数据放置在内存中,所有文件系统所能容纳的文件数目是由NameNode的内存大小来决定。还有一个问题就是,因为MapTask的数量是由Splits来决定的,所以用MR处理大量的小文件时,就会产生过多的MapTask,线程管理开销将会增加作业时间。当Hadoop处理很多小文件(文件大小小于HDFSBlock大小)的时候,由于FileInputFormat不会对小文件进行划分,所以每一个小文件都会被当做一个Split并分配一个Map任务,导致效率底下。例如:一个1G的文件,会被划分成1664MBSplit,并分配16Map任务处理,而10000100Kb的文件会被10000Map任务处理。

改进策略:要想让HDFS能处理好小文件,有不少方法。利用SequenceFileMapFileHar等方式归档小文件,这个方法的原理就是把小文件归档起来管理,HBase就是基于此的。

3. 不支持多用户写入及任意修改文件:HDFS的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作,目前HDFS还不支持多个用户对同一文件的写操作,以及在文件任意位置进行修改。

4.   HADOOP的操作应用

1、查看现有的HDFS上的目录

 hadoop dfs -ls 目录

例:hadoop dfs -ls /tmp。查看HDFStmp目录下的文件

2、创建、查看、删除目录

 1./usr目录下再新建一个test目录

 2.进入到/usr目录下 cd /usr

 3.创建目录  mkdir /usr

 4.查看目录是否创建成功 ls

 5.删除目录 rmdirtest

3、创建、查看、删除文件

 1.创建一个文件 vi 文件名。如: vitest

 2.i进入编辑状态按ESC结束编辑输入:wq保存退出。

 3.查看创建的文件及其内容cat 文件名。如:cat test

 4.删除文件。rm 文件名。如:rm test

4.上传一个文件到HDFS

 命令格式:hdfs dfs-put linux目录下的文件  hdfs的路径

 如:hadoop dfs-put /usr/test /tmp/test01 实现的功能把usr目录下的test文件上传到HDFS上并更名为test01

5.查看上传到HDFS中的文件

 命令格式:hadoophdfs dfs -cat HDFS上的目录

 如查看上一步上传的文件:hadoophdfs dfs -cat /tmp/test01

6.HDFS中的文件复制到本地系统中

 命令格式:hadoopdfs -get HDFS上的文件目录  LINUX上的目录

 例:下载已经传上去的test01文件到usr目录下。 hadoopdfs -get /tmp/test01 /usr.

7.删除HDFS下的文档

 命令格式:hadoopdfs -rmr HDFS上的文件路径

 例:hadoop dfs-rmr /tmp/test01

8.查看HDFS的基本统计信息

 命令格式:hadoopdfsadmin -report

9.退出安全模式

 命令格式:hadoopdfsadmin -safemode leave

10.进入安全模式

 命令格式:hadoopdfsadmin -safemode enter

11.查看版本信息

命令格式:hadoop dfsadmin -report

5.   HADOOP的应用情景

Hadoop集群是一种专门为存储和分析海量非结构化数据而设计的特定类型的集群。本质上,它是一种计算集群,即将数据分析的工作分配到多个集群节点上,从而并行处理数据。Hadoop集群最大的好处在于它非常适合大数据分析。大数据一般都是分布广泛并且是非结构化的。而Hadoop非常适合这类数据是因为,Hadoop的工作原理在于将数据拆分成片,并将每个“分片”分配到特定的集群节点上进行分析。数据不必均匀分布,因为每个数据分片都是在独立的集群节点上进行单独处理的。

基于上述原因,HADOOP的应用情景主要是一些基于大数据的应用情景:比如数据挖掘,日志分析,推荐系统等。

 声明:本文内容来自网络整理

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值