一、Hadoop数据压缩
1.压缩概述
1.1优点:减少磁盘IO、减少磁盘存储空间
1.2缺点:增加CPU开销
1.3压缩原则
1)运算密集型的Job,少用压缩
2)IO密集型的Job,多用压缩
2.各类压缩方式的对比
2.1Gzip压缩
优点:压缩率比较高;
缺点:不支持Split;压缩/解压速度一般;
2.2Bzip2压缩
优点:压缩率高;支持Split;
缺点:压缩/解压速度慢。
2.3Lzo压缩
优点:压缩/解压速度比较快;支持Split;
缺点:压缩率一般;想支持切片需要额外创建索引。
2.4Snappy压缩
优点:压缩和解压缩速度快;
缺点:不支持Split;压缩率一般;
二、Yarn资源调度器
1基础架构
YARN主要由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成。
2.工作机制
(1)MR程序提交到客户端所在的节点。
(2)YarnRunner向ResourceManager申请一个Application。
(3)RM将该应用程序的资源路径返回给YarnRunner。
(4)该程序将运行所需资源提交到HDFS上。
(5)程序资源提交完毕后,申请运行mrAppMaster。
(6)RM将用户的请求初始化成一个Task。
(7)其中一个NodeManager领取到Task任务。
(8)该NodeManager创建容器Container,并产生MRAppmaster。
(9)Container从HDFS上拷贝资源到本地。
(10)MRAppmaster向RM 申请运行MapTask资源。
(11)RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。
(12)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。
(13)MrAppMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
(14)ReduceTask向MapTask获取相应分区的数据。
(15)程序运行完毕后,MR会向RM申请注销自己。
3.Yarn常用命令
3.1 yarn application查看任务
1)列出所有Application
[atguigu@hadoop01 hadoop]$ yarn application -list
2)根据Application状态过滤:yarn application -list -appStates (所有状态:ALL、NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED)
[atguigu@hadoop01 hadoop]$ yarn application -list -appStates FINISHED
3)杀掉所有Application
[atguigu@hadoop01 hadoop]$ yarn application -kill -applicationId <ApplicationId>
3.2 yarn logs查看日志
1)查询Application日志:
[atguigu@hadoop01 hadoop]$ yarn logs -applicationId <ApplicationId>
2)查询Container日志:yarn logs -applicationId <ApplicationId> -containerId <ContainerId>
[atguigu@hadoop01 hadoop]$ yarn logs -applicationId <ApplicationId> -containerId <ContainerId>
3.3 查看尝试运行的任务(yarn applicationattempt)
1)列出所有Application尝试的列表
yarn applicationattempt -list <ApplicationId>
2)打印ApplicationAttemp状态
yarn applicationattempt -status <ApplicationAttemptId>
3.4yarn container查看容器
1)列出所有Container
yarn container -list <ApplicationAttemptId>
2)打印Container状态
yarn container -status <ContainerId>
3.5 查看节点状态(yarn node)
yarn node -list -all
3.6更新配置(yarn rmadmin)
[atguigu@hadoop01 hadoop]$ yarn rmadmin -refreshQueues
3.7 查看队列(yarn queue)
打印队列信息:yarn queue -status <QueueName>
[atguigu@hadoop01 hadoop]$ yarn queue -status default