琐碎-关于hadoop2.2.0
HDFS模块功能
- namenode:主节点,存储文件的元数据如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限)、以及每个文件的块列表和块所在的datanode等;
- datanode:在本地文件系统存储文件块数据,以及块的校验和;
- secondary namenode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照;
YARN模块功能
ResourceManager:
- 处理客户端请求;
- 启动/监控ApplicationMaster;
- 监控NodeManager;
- 资源分配和调度;
NodeManager:
- 单个节点的资源管理;
- 处理来自ResourceManager的命令;
- 处理来自ApplicationManager的命令;
ApplicationMaster:
- 数据切分;
- 为应用程序申请资源,并分配给内部任务;
- 任务监控和容错;
Container:
- 对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关信息;
MR模块功能
... ...
日志
- 启动日志文件目录 $HADOOP_HOME/logs;
- 日志格式 .out和.log
.log:通过log4j记录的,大部分的应用日志信息;
.out:记录标准输出和标准错误日志,少。
- 日志命名规则
框架名称-用户名-进程名-主机名-日志格式后缀
目录sbin里面的启动脚本中有hadoop-daemon.sh、yarn-daemon.sh和hadoop-daemons.sh、yarn-daemon.sh
它们有什么区别呢?
hadoop-daemon.sh分别启动每个进程,在slave上也要手动去敲命令
而hadoop-daemon.sh只需要在namenode中就可以,它从配置文件中获取所有的slave,然后远程上去调用hadoop-daemon.sh启动单个进程。
yarn-daemon.sh也一样。
历史服务器
1.x中有jobtracker,2.x中没有,那怎么从web ui中查看历史作业运行情况呢?
那就是historyserver。
默认情况下历史服务器不启动
启动命令和关闭命令
- sbin/mr-jobhistory-daemon.sh start historyserver
- sbin/mr-jobhistory-daemon.sh stop historyserver
web UI地址: http://master:19888/
在2.X中多了一种针对MR小作业的优化机制:Uber模式
在运行一个作业的时候会有一条输出语句为Job job_xxxxxx_xxxx running in uber mode:false/true
如果作业足够小,则所有的task在一个JVM(mr app master)中完成作业,比每个task启动一个container更划算
手动设置参数:mapreduce.job.ubertask.enable 默认为 false
notepad+FZ+SecureCRT这个组合还不错