立博客户端app下载,故事开头理解 Hadoop 是什么、能做什么?绝对通俗易懂!

信息化技术真的是日新月异,变化太快了,一段时间不学习就可能落后于时代。处在目前的大数据时代,做为一名信息化技术人员,Hadoop是一个必学的概念。作为初学者,如何入门理解 Hadoop?网上文章很多很多,本文作了一个整理,希望以最通俗易懂的方式读懂 Hadoop。

小明接到一个任务:计算一个 100M 的文本文件中的单词的个数,这个文本文件有若干行,每行有若干个单词,每行的单词与单词之间都是以空格键分开的。对于处理这种 100M 量级数据的计算任务,小明感觉很轻松。他首先把这个 100M 的文件拷贝到自己的电脑上,然后写了个计算程序在他的计算机上执行后顺利输出了结果。

后来,小明接到了另外一个任务,计算一个 1T(1024G)的文本文件中的单词的个数。再后来,小明又接到一个任务,计算一个 1P(1024T) 的文本文件中的单词的个数……

面对这样大规模的数据,小明的那一台计算机已经存储不下了,也计算不了这样大的数据文件中到底有多少个单词了。机智的小明上网百度了一下,他在百度的输入框中写下了:大数据存储和计算怎么办?按下回车键之后,出现了有关 Hadoop 的网页。

看了很多网页之后,小明总结一句话:Hadoop 就是存储海量数据和分析海量数据的工具。

Hadoop 是由 java 语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是 HDFS 与 MapReduce。

HDFS 是一个分布式文件系统:引入存放文件元数据信息的服务器 Namenode 和实际存放数据的服务器 Datanode,对数据进行分布式储存和读取。

MapReduce 是一个计算框架:MapReduce 的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map 计算 /Reduce 计算)再根据任务调度器(JobTracker)对任务进行分布式计算。

1、大数据文件,非常适合上 T 级别的大文件或者一堆大数据文件的存储,如果文件只有几个 G 甚至更小就没啥意思了。

2、文件分块存储,HDFS 会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。

3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。

4、廉价硬件,HDFS 可以应用在普通 PC 机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。

5、硬件故障,HDFS 认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。

Hadoop 的框架最核心的设计就是:HDFS 和 MapReduce。HDFS 为海量的数据提供了存储,则 MapReduce 为海量的数据提供了计算。把 HDFS 理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。把 MapReduce 理解成为一个计算引擎,按照 MapReduce 的规则编写 Map 计算 /Reduce 计算的程序,可以完成计算任务。

2、NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一 一台主机专门保存,当然这台主机如果出错,NameNode 就失效了。在 Hadoop2.* 开始支持 activity-standy 模式-如果主 NameNode 失效,启动备用主机运行 NameNode。

3、DataNode:分布在廉价的计算机上,用于存储 Block 块文件。

我们要数图书馆中的所有书。你数 1 号书架,我数 2 号书架。这就是 “Map”。我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是 “Reduce”。通俗说 MapReduce 是一套从海量源数据提取分析元素最后返回结果集的编程模型,将文件分布式存储到硬盘是第一步,而从海量数据中提取分析我们需要的内容就是 MapReduce 做的事了。

MapReduce 的基本原理就是:将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。当然怎么分块分析,怎么做 Reduce 操作非常复杂,Hadoop 已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据。

Hadoop 是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。

无论是在 windows 上装几台虚拟机玩 Hadoop,还是真实的服务器来玩,说简单点就是把 Hadoop 的安装包放在每一台服务器上,改改配置,启动就完成了 Hadoop 集群的搭建。

Hadoop 集群搭建好以后,可以通过 web 页面查看集群的情况,还可以通过 Hadoop 命令来上传文件到 hdfs 集群,通过 Hadoop 命令在 hdfs 集群上建立目录,通过 Hadoop 命令删除集群上的文件等等。

通过集成开发工具(例如 eclipse)导入 Hadoop 相关的 jar 包,编写 map/reduce 程序,将程序打成 jar 包扔在集群上执行,运行后出计算结果。

更多精彩内容,请访问:http://uhrbooks.com

谁有立博网址,Hadoop和spark的企业应用-通俗解释

