2、HDFS和Yarn的基础学习笔记
日志 --排错
.log:通过log4j记录的,记录大部分应用程序的日志信息
.out:记录标准输出和标准错误日志,少量记录
hdfs 常用shell
-ls
-put <localsrc> ... <dst> 上传
-cat -text 查看文件内容
-mkdir [-p]
-mv
-cp
-du
-chmod
认识一些重要的配置选项:
namenode 元数据??
datanode 数据存储目录 ?
系统默认:
文件名:core-default.xml、hdfs-default.xml、yarn-default.xml、mapred-default.xml
自定义的:
位置:$HADOOP_HOME/etc/hadoop
文件名:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
自定义namenode节点 datanode节点
hdfs-site.xml:
<property> <name>dfs.namenode.http-address</name> <value>hadoop1:50070</value> </property>
core-site.xml
<property> <name>hadoop.tmp.dir</name> <value>/opt/modules/hadoop-2.5.0/data</value> </property>
yarn-site.xml
<property> <name>yarn.resourcemanager.hostname</name> <value>hadoop1</value> </property>
日志聚合
--日志上传到HDFS
yarn-site.xml
<property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property>
<property>
<name>yarn.log-aggregation.retain-seconds</name> <value>86400</value> </property>
mapred-site.xml
<property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop1:19888</value> </property>
启动服务
$ sbin/mr-jobhistory-daemon.sh start historyserver
目前:
31134 NameNode 429 Jps 31215 DataNode 32026 NodeManager 32175 JobHistoryServer 31779 ResourceManager
hdfs --namenode datanode
--resourcemanager nodemanager
namenode
--元数据(文件名、权限、时间)
fsimage(内存) 二进制
--> put rm mkdir -->edits
edits_log 二进制
-->重启
-->hdfs有很多修改(元数据-->edits很大) replay
-->下一次重启namenode,合并变得很慢
secondary namenode(不是热备)
-->周期性合并fsimage和edits,辅助namenode
-->通常安装到另外一台物理服务器
--周期性:1H
--edits:64M
hdfs-site.xml
<property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop1:50090</value> </property>
namenode
--HDFS的中心服务器
--客户端访问HDFS集群的入口
--响应给客户端的数据直接由datanode传出
--读取文件时NameNode尽量让用户先读取最近的副本
--周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)
datanode
--存储数据
--以块为单位进行存储(128M)
--报告块的状态(1H)
--周期性向namenode注册(3s)--(10min)
--在线加入/卸载服务器
HDFS数据安全性??
safemode安全模式: --HDFS
--进入安全模式以后变成只读
1、在namenode启动过程中
-->datanode
2、dfs.namenode.safemode.threshold-pct
-->0.999f -->block
HDFS
--存储大、动态扩展
--运行在普通的商用服务器(容错高)
--副本数、保证数据安全
--一次写入、多次读写
--不适合修改比较频繁的业务
--适合存储大文件,不适合存储太多小文件
yarn --资源管理
resourcemanager
--处理客户端请求
--启动/监控ApplicationMaster
--监控NodeManager
--资源分配与调度
Application Master
--作为job任务的管理者
--为应用程序申请资源,并进一步分配给内部任务
--任务监控与容错
NodeManager
--单个节点上的资源管理和任务管理
--处理来自ResourceManager的命令
--处理来自ApplicationMaster的命令
Container
--对任务运行环境的抽象
--描述一系列信息
--任务运行资源(节点、内存、CPU)
--任务启动命令
--任务运行环境
yarn任务运行流程:
1、resourcemanager收到客户端请求
2、resourcemanager会去生产一个application master,作为当前job任务的管理者
3、application master再去resource manager申请资源
4、resource manager响应application master的资源申请
5、application master分派任务给其他nodemanager(container)
6、nodemanager接受到任务指派以后,开始执行job任务
7、nodemanager执行完成以后向管理者报告
8、application master向resourcemanager报告
yarn.nodemanager.resource.memory-mb 8G
yarn.nodemanager.resource.cpu-vcores
memory多少会影响任务执行是否失败
cpu只会job任务的快慢