Hadoop框架基础

** Hadoop框架基础(一)

学习一个新的东西,传统而言呢,总喜欢漫无目标的扯来扯去,比如扯扯发展史,扯扯作者是何人,而自己觉着这一个东西对于刚开端接触,并以开发为目的学者是尚未什么样辅助的,反而让人分了心,比如你玩LOL的时候,去玩某个英雄的时候,一般你是不会先看无畏的故事背景介绍的,而是读读技能介绍(技能介绍类似于开发文档),直接上线就是干,扔多少个技术,发现,嘿?那大胆有点看头,用的多了,才会有可能去看望英雄的背景故事。(不清除你是一个彻头彻尾的无微不至情怀主义者)

好,那么上面我就给大家简单的统计一下业内的开场内容。

操作Hadoop集群

学习内容:Hadoop框架

富有需求的安顿达成后,将文件分发到独具机器上的HADOOP_CONF_DIR目录。那应该是兼备机器上同样的目录。

框架源码:Java

一般的话,指出HDFS和YARN作为单身的用户运行。在多数设置中,HDFS进度作为“hdfs”执行。YARN平时使用“纱线”帐户。

框架之父:Doug Cutting

Hadoop启动

此时此刻保安:Apache基金会

要开动Hadoop集群,您需求启动HDFS和YARN集群。

主导用途:HDFS和MapReduce。HDFS为海量的数码提供了仓储,MapReduce为海量的数额提供了统计。

(不够严格的概括表达下:把大文件数据分布存储在多个总计机上(因为您一台电脑存不下),然后在多台微机上举办数据解析(因为您一台统计机计量的慢),最后整合出结果)

Hadoop爆发根源谷歌的一些舆论(大陆请使用VPN代理查阅):

GoogleCluster: http://research.google.com/archive/googlecluster.html

Chubby:http://labs.google.com/papers/chubby.html

GFS:http://labs.google.com/papers/gfs.html

BigTable:http://labs.google.com/papers/bigtable.html

MapReduce:http://labs.google.com/papers/mapreduce.html

乘胜进步,Apache上就涌出了一个好像的缓解方案,分别对应:

Chubby–>ZooKeeper

GFS–>HDFS

BigTable–>Hbase

MapReduce–>Hadoop

以上内容基本就是介绍框架时扯来扯去的着力,作者是分外厉害的(那不废话么)。在就学进度中,倘诺你日渐对这几个升高历史,小编,故事背景感兴趣了,你可以再查阅相关资料,毕竟学无止境。

第一次晋级HDFS时,必须格式化。将新的分布式文件系统格式化为hdfs:

** 准备干活

[hdfs] $ $ HADOOP_HOME / bin / hdfs namenode -format
<cluster_name>
在指定的节点上使用以下命令启动HDFS NameNode作为hdfs:

有关下载:

JDK:链接:http://pan.baidu.com/s/1skOjRE9 密码:2s0p

Hadoop:链接:http://pan.baidu.com/s/1mhB2Rv6 密码:6qxi

Eclipse:链接:http://pan.baidu.com/s/1nvc5izR 密码:ezy8

如上下载你也得以活动下载,通过产品所对应的官网。

[hdfs] $ $ HADOOP_HOME / bin / hdfs –daemon start namenode
在种种指定的节点上应用以下命令启动HDFS DataNode :hdfs:

创办连锁目录:

在root用户下,进入/opt/目录,在该目录下创办多个文本夹

mkdir softwares/:该目录用于存放种种软件安装包

mkdir modules/:该目录用于存放软件的安装目录

[hdfs] $ $ HADOOP_HOME / bin / hdfs –daemon start datanode
ca88手机版登录网页,比方布署了etc / hadoop /
worker和ssh信任访问(请参阅单节点安装),则足以应用实用程序脚本启动所有HDFS进度。作为hdfs:

更改目录所属:

因为softwares和modules那多少个目录为root用户所创建,所以所有者/组均为root,而大家一般拔取的操效用户是普通用户,所以那时大家需求修改该多少个目录的持有者/组,使用命令:

chown 所有者:所属组 /opt/modules/

chown 所有者:所属组 /opt/softwares/