要了解Hadoop和spark,以及它们所依托的云计算,就要先了解这些分布式计算(distributed computing)软件出现的历史背景。就拿一个too young too simple版的网络聊天软件来举个栗子吧:比如说有一款火爆的聊天软件叫OOXX,拥有用户A和B。OOXX软件公司有一台自己的服务器。用户A向用户B发一句“约吗”,整个流程大概这样:

A的电脑向OOXX服务器发送信息,当然包含了信息的内容(约吗),以及目的地(B用户的客户端)

OOXX的服务器收到了“约吗”这个信息,软件公司为了便于在程序出问题的时候探查问题,以及通过收集用户的行为和信息来帮助自己提高OOXX的约炮成功率,会在服务器上面记录当天服务器收到的每一条信息,以及相关的信息(发送者A,目的地B,A的IP地址,B的IP地址,A的性别,B的性别 : ), 这些日志存在服务器上面。这样一来,每天服务器就会积累一堆当天的用户信息,猥琐的管理员可以每天用程序扫描一遍所有的日志,比如记录一下约炮成功的聊天对话的总数,统计一下当天的成功率,如果成功率很高,就可以作为OOXX公司的宣传口号了有没有!

OOXX的服务器收到信息,记录下来之后,发现信息是要发给B,于是把信息发到B那里去。

B收到“约吗”的信息,回复“不约,叔叔我们不约”给A,然后这条信息又重复1,2这两步,发送给A,同样会被服务器记录下来。

在互联网刚起步的时候,OOXX的服务器可能每天只用存一存文本聊天信息就好了,后来随着互联网技术的发展,支持发图片了,支持发视频了,想约的用户也越来越多了。在这样的环境下,A会先问问B:“看过优衣库吗”,然后把视频发过去,或者发点图片先挑逗挑逗(此处应有小黄图),这样一来服务器就hold不住了,用户数量暴涨,一两台计算机也是hold不住那么多用户的请求和日志存储了啊,总得想点办法,顶住这一波用户增长,然后做点PPT去忽悠投资人的钱。

像OOXX这样的公司,可能买不起昂贵的企业级服务器(比如IBM之类,会提供整套的data center解决方案,对小公司来说可能贵得一逼),琢磨琢磨就躲买点便宜的服务器(故障率比较高,硬盘容易坏),10台不行我买20台。硬件的故障率高怎么办?买不起好的硬件,我想点办法把软件做好一点,硬盘容易坏就把服务器记录的日志同时写到两三个硬盘里(反正便宜),一个坏了还有另外两个能凑合。这样的用来管理由廉价服务器组成的存储系统故障率高的服务器集群的软件系统,就是HADOOP最开始的动机:GOOGLE的分布式文件系统(GFS)。

现在服务器这么多,日志分散在每个服务器上面,如果我好奇A今天又约了几个妹子,我得把几十台服务器的日志全部扫一遍才能知道,反正我只关心A到底约了几个不同的妹子,我用相同的程序扫描每台机器的日志,在里面找与A相关的聊天记录,把A发送的信息的收件人全部提出来,最后拿到一个地方汇总过滤一下不就好了嘛。每台服务器上面的日志文件太大了(大家小黄图发来发去)一次处理不完怎么办?反正我只关心A的相关记录,把大文件切割成小文件就好了嘛。这样的日志处理是把程序分布在每台电脑上运行,每台电脑上的处理程序都做相同的工作——找与A相关的聊天信息,然后把在所有服务器日志里面找到的信息集中发到一个服务器上,过滤汇总一下,就能知道A到底约了几炮啦。用来管理和执行这些分布式程序的软件系统,需要合理调度其控制的所有计算资源(比如其中一台电脑扫描完没事干了,不能让它闲下来,可以把别的电脑还没处理完的小文件发给它,让闲置的电脑来处理),最后得出结果。这样的分布式资源调度+分布式运算 的软件,就是HADOOP的另一个重要板块map-reduce,用来处理海量的文件,一开始也是GOOGLE搞出来的。

好了,这就是HADOOP一开始最主要的两个模块了,在此基础上衍生出了一些别的HADOOP模块(比如PIG),也是基于这两个基本的模块的。所以HADOOP这样的分布式软件系统,就是为了更好的管理和处理当前互联网产生的海量的数据文件而出现的。SPARK也是基于HADOOP,可以理解为性能更优异的HADOOP。

