Hadoop框架基础(一)

** Hadoop框架基础(一)

修一个新的东西,传统而言也,总喜欢漫无目的的扯来扯去,比如扯扯发展史,扯扯作者是何许人也,而自我道这些事物对刚刚起接触,并因开发为目的学者是从来不什么帮助的,反而给人分开了内心,比如你打LOL的时节,去玩某个英雄的时刻,一般你是未会见事先押无畏之故事背景介绍的,而是读读技能介绍(技能介绍类似于付出文档),直接上线就是关系,扔几个技巧,发现,嘿?这大胆小意思,用之大半矣,才会起或失去探视英雄的背景故事。(不消除你是一个纯的一揽子情怀主义者)

好,那么下我就算为大家简单的下结论一下业内之开场内容。

读书内容:Hadoop框架

框架源码:Java

框架的大:Doug Cutting

现阶段维护:Apache基金会

着力用途:HDFS和MapReduce。HDFS为海量的数目提供了蕴藏,MapReduce为海量的数码提供了算。

(不足够严谨的概括解释下:把坏文件数据分布存储于多独计算机及(因为若同一令计算机抱不生),然后以多高计算机及进行多少解析(因为您同样贵微机计量的徐),最终整并生结果)

Hadoop产生根源Google的有论文(大陆请动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

以上内容基本就是介绍框架时扯来扯去的主导,作者是挺了得的(这不弃话么)。在攻读过程被,如果您逐级对这些发展历史,作者,故事背景感兴趣了,你可以重新翻有关材料,毕竟学无止境。

** 准备工作

相关下载:

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

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

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

以上下载你吗可以活动下载,通过产品所对应之官网。

创连锁目录:

每当root用户下,进入/opt/目录,在拖欠目录下创造两只公文夹

mkdir softwares/:该目录用于存放各种软件设置包

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

反目录所属:

因softwares和modules这点儿只目录为root用户所开创,所以所有者/组均为root,而我辈一般以的操作用户是普通用户,所以这时候咱们要改该少独目录的主人/组,使用命令:

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

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

例如,我这里:

chown z:z /opt/modules/

传送下载后的文件及虚拟机系统

形成以上步骤后,使用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单目录就解压

安排环境变量

部署JDK的环境变量,hadoop的环境变量暂时无待配了

编写profile文件,使用命令:

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

$意为援,冒号为分隔符

** Hadoop宏观认知

Hadoop项目重要包括以下四单模块

Hadoop Common:

呢其他的Hadoop模块提供基础设备

Hadoop HDFS:

分布式文件系统

Hadoop MapReduce:

分布式离线并行计算框架

Hadoop YARN:

任务调度与资源管理框架

这里因为篇幅问题,我们只好做片基础理解,更深入之掘进需要读者自行钻研(因为向生深究所需篇幅,可以独自再次起一个专题)

** HDFS架构

总结:

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

2、Namenode是一个为主服务器,负责管理文件系统的namespace和客户端对文件的走访。Datanode在集结众多中一般是一个节点一个,负责管理节点上其附带的蕴藏。通俗来讲,datanode就是用来存储某个大文件被拆分后底一个一个的微文件。

3、一个文本分为一个还是多单block(数据块,数据块默认大小128M),这些block存储于Datanode集合里。

4、一般而言,一大机器跑一个单身的Namenode节点,集众多中之别机器各飞一个Datanode实例(当然为时有发生一个光机械跑多个Datanode)。

5、Namenode中存放的产生正数据(Metadata),比如:映射关系表(哪些数据块block存储在了怎样datanode节点中)

** YARN架构

总结:

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处理状态信息。

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。

尖叫提示:Container为何物?

Container:

1、Container是yarn框架中对此资源的肤浅描述,它包裹了某节点上简单之资源(CPU与内存),你可以知晓也Container是一个Java类,里面封装了于资源的平多级描述,还包了手上Job任务运行的片段代码。

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

3、Container的运转是由于ApplicationMaster向资源随处的NodeManager发起的(即运行任务)

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,此处不再赘述)

** 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框架基础(二)

发表评论

电子邮件地址不会被公开。 必填项已用*标注