例如,我这里:

chown z:z /opt/modules/

[hdfs] $ $ HADOOP_HOME / sbin / start-dfs.sh
千帆竞发利用以下命令,在指定的ResourceManager为运行纱线纱:

传递下载后的文书到虚拟机系统

做到上述步骤后,使用FileZilla
Client工具(假设忘记怎么连接,请查看前几节文化),连接成功后,如图:

那时双击红框部分,如上图所示,找到opt目录,之后您就足以看看八个你创立的目录:

然后,把软件上传到softwares下,直接从windows中拖入即可上传,达成后如图:

自我这里上传的有其余软件,其实此时只须求框中部分的3个即可

现今把那3个部分各自解压到modules中,如图(只需留意红框内的情节)

解压命令:

tar -zxf hadoop-2.5.0.tar.gz -C /opt/modules/

tar -zxf hadoop-2.5.0.tar.gz -C /opt/modules/

那3个目录已经解压

[纱线] $ $ HADOOP_HOME / bin / yarn –daemon启动资源管理器
运行一个脚本来在各样指定的主机上启动一个NodeManager作为纱线:

配备环境变量

布置JDK的环境变量,hadoop的环境变量暂时不必要配了

编纂profile文件,使用命令:

vi /etc/profile,添加如图所示内容:

$意为引用,冒号为分隔符

[纱线] $ $ HADOOP_HOME / bin / yarn –daemon启动nodemanager
起步单独的WebAppProxy服务器。在WebAppProxy服务器上作为纱线运行。如果选用多少个服务器进行负载平衡,则应在各样服务器上运行:

** Hadoop宏观认知

Hadoop项目主要不外乎以下多个模块

[纱线] $ $ HADOOP_HOME / bin / yarn –daemon启动代理服务器
若是布置了etc / hadoop /
worker和ssh信任访问(请参阅单节点安装),则足以选拔实用程序脚本启动所有YARN进度。由于纱线:

Hadoop Common:

为其余的Hadoop模块提供基础设备

[纱线] $ $ HADOOP_HOME / sbin / start-yarn.sh
使用以下命令启动MapReduce JobHistory服务器,在炫耀的指定服务器上运行:

Hadoop HDFS:

分布式文件系统

[mapred] $ $ HADOOP_HOME / bin / mapred –daemon启动历史记录服务器
Hadoop关机

Hadoop MapReduce:

分布式离线并行总计框架

动用以下命令为止NameNode,在指定的NameNode上运行hdfs:

Hadoop YARN:

职务调度与资源管理框架

这里因为篇幅问题,大家只可以做一些基础领悟,更深切的开挖必要读者自行钻研(因为往下深究所需篇幅,能够独自再开一个专题)

[hdfs] $ $ HADOOP_HOME / bin / hdfs –daemon stop namenode
运作脚本来为止DataNode作为hdfs:

** HDFS架构

[hdfs] $ $ HADOOP_HOME / bin / hdfs –daemon stop datanode
即使布置了etc / hadoop /
worker和ssh可靠访问(请参阅单节点安装),所有HDFS进度可能会选择实用程序脚本为止。作为hdfs:

总结:

1、一个Namenode节点和三个Datanode节点组成

2、Namenode是一个中坚服务器,负责管理文件系统的namespace和客户端对文本的访问。Datanode在集群中貌似是一个节点一个,负责管理节点上它们附带的仓储。通俗来讲,datanode就是用来存储某个大文件被拆分后的一个一个的小文件。

3、一个文本分为一个或八个block(数据块,数据块默许大小128M),那几个block存储在Datanode集合里。

4、一般而言,一台机械跑一个独门的Namenode节点,集群中的其余机器各跑一个Datanode实例(当然也有一个台机械跑多个Datanode)。

5、Namenode中存放的有元数据(Metadata),比如:映射关系表(哪些数据块block存储在了何等datanode节点中)

[hdfs] $ $ HADOOP_HOME / sbin / stop-dfs.sh
为止使用上面的吩咐,在指定的ResourceManager作为运行的ResourceManager
纱:

** YARN架构

[纱线] $ $ HADOOP_HOME / bin / yarn –daemon截至资源管理器
运行一个脚本来甘休一个干活的NodeManager作为纱线:

