小编Coi*_*igh的帖子

Hadoop名称节点格式警告

当我执行订单时

"bin/hadoop namenode -format"
Run Code Online (Sandbox Code Playgroud)

在Linux中,我得到了以下警告,

"WARN common.Util: Path /data/dfs/name should be specified as a URI in configuration files. Please update hdfs configuration."
Run Code Online (Sandbox Code Playgroud)

文件hdfs-site.xml中的namenode dir设置是

<property>
    <name>dfs.namenode.name.dir</name>
    <value>/data/dfs/name</value>
    <final>true</final>
</property>
Run Code Online (Sandbox Code Playgroud)

当我改变它

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:///data/dfs/name</value>
    <final>true</final>
</property>
Run Code Online (Sandbox Code Playgroud)

警告消失了,那么"file://"是什么意思,我们为什么要在那里添加呢?

hadoop

6
推荐指数
1
解决办法
5574
查看次数

为什么在Mapreduce作业中需要setMapOutputKeyClass方法

当我编写mapreduce程序时,我经常编写代码

 job1.setMapOutputKeyClass(Text.class); 
Run Code Online (Sandbox Code Playgroud)

但是为什么我们要明确指定MapOutputKeyClass呢?我们已经在mapper类中进行了spicify,例如

public static class MyMapper extends
        Mapper<LongWritable, Text, Text, Text>
Run Code Online (Sandbox Code Playgroud)

在Hadoop:权威指南一书中,有一个表显示方法setMapOutputKeyClass是可选的(属性用于配置类型),但是在我测试时,我发现它是必要的,或者eclipse的控制台会显示

Type mismatch in key from map: expected org.apache.hadoop.io.LongWritable, received org.apache.hadoop.io.Text
Run Code Online (Sandbox Code Playgroud)

有人能告诉我它的原因吗?

在书中,它说

"必须与MapReduce类型兼容的设置列于表8-1的下半部分".这是否意味着我们必须设置下部属性类型,但不必设置较高部分属性类型?

表的内容如下所示:

Properties for configuring types:
mapreduce.job.inputformat.class  
mapreduce.map.output.key.class  
mapreduce.map.output.value.class  
mapreduce.job.output.key.class  
mapreduce.job.output.value.class 

Properties that must be consistent with the types:
mapreduce.job.map.class   
mapreduce.job.combine.class  
mapreduce.job.partitioner.class  
mapreduce.job.output.key.comparator.class 
mapreduce.job.output.group.comparator.class  
mapreduce.job.reduce.class  
mapreduce.job.outputformat.class
Run Code Online (Sandbox Code Playgroud)

types mapreduce

1
推荐指数
1
解决办法
1638
查看次数

标签 统计

hadoop ×1

mapreduce ×1

types ×1