有了HADOOP,软件层面的问题解决了,像AMAZON这样的大公司,自然会建造大量的服务器集群,以便处理每天的海量信息。后来这些大公司发现,集群建得太多啦,每天成百上千台计算机闲置在那,烧电不说,还得雇人去维护,太尼玛烧钱啦!于是有人琢磨着,闲着也是闲着,不如把这些闲置的计算资源租给需要的人,然后按使用时长收费,这就是云计算啦,妥妥哒!于是乎,AMAZON搞出了他们的云计算服务,把自己闲置的计算资源出租给其他人来使用。有的客户什么都不懂,你把计算资源直接给他,他毛也不会用,于是有的云计算提供商就直接把一些软件运行在自己的集群上,这些客户直接上网使用这些软件就好啦,这就是SaaS(Software as a Service)。Salesforce的企业级软件就是这样一种服务。

有的用户不想用云计算服务商提供的软件,想自己打造自己的云服务软件,于是云计算服务商用一些技术直接整个服务器暴露给用户,用户可以远程自定义这个服务器(调整各种机器配置文件,运行各种程序,完全就和自己的电脑一样),这就是IaaS(Infrastructure as a Service)了,给用户提供了更多的把玩空间。AMAZON的EC2就是这样一个服务

还有些用户,又想运行自己的程序,又觉得配置服务器太麻烦了,于是云计算服务商就只提供一个平台供用户去上传和部署自己的软件,外加一些适当的可配置内容,但是整个底层的服务器配置还是由云计算服务商来做,这样用户省心。这就是PaaS(Platform as a Service),GOOGLE最开始的云服务(google app engine)就是这样一种模式。

更多精彩内容,请访问:http://uhrbooks.com

用通俗易懂的话说下hadoop是什么能做什么

(1)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。

hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn上用于发现您可能认识的人,可以实现类似协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)

设想一下这样的应用场景. 我有一个100M 的数据库备份的sql 文件.我现在想在不导入到数据库的情况下直接用grep操作通过正则过滤出我想要的内容。例如:某个表中 含有相同关键字的记录那么有几种方式,一种是直接用Linux的命令 grep 还有一种就是通过编程来读取文件,然后对每行数据进行正则匹配得到结果好了 现在是100M 的数据库备份.上述两种方法都可以轻松应对.

那么如果是1G , 1T 甚至 1PB 的数据呢 ,上面2种方法还能行得通吗? 答案是不能.毕竟单台服务器的性能总有其上限.那么对于这种 超大数据文件怎么得到我们想要的结果呢?

有种方法 就是分布式计算, 分布式计算的核心就在于 利用分布式算法把运行在单台机器上的程序扩展到多台机器上并行运行.从而使数据处理能力成倍增加.但是这种分布式计算一般对编程人员要求很高,而且对服务器也有要求.导致了成本变得非常高.

Haddop 就是为了解决这个问题诞生的.Haddop 可以很轻易的把 很多linux的廉价pc 组成 分布式结点,然后编程人员也不需要知道分布式算法之类,只需要根据mapreduce的规则定义好接口方法,剩下的就交给Haddop. 它会自动把相关的计算分布到各个结点上去,然后得出结果.

例如上述的例子 : Hadoop 要做的事 首先把 1PB的数据文件导入到 HDFS中, 然后编程人员定义好 map和reduce, 也就是把文件的行定义为key,每行的内容定义为value , 然后进行正则匹配,匹配成功则把结果 通过reduce聚合起来返回.Hadoop 就会把这个程序分布到N 个结点去并行的操作.

那么原本可能需要计算好几天,在有了足够多的结点之后就可以把时间缩小到几小时之内.

比如1亿个1 相加 得出计算结果, 我们很轻易知道结果是 1亿.但是计算机不知道.那么单台计算机处理的方式做一个一亿次的循环每次结果+1

那么分布式的处理方式则变成 我用 1万台 计算机,每个计算机只需要计算 1万个 1 相加 然后再有一台计算机把 1万台计算机得到的结果再相加

