大数据之Hadoop2

大数据之Hadoop2.0入门2

一.YARN组件讲解

ResourceManager

全局的资源管理器,整个集群上只有一个,负责集群资源的统一调度分配,负责对各个NodeManager上的资源进行统一的管理和调度。

ApplicationMaster

它负责向ResourceManager申请资源,并要求NodeManager启动可以占用一定资源任务,客户提交的每个应用程序都包含一个ApplicationMaster。主要功能:与ResourceManager调度协商获取资源(用Container),与NodeManager进行通信启动和停止任务,监控所有任务运行状态,并在任务运行失败时重新申请资源用于重启任务。

NodeManager

NM是每个节点上的资源和任务管理器,一方面,它会定时向ResourceManager汇报本节点上资源的使用情况和各个节点上Container的运行状态;另一方面,他会接收并处理来自ApplicationMaster的Container启动和停止请求。

Container

Container是YARN中的抽象概念,它分装了CPU,内存,多个节点上的多维度资源,当ApplicationMaster向ResourceManager申请资源时,ResourceManager返回给ApplicationMaster的资源便是Container,YARN会给每个任务分配一个Container,且任务只能使用该Container中描述的资源。

二.HDFS文件系统架构及原理讲解

数据块(block):每个块的默认大小:128Mb,大小可以用户自定义,如果一个文件的大小小于块的大小,是不会占据整个块的空间的。

128Mb的文件块,namenode会为他创建一个元数据信息,这个信息也是要占据空间,存在namenode的内存当中

vi hdfs-site.xml
<property>
	<!--块大小单位默认为byte-->
	<name>dfs.blocksize</name>
	<value>134217728</value>
</property>

存储模式:

首先,HDFS会默认分块,大小是128Mb(可修改),HDFS上面的块的大小可以大于128Mb,设定的方法有:

1.通过HDFS的API的create方法,可以指定创建的文件块的大小(大小任意);

2.hive当中也可以在hive-site当中设定,hive输出块的大小(可任意大于128Mb);

522Mb的文件,分成几个Map来处理呢?

首先,前3个128Mb各对应一个Map,最后一个138Mb小于128*1.1Mb,所以这里就不会再开启一个map来处理那10Mb,直接在最后一个map当中把所有138Mb的数据输入,切记。

MapReduce有这样的机制,最后一个文件的输入如果小于128*1.1(其实就是可以多10%),那么只会启动一个Map来执行这个job。

HDFS不适合存储大量的小文件,可以考虑合并大文件,效果不明显。阿里巴巴开源了TFS淘宝文件系统,参考了HDFS.

主节点(NameNode)

元数据是存储在namenode内存中的

元数据在本地也有备份,fsimage镜像文件

edits称作编辑日志文件,用于记录用户对HDFS的所有的行为操作

namenode在启动的时候还会去读取加载edits编辑日志文件

edits越来越大,考虑将fsimage和edits合并

secondarynamenode(不会对外提供服务)进行合并功能:

合并文件,减少下一次namenode启动时间,namenode在重新启动之后会读取新的合并的文件,生成新的fsimage镜像文件和edits编辑日志文件,原来初始化的两个文件就没有用了。

二.MapReduce历史服务器history及常见错误分析

1.历史服务器:查看已经运行完成的应用记录。

配置:

修改mapred-site.xml:指定historyserver的地址,内部和外部通信端口,如果不指定默认是本机,historyserver是一个轻量级的服务,可以部署在任意一台节点上。

vi mapred-site.xml
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <!--以下端口号不要随意改动-->
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop01:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop01:19888</value>
    </property>
</configuration>

2.日志聚合功能

指定开启日志聚合功能,指定日志存放在HDFS上的时间期限,一般建议3-7天左右,存放在HDFS的/tmp/用户之下

vi yarn-site.xml
<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>106800</value>
    </property>
</configuration>

3.重启节点,重启yarn进程

#启动节点
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
#启动yarn
yarn-daemon.sh start resourcemanager
yarn-daemon.sh start nodemanager
#启动历史服务器
mr-jobhistory-daemon.sh start historyserver
#关闭历史服务器
mr-jobhistory-daemon.sh stop historyserver

4.配置用户权限

关闭用户权限检测

vi hdfs-site.xml
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop01:50090</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
    <!--配置静态用户-->
    <property>
		<name>hadoop.http.staticuser.user</name>
		<value>nike</value>
	</property>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值