总结:

yarn主要担负职务调度和资源管理的,比如,集群中,哪些机器还剩余多少CPU多少内存可用,集群中,还有啥机器可以用来处理新的天职等等。

1、ResourceManager(RM):首要收受客户端义务请求,接收和监察NodeManager(NM)的资源意况汇报,负责资源的分红与调度,启动和监控ApplicationMaster(AM)。

2、NodeManager:重如果节点上的资源管理,启动Container运行task总计,上报资源、负责把container意况给ResourceManager,把职责处理状态给ApplicationMaster。

3、ApplicationMaster:紧如若单个Application(Job)的task管理和调度,向ResourceManager进行资源的提请,向NodeManager发出launch
Container指令,接收NodeManager的task处理状态新闻。

[纱线] $ $ HADOOP_HOME / bin / yarn  –  daemon stop nodemanager
假如安顿了etc / hadoop /
worker和ssh信任访问(请参阅单节点安装),则足以利用实用程序脚本甘休所有YARN进度。由于纱线:

yarn工作流程:

1、client
submit提交一个Job到ResourceManager,进入ResourceManager中的Scheduler队列供调度

2、ResourceManager根据NodeManager汇报的资源境况(NodeManager会定时报告资源和container使用状态),请求一个相宜的NodeManager
launch container,在该NodeManager所在机器开动运行ApplicationMaster

3、ApplicationMaster启动后,注册到ResourceManager上,以便client可以查到ApplicationMaster的音讯,便于client直接和ApplicationMaster通信

4、ApplicationMaster启动后,依照Job相关意况,会和ResourceManager协商申请container资源

5、ResourceManager分配给ApplicationMaster
container资源后,根据container的新闻,向对应的NodeManager请求launch
container

6、NodeManager启动container运行task,运行进程中向ApplicationMaster汇报过程景况音信,同时NodeManager也会定时的向ResourceManager汇报container的使用景况。

7、在application(job)执行进程中,client可以和ApplicationMaster通信,获取application相关的快慢和情况新闻。

8、在application(job)完结后,ApplicationMaster通告ResourceManager清除自己的相关信息(即AM自己关闭自己),并关闭,释放自己占据的container。

[纱线] $ $ HADOOP_HOME / sbin / stop-yarn.sh
停下WebAppProxy服务器。在WebAppProxy服务器上作为纱线运行。借使使用多个服务器进行负载平衡,则应在每个服务器上运行:

尖叫提示:Container为啥物?

Container:

1、Container是yarn框架中对此资源的肤浅描述,它包裹了某个节点上一丁点儿的资源(CPU与内存),你可以通晓为Container是一个Java类,里面封装了对于资源的一多样描述,还包裹了眼前Job职责运行的一对代码。

2、Container由ApplicationMaster向ResourceManager申请的,由ResouceManager中的资源调度器异步分配给ApplicationMaster

3、Container的运转是由ApplicationMaster向资源各处的NodeManager发起的(即运行职责)

[纱线] $ $ HADOOP_HOME / bin /纱线为止代理服务器
应用以下命令停止MapReduce JobHistory服务器,在炫耀的指定服务器上运行:

Container分类:

1、运行用户指定任务(ApplicationMaster)的Container:

那是由ResourceManager(向其中的资源调度器)申请和启动的,用户提交应用程序时,可指定唯一的ApplicationMaster所需的资源;

2、运行各样职责的Container:

那是由ApplicationMaster向ResourceManager申请的,并由ApplicationMaster与NodeManager通信以启用该Container

上述两类Container可能在随机节点上,它们的职位一般而言是随便的,即ApplicationMaster可能与它管理的天职运行在一个节点上。

连锁术语知识点:

(本地松弛:是指假若某台NodeManager所能提供的Container不足,则在本台机架寻找另一台机器是否可以提供,如若本台机架所有机器都不可能提供所需Container,则换一台机架找寻)

(机架感知:有趣味的同班请查阅有关博客:http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2843015.html,此处不再赘述)

[mapred] $ $ HADOOP_HOME / bin / mapred –daemon stop historyserver

** Hadoop基础配置

在进展Hadoop配置的时候,大家有时需要借助官方文档,毕竟那么多的配置属性,不是能一切记下来的

官方文档链接:http://hadoop.apache.org/docs/r2.5.2/

在大家的案例中,Hadoop的布局文档位于:

/opt/modules/hadoop-2.5.0/etc/hadoop

进入该目录,查看该目录文件结构如图:

咱俩布署Hadoop就是布置那其间的xml文件和sh脚本文件,如若选拔vi编辑器配置来说,可能不太习惯?那么接下去大家聊天怎么选择Notepad++来配置(没有该软件的请自行下载)

打开Notepad++,如图:

如图所示3个地点要求注意:

1、红框:是否开启NppFTP视图,即左边的视图

2、蓝框:点击后,选拔“Profile Settings”弹出绿框内容

3、绿框:点击Add
new,我那边添加了一个z01,hostname主机名为z01,port端口号为:22,Username登录系统的用户为z,Password密码为您设置的该用户的密码

安顿达成后,如下图,点击框内按钮,连接登录:

签到成功如图:

进入到/opt/modules/hadoop-2.5.0/etc/hadoop目录,即可使用Notepad++来编辑文本内容了,方便多了~

配备标准开班

1、首先修改3个.sh文件中的JDK路径

该3个公文分别是:

hadoop-env.sh

mapred-env.sh

yarn-env.sh

修改内容为:

export JAVA_HOME=/opt/modules/jdk1.8.0_111,如图:

修改后记得保存

2、hdfs配置

* core-site.xml

法定文档表明:http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-common/core-default.xml

修改后记念保存

性能解释:

fs.defaultFS:HDFS集群访问入口地址,其中z01也足以换成当下Linux的本机ip,即使那时候您还并未在Linux中装置主机名映射,请参见此前Linux中的知识点举办设置即可。

hadoop.tmp.dir:数据存放路径

* hdfs-site.xml

合法文档表达:http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

修改后纪念保存

属性解释:

dfs.replication:数据块副本数,默许为3。

* slaves

宣示哪些服务器是datanode,每行一个主机名即可。

该案例大家只设置1个,即眼前虚拟机机器

3、yarn配置

* yarn-site.xml

合法文档:http://hadoop.apache.org/docs/r2.5.2/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

性能解释:

yarn.nodemanager.aux-services:NodeManager上运行的隶属服务。需配备成mapreduce_shuffle,才可运行MapReduce程序

yarn.resourcemanager.hostname:resourcemanager的主机名,即哪一台主机当做ResourceManager

yarn.log-aggregation-enable:是否打开日志聚合功用

yarn.log-aggregation.retain-seconds:在HDFS上聚合的日记最多保留多长期,单位:秒,86400约等于24时辰

其他属性:

yarn.nodemanager.resource.memory-mb:表示该节点上yarn可应用的大体内存总量,默认是8192MB,如若该节点机器的内存不足8G,则必要调小那一个值,yarn不会智能的探测节点的大体内存总量。

yarn.nodemanager.vmem-pmem-ratio:义务每使用1MB物理内存,最多可采纳的虚构内存量,默许为2.1。

yarn.nodemanager.pmem-check-enabled:是否启动一个县份检查每个任务正在选取的大体内存量,假若职务超出分配值,则一贯将其杀掉,默认值为true。

yarn.nodemanager.vmem-check-enabled:是否启动一个线程检查每个职务正在使用的虚构内存量,如果职分超出分配值,则一向将其杀死,默许值为true。

yarn.scheduler.minimum-allocation-mb:单个任务可申请的最少物理内存量,默许是1024MB,借使一个职务申请的大体内存量少于该值,则对应的值改为那几个数。

yarn.scheduler.maximum-allocation-mb:单个义务可申请的最多物理内存量,默许是8192MB。

4、map-reduce配置

* mapred-site.xml

官方文档:http://hadoop.apache.org/docs/r2.5.2/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

特性解释:

mapreduce.framework.name:设置运行MapReduce义务的框架

mapreduce.jobhistory.address:自带了一个历史服务器,可以经过历史服务器查看已经运行完的Mapreduce作业记录,比如用了稍稍个Map、用了略微个Reduce、作业提交时间、作业启动时间、作业做到时间等音讯。默许景况下,Hadoop历史服务器是不曾启动的。配置该地址后,启动服务就足以由此Web
UI来查阅具体使用详情了。

mapreduce.jobhistory.webapp.address:web app客户端的造访入口

** 启动服务

起步进程分成如下多少个进程:

* 格式化hdfs

由于近期主机第一遍使用hdfs系统,所以利用从前必要先格式化

进入到/opt/modules/hadoop-2.5.0目录下

选择命令(#表示root用户下输入,$代表普通用户下输入,输入指令时留意不要加#或$,此处写上只为评释)

$ bin/hdfs namenode -format,成功格式化后如图:

* 启动hdfs相关服务

行任务令:

$ sbin/hadoop-daemon.sh start namenode:开启nodenode节点服务

$ sbin/hadoop-daemon.sh start datanode:开启datanode节点服务

最后通过jps命令来查阅进程是否启动成功

如图:

那时候得以经过浏览器成功访问hdfs管理平台:http://z01:50070,如图:

* 启动yarn相关服务

应用命令:

$ sbin/yarn-daemon.sh start resourcemanager:开启resourcemanager

$ sbin/yarn-daemon.sh start nodemanager:开启nodemanager

做到后选用jps检查是不是启动成功,如图:

那儿得以因此浏览器成功访问yarn管理平台:http://z01:8088,如图:

$ sbin/mr-jobhistory-daemon.sh start
historyserver:开启historyserver服务,如图:

OK,所有的劳务都早已准备完毕了,下边大家来做一个小测试。

** 测试

经典案例:官方Demo单词总计

大家上边要做的一个案例是法定的demo,用于统计单词出现的频率,首先咱们需求创立一个文档,里面有若干英文单词,然后把那个文档上传到hdfs系统中,等待mapreduce总计,最终查看结果。

1、创制包罗若干单词的words.txt文档,注意单词用空格或者tab分割,创立地点为:/opt/modules/hadoop-2.5.0,如图:

2、在hdfs系统中开创/input/目录

应用命令:

$ bin/hdfs dfs -mkdir /input,如图:

3、上传words.txt文档到该目录下

运用命令:

$ bin/hdfs dfs -put words.txt /input,如图:

4、查看已上传的文本内容

使用命令:

$ bin/hdfs dfs -cat /input/words.txt,如图:

尖叫提示:当然bin/hdfs dfs中还有局地任何命令,读者可以通过输入$
bin/hdfs dfs来查阅使用办法,如图:

5、运行职责

应用命令:

$ bin/yarn jar
share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount
/input/ /output/

解释:

/input/:hdfs中的路径,表示输入路径

/output/:hdfs中的路径,表示输出路径(统计结果会在那么些目录下)

运行后,会并发如下内容:

小心红框中内容的变迁

那时,任务现已推行已毕,上面我们来看一看执行的结果

应用命令:

$ bin/hdfs dfs -cat /output/par*
:查看output那几个输出目录下的拥有以par初步的文件内容(为啥是par开端,稍后解释)

如图:

如图,单词现身频率已经出去了,上面大家来看一下web app中的变化。

6、查看web app:

hdfs(http://z01:50070):

点击红框内容,选拔“Browse the file
system”,在追寻框中输入:/,点击GO,如图:

在此你可以见见您的hdfs系统中的目录结构,分别点开input和output,大家来瞟一眼:

专注此时output中红框内容,那就分解了怎么大家刚刚查看结果的时候,要查阅的是par初叶的文件,因为出口结果的默许文件名就是其一。

yarn(http://z01:8088):

上面大家再来看看yarn平台的内容变更,刷新yarn平台后,你会发现多了一条内容:

点击history,咱们进入瞟一眼?如图:

里头体现了职务的局地特色,比如开始时间,map和reduce数量,耗时,状态等等。

** 总结

那就是hadoop平台的主导搭建,望对您具备帮~掌声~(收!)

村办腾讯网:http://weibo.com/seal13

QQ大数量技术调换群(广告勿入):476966007

下一节:Hadoop框架基础(二)

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图