理论上讲, 计算速度就提高了 1万倍. 当然上面可能是一个不恰当的例子.但所谓分布式,大数据,云计算 大抵也就是这么回事了.返回搜狐,查看更多

更多精彩内容,请访问:http://uhrbooks.com

hadoop通俗点说是什么?应该怎么学?有哪些前提的知识条件吗?

可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

展开全部你百度过吗?通俗点讲,就是让很多数据库放在一起,你能做数据处理。just so so。

假如说你有一个篮子水果,你想知道苹果和梨的数量是多少,那么只要一个一个数就可以知道有多少了。

如果你有一个集装箱水果,这时候就需要很多人同时帮你数了,这相当于多进程或多线程。

更多精彩内容,请访问:http://uhrbooks.com

【hadoop

Hadoop被公认是一套行业大数据标准开源软件,在分布式环境下提供了海量数据的处理能力。几乎所有主流厂商都围绕Hadoop开发工具、开源软件、商业化工具和技术服务。今年大型IT公司,如EMC、Microsoft、Intel、Teradata、Cisco都明显增加了Hadoop方面的投入。

hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中的自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)

扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据。

成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点。

高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速。

可靠性(Reliable):hadoop能自动地维护数据的多份副本,并且在任务失败后能自动地重新部署(redeploy)计算任务。

namenode是整个文件系统的管理节点。他维护着整个文件系统的文件目录树,文件/目录的元信息和每个文件对应的数据块列表。接收用户的操作请求。

fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。

NameNode始终在内存中保存metedata,用于处理“读请求”,到有“写请求”到来时,NameNode首先会写editlog到磁盘,即向edits文件中写日志,成功返回后,才会修改内存,并且向客户端返回。

执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,替换旧的fsimage.

文件块(block):最基本的存储单位。对于文件内容而言,一个文件的长度大小是size,那么从文件的0偏移开始,按照固定的大小,顺序对文件进行划分并编号,划分好的每一个块称一个Block。HDFS默认Block大小是128MB,以一个256MB文件,共有256/128=2个Block.

不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间;

2.FileSystem用RPC调用元数据节点,得到文件的数据块信息,对于每一个数据块,元数据节点返回保存数据块的数据节点的地址。

4.DFSInputStream连接保存此文件第一个数据块的最近的数据节点,data从数据节点读到客户端(client)

5.当此数据块读取完毕时,DFSInputStream关闭和此数据节点的连接,然后连接此文件下一个数据块的最近的数据节点。

7.在读取数据的过程中,如果客户端在与数据节点通信出现错误,则尝试连接包含此数据块的下一个数据节点。

2.FileSystem用RPC调用元数据节点,在文件系统的命名空间中创建一个新的文件,元数据节点首先确定文件原来不存在,并且客户端有创建文件的权限,然后创建新文件。

4.DFSOutputStream将数据分成块,写入data queue。data queue由Data Streamer读取,并通知元数据节点分配数据节点,用来存储数据块(每块默认复制3块)。分配的数据节点放在一个pipeline里。Data Streamer将数据块写入pipeline中的第一个数据节点。第一个数据节点将数据块发送给第二个数据节点。第二个数据节点将数据发送给第三个数据节点。

6.当客户端结束写入数据,则调用stream的close函数。此操作将所有的数据块写入pipeline中的数据节点,并等待ack queue返回成功。最后通知元数据节点写入完毕。

7.如果数据节点在写入的过程中失败,关闭pipeline,将ack queue中的数据块放入data queue的开始,当前的数据块在已经写入的数据节点中被元数据节点赋予新的标示,则错误节点重启后能够察觉其数据块是过时的,会被删除。失败的数据节点从pipeline中移除,另外的数据块则写入pipeline中的另外两个数据节点。元数据节点则被通知此数据块是复制块数不足,将来会再创建第三份备份。

Hadoop Streaming 是一个实用程序,它允许用户使用任何可执行文件(例如shell实用程序)作为映射器和/或reducer创建和运行作业。

名称节点是包含GNU/Linux操作系统和软件名称节点的普通硬件。它是一个可以在商品硬件上运行的软件。具有名称节点系统作为主服务器,它执行以下任务:

Datanode具有GNU/Linux操作系统和软件Datanode的普通硬件。对于集群中的每个节点(普通硬件/系统),有一个数据节点。这些节点管理数据存储在它们的系统。

一般用户数据存储在HDFS文件。在一个文件系统中的文件将被划分为一个或多个段和/或存储在个人数据的节点。这些文件段被称为块。换句话说,数据的HDFS可以读取或写入的最小量被称为一个块。缺省的块大小为64MB,但它可以增加按需要在HDFS配置来改变

MapReduce计划分三个阶段执行,即映射阶段,shuffle阶段,并减少阶段。

1、客户端(client):编写mapreduce程序,配置作业,提交作业,这就是程序员完成的工作;

2、JobTracker:初始化作业,分配作业,与TaskTracker通信,协调整个作业的执行;

4、Hdfs:保存作业的数据、配置信息等等,最后的结果也是保存在hdfs上面

map阶段:映射或映射器的工作是处理输入数据。一般输入数据以存储在HDFS的文件或目录的形式,输入文件被传递到映射器功能线路,映射器处理该数据,并创建数据的若干小块。

reduce阶段:这个阶段是Shuffle阶段和Reduce阶段的组合。减速器的工作是处理该来自映射器中的数据。处理之后,它产生一组新的输出,这将被存储在HDFS。

2、框架管理数据传递,例如发出任务的所有节点之间的集群周围的详细信息,验证任务完成,和复制数据

4、给定的任务完成后,将收集并减少了数据,以一个合适的结果发送回Hadoop服务器

映射器将输入k/v对映射到一组中间k/v对。转换后的中间记录不需要与输入记录的类型相同。给定的输入对可以映射到零个或多个输出对。通过调用context.write(WritableComparable,Writable)来收集输出对。

总的来说,映射器实现通过Job.setMapperClass(Class)方法传递给作业。然后,框架为InputSplit中的每个k/v对调用该任务的map。

映射的数量通常由输入的总大小驱动,即输入文件的块总数。也可以使用Configuration.set(MRJobConfig.NUM_MAPS,int)来设置映射数量。

对Mapper输出进行排序,然后根据Reducer进行分区。分区总数与作业的reduce任务数相同。用户可以通过实现自定义分区程序来控制哪些键(以及记录)转到哪个Reducer。

用户可以选择通过Job.setCombinerClass(Class)指定组合器来执行中间输出的本地聚合,比如合并重复的key,这有助于减少从Mapper传输到Reducer的数据量。

Reducer的输入是映射器的排序输出。在此阶段,框架通过HTTP获取所有映射器的输出的相关分区

框架在此阶段按键(因为不同的映射器可能输出相同的键)对Reducer输入进行分组。在获取map输出结果时,shuffle和sort阶段同时进行。

如果要求对中间密钥进行分组的等价规则与在减少之前对密钥进行分组的等价规则不同,则可以通过Job.setSortComparatorClass(Class)指定比较器。由于Job.setGroupingComparatorClass(Class)可用于控制中间键的分组方式,因此可以结合使用这些键来模拟值的二级排序。

说到了Hadoop,那么,什么是Hadoop呢?我们先来了解一下什么是Hadoop。

Hadoop:这个我们就没法顾名思义了。这只是一个玩具大象的名字。哈哈,是不是挺逗。这只大象也算是闻名世界了。

Hadoop,用官方属于来说,就是一个由Apache基金会所开发的分布式基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

简单点说,Hadoop就是利用我们的一台台的单台服务器,构成了一个大的集群,然后通过集群的一些组件,让我们在使用的时候就感觉和在一台机器上使用是一样的。不必去关注每台机器怎样。当成一台来用就可以了。

了解了Hadoop的基本概念,我们就来说一下Hadoop的基本组件。这里只说几个最重要的,其他的后面有详细的介绍。

HDFS(Hadoop Distributed File System):Hadoop实现的分布式文件系统,这是hadoop的核心之一。Hadoop是构建在普通的机器之上的。比如,10台linux服务器构成了一个Hadoop集群,那么,我们在Hadoop上存储数据的时候,最终还是存储在这10台机器上。而HDFS就是来实现这个功能的,通过hdfs来存储文件,虽然底层是存放在这10台机器上,但是,我们存放在hdfs上的时候,就像操作一台linux一样简单。

MapReduce:这是Hadoop实现的并行计算框架,也是Hadoop的核心之一。这里简单说一下,后面单独的章节介绍。MapReduce从并行上来说,比如,我们要对hdfs的某个文件提取某个字符串,然后,我们写了这么一个mapreduce程序,然后提交给hadoop。这个时候mapreduce就会自动在集群的机器上,同时并行的运行。最后将结果写到文件里。而不用我们一台台去跑程序。

Yarn:是Hadoop上的一个资源管理框架。这个是在hadoop2.0之后出现的,1.0是没有的。我们简单理解为资源管理器就可以了。就是对hadoop的资源,比如内存,cpu等进行分配,以及对跑着的mapreudce等任务的管理。也是因为有了yarn,现在hadoop计算框架不再局限于mapreduce,比如内存计算框架spark,流计算框架storm等等。

Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。

Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。

Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。

此外,Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用。

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

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

。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。

Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如C。

注意:因为登录的用户为hduser,所以会显示/user/hduser下的目录。

3、如果复制到HDFS的文件已经存在,会报错,此时可以使用-f 参数,强制复制重复文件到HDFS目录:

7、使用put复制文件到HDFS,这个参数与copyFromLocal的不同之处在于:

-put更宽松,可以把本地或者HDFS上的文件拷贝到HDFS中;而-copyFromLocal则更严格限制只能拷贝本地文件到HDFS中。如果本地和HDFS上都存在相同路径,则-put跟趋于优先取HDFS的源。(不用太深究两者区别,更多用-put)

Hadoop是Apache的一款开源框架,使用java语言编写,可以通过编写简单的程序来实现大规模数据集合的分布式计算。工作在Hadoop框架上的应用可以工作在分布式存储和计算机集群计算的环境上面。Hadoop具有高扩展性,其集群能够从单台机器扩展到数千台机器。

Hadoop Distributed File System (HDFS) 是Hadoop集群中最根本的文件系统,它提供了高扩展,高容错,机架感知数据存储等特性,可以非常方便的部署在机器上面。HDFS除过分布式文件系统所通有的特点之外,还有些仅属自己的特点:

Hadoop集群中的数据被划分成更小的单元(通常被称为块),并且将其分布式存储在集群中,每个块有两个副本,这个两个副本被存储在集群的的一个机架上。这样数据包含自身便有三个副本,具有极高的可用性和容错性,如果一个副本丢失,HDFS将会自动的重新复制一份,以确保集群中一共包含三个数据副本(包含自身)。

除了管理文件系统命名空间和管理元数据之外,NameNode对clients而言,还扮演着master和brokers的角色(虽然clients是直接与DataNode进行通信的)。NameNode完全存在于内存中,但它仍然会将自身状态写入磁盘。

MapReduce是为能够在集群上分布式处理海量数据而量身订做的框架,MapReduce job可以分为三次连续过程。

MapReduce的最大工作单元便是job,每个job又会被分割成map task或reduce task。最经典的MapReduce job便是统计文档中单词出现的频率,这个过程可以使用下图来描述

YARN 使用了一些容易让人误解的名词作为术语,因此应该特别注意。比如在Hadoop ecosystem中,Container这个概念,平常我们听到Container时,我们都认为是与Docker相关。但是这里却是指Resource Container (RC),即表示物理资源的集合。通常被抽象的表示,将资源分配给到目标和可分配单元。

Scheduler组件是YARN Resourcemanager中向运行时应用分配资源的一个重要组件,它仅仅完成资源调度的功能,并不完成监控应用状态和进度的功能,因此即使应用执行失败,它也不会去重启失败的应用。

为了更好的描述YARN,这里给出一个YARN application的执行过程。如下图所示:

一、Hadoop组件    通常我们所理解的狭义Hadoop构成分为HDFS分布式存储系统和MapReduce编程模型两部分,下面分别从这两个部分介绍。(一)HDFSHDFS是一个分布式文件系统,下面主要介绍如何操作该文件系统。1.基本命令行操作hadoopfs-help基本的操作都遵循这个模式,比如常用的 hadoopfs-lshadoopfs-m

更多精彩内容,请访问:http://uhrbooks.com