Hadoop 2.6 日志文件和MapReduce的log文件研究心得


学习演练Hadoop 2.6有一段日子了。现在才大致搞清楚了系统里面各个log的位置和功能,在这里总结一下。网上的资料并不丰富,甚至Google出来的结果也不是很满意,或许这个是太简单了,牛人都不屑来写。也可能是各个公司藏着掖着的东西。

Hadoop 2.6包含两个大部分:DFS和Yarn,而Yarn里面又包含在Resource Manager的JVM中运行的部分和在Node Manager里面运行的JVM部分。所以整个系统(不考虑加装ZooKeeper的HA的情况)的log是分别放在3个log里面的。

1. 对于DFS的log,在Name Node和Data Node里面,默认可以在${HADOOP_INSTALL}/logs里面看到。这个是非DFS的文件,直接可以通过Linux文件系统看到。

2. 对于Yarn的log,在Resource Manager和Node Manager里面,默认可以在${HADOOP_INSTALL}/logs里面看到。这个也是非DFS的文件,直接可以通过Linux文件系统看到。

对于MapReduce任务的log,情况就比较的复杂了。在2.6里面,task是按照application->container的层次来管理的,所以在Name Node机器上运行mapreduce程序的时候,在console里面看到的log都可以通过在相应的data node/node manager里面的${HADOOP_INSTALL}/logs/userlogs下面找到。这个部分也是非DFS文件,直接可以通过Linux文件系统看到。

这些log也

  • 11
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MapReduce是一种分布式计算框架,可以方便地处理大规模数据集。在Hadoop中,MapReduce被广泛应用于数据处理和分析。下面是一个基于MapReduce文件合并和去重的实现方法。 假设我们有一批文本文件需要合并,并且这些文件可能包含重复的数据记录。我们需要使用MapReduce来实现这个任务。 首先,我们需要定义MapReduce的输入和输出格式。对于输入,我们将每个文件作为一个输入记录,并将文件的内容作为值。对于输出,我们将每个不重复的记录作为一个输出记录,并将记录的内容作为值。 接下来,我们需要实现Map和Reduce函数。Map函数将每个输入记录解析为多个数据记录,并将它们映射到键-值对。对于我们的文件合并和去重任务,我们可以使用文件中的每一行作为一个输入记录,并将行内容作为值。在Map函数中,我们将每个行内容作为键,并将一个固定的值作为值。这样,Map函数将为每个不同的行内容生成一个键-值对。 Reduce函数将相同键的所有值合并为一个输出记录,并将输出记录写入输出文件。对于我们的文件合并和去重任务,Reduce函数将接收到每个不同行内容的键-值对,并将它们合并为一个输出记录。输出记录的键是行内容,值是固定的值。 下面是一个伪代码实现: ```python class MergeAndDeduplicationMapper extends Mapper<LongWritable, Text, Text, Text> { public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { // 将每一行作为一个键,将固定的值作为值 String[] lines = value.toString().split("\n"); for (String line : lines) { context.write(new Text(line), new Text("1")); } } } class MergeAndDeduplicationReducer extends Reducer<Text, Text, Text, Text> { public void reduce(Text key, Iterable<Text> values, Context context) throws IOException, InterruptedException { // 将相同的键合并为一个输出记录 context.write(key, new Text("1")); } } // 配置作业并运行 job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Text.class); job.setMapperClass(MergeAndDeduplicationMapper.class); job.setReducerClass(MergeAndDeduplicationReducer.class); FileInputFormat.addInputPath(job, new Path(inputPath)); FileOutputFormat.setOutputPath(job, new Path(outputPath)); job.waitForCompletion(true); ``` 在上面的代码中,我们使用TextInputFormat作为输入格式,并使用TextOutputFormat作为输出格式。我们还指定了Mapper和Reducer类,并设置了输入和输出键-值的类型。最后,我们将输入和输出路径添加到作业中,并运行作业。 在运行MapReduce作业后,我们将得到一个合并并去重后的输出文件,其中包含所有不同的行内容。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值