hadoop
2022-05-05 09:46:54 57 举报
hadoop 分布式运行机制
作者其他创作
大纲/内容
将mapreduce相关的jar包,config和List提交到HDFS的以作业ID为名的目录
1.格式化2. 关闭NameNode
有且只有1个,负责管理HDFS
SecondaryNameNode
至少一个,通常多个,负责集群计算
JobTracker
./bin/hadoop fs -put ./facebook.txt /urls/facebook.txt
分散存储到DataNode
有且只有1个,辅助NameNode
格式化
1. 接到新任务,将这个任务所在的作业的 jar 文件以及所有需要处理的数据文件从 JobTracker 和HDFS 复制到本地磁盘上2. TaskTracker 创建一个 TasckRunner 实例运行这个任务。每隔一段是时间,将任务执行的进度通过心跳发送给 JobTracker3. 任务运行的时候,处理各种失败问题。
Client
申请作业ID
DataNode
通知JobTracker执行作业
接受TaskTracker的心跳
./bin/hadoop start-all.sh
NameNode
TaskTrackerDataNode
facebook.txt文件切割成块
分布式Hadoop
启动
待处理数据facebook放入HDFS
InputSplit
+ path:string+ start:int+ length:int+ host:string
....
List getSplits(JobContext context)
./bin/hadoop apache-nutch-2.3.1.job hdfs://10.45.29.182/urls/facebook.txt pegasus 3
有且只有1个,负责Hadoop作业管理,所有MapReduce由它负责
根据InputFormat将facebook.txt处理成多个InputSplit
检查输出目录
1. 如为空闲心跳,则返回新任务给TaskTracker2. 如为执行中的心跳,则根据心跳的状态计算进度,供客户端查询3. 失败心跳,处理异常
每秒查询一次JobTracker,得到进度和状态
没指定输出目录或者输出目录已经存在,异常退出
result: 作业ID
./bin/hadoop namenode -format
1. 初始化2. 获取List3. 给每个InputSplit 创建一个map4. 创建若干个reduce
0 条评论
回复 删除
下一页