ERROR mapreduce.TableInputFormatBase

本文解决了一个关于HBase依赖HDFS时出现的错误,该错误提示无法解析指定的IP地址,建议在配置文件中使用主机名而非IP地址。

 ERROR mapreduce.TableInputFormatBase: Cannot resolve the host name for /192.168.71.10 because of javax.naming.NameNotFoundException ;DNS name not found


配置的Hbase所依赖的HDFS的namenode,尽可能不要使用IP,通过hostname来指定

<think>我们正在配置MapReduce的配置文件mapred-site.xml,需要设置以下几个关键点: 1. 设置MapReduce框架为YARN:即配置mapreduce.framework.name为yarn。 2. 设置MRAppMaster的环境变量(yarn.app.mapreduce.am.env)以及Map任务环境变量(mapreduce.map.env)和Reduce任务环境变量(mapreduce.reduce.env)。这些环境变量通常用于指定JVM参数或其他环境设置。 3. 设置MapReduce作业的类路径(mapreduce.application.classpath)。这个类路径非常重要,它告诉YARN在哪里可以找到运行MapReduce作业所需的库。 注意:在Hadoop 3.x版本中,类路径的设置已经有所变化,我们需要参考Hadoop官方文档中给出的推荐配置。 具体步骤如下: 1. 打开mapred-site.xml文件(位于$HADOOP_HOME/etc/hadoop目录下)。 2. 添加或修改以下配置项。 对于环境变量的设置,我们可以设置JVM参数,例如设置堆内存大小、垃圾回收器等。这里我们以设置MRAppMaster的环境变量为例,设置JVM堆内存参数: <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> 但是,通常我们更关注JVM参数,所以可能会这样设置(以设置堆内存为例): <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_JAVA_HOME=/path/to/java</value> </property> 或者更复杂的设置,例如: <property> <name>yarn.app.mapreduce.am.env</name> <value>JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64</value> </property> 不过,如果只是简单设置,也可以不配置,因为默认会使用系统环境变量。 3. 设置类路径(mapreduce.application.classpath):这个配置项非常重要,它指定了MapReduce应用程序在YARN上运行时所需的类路径。在Hadoop 3.x中,类路径的配置通常如下(注意:具体路径可能会根据安装目录有所调整): <property> <name>mapreduce.application.classpath</name> <value> $HADOOP_HOME/share/hadoop/common/*, $HADOOP_HOME/share/hadoop/common/lib/*, $HADOOP_HOME/share/hadoop/mapreduce/*, $HADOOP_HOME/share/hadoop/mapreduce/lib/*, $HADOOP_HOME/share/hadoop/yarn/*, $HADOOP_HOME/share/hadoop/yarn/lib/* </value> </property> 注意:在Hadoop 3.x中,官方推荐使用以下类路径(具体请参见官方文档): <value> $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*, $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*, $HADOOP_MAPRED_HOME/share/hadoop/common/*, $HADOOP_MAPRED_HOME/share/hadoop/common/lib/*, $HADOOP_MAPRED_HOME/share/hadoop/yarn/*, $HADOOP_MAPRED_HOME/share/hadoop/yarn/lib/* </value> 但是,请注意变量$HADOOP_MAPRED_HOME和$HADOOP_HOME的区别。通常,$HADOOP_MAPRED_HOME就是$HADOOP_HOME。 因此,我们可以按照如下方式配置: 下面是一个完整的mapred-site.xml配置示例: </think>### MapReduce配置文件`mapred-site.xml`配置指南 #### 📝 配置文件位置 `$HADOOP_HOME/etc/hadoop/mapred-site.xml` #### ⚙️ 完整配置示例 ```xml <configuration> <!-- 设置执行框架为YARN --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <description>指定MapReduce运行在YARN框架上</description> </property> <!-- 设置MapReduce应用类路径 --> <property> <name>mapreduce.application.classpath</name> <value> $HADOOP_HOME/share/hadoop/common/*, $HADOOP_HOME/share/hadoop/common/lib/*, $HADOOP_HOME/share/hadoop/mapreduce/*, $HADOOP_HOME/share/hadoop/mapreduce/lib/*, $HADOOP_HOME/share/hadoop/yarn/*, $HADOOP_HOME/share/hadoop/yarn/lib/* </value> <description>定义MapReduce作业的类路径</description> </property> <!-- 设置MRAppMaster环境变量 --> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> <description>MRAppMaster进程的环境变量</description> </property> <!-- 设置Map任务环境变量 --> <property> <name>mapreduce.map.env</name> <value>JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64</value> <description>Map任务执行环境变量</description> </property> <!-- 设置Reduce任务环境变量 --> <property> <name>mapreduce.reduce.env</name> <value>JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64</value> <description>Reduce任务执行环境变量</description> </property> </configuration> ``` #### 🔧 关键配置说明 1. **框架设置**: - `mapreduce.framework.name=yarn`:启用YARN资源管理框架[^1] - 确保YARN已正确配置(`yarn-site.xml`) 2. **类路径配置**: - `mapreduce.application.classpath`:需包含所有MapReduce依赖库路径 - 使用`$HADOOP_HOME`变量确保路径可移植性 3. **环境变量**: - `yarn.app.mapreduce.am.env`:控制MRAppMaster进程环境 - `mapreduce.map.env`/`mapreduce.reduce.env`:分别设置Map和Reduce任务环境 - 典型用例:指定JAVA_HOME、堆内存设置或自定义库路径 #### ️ 实施步骤 1. 编辑配置文件: ```bash sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml ``` 2. 应用配置后重启服务: ```bash stop-yarn.sh && stop-dfs.sh start-dfs.sh && start-yarn.sh ``` 3. 验证配置: ```bash # 检查框架设置 yarn node -list # 查看环境变量(需提交测试作业) yarn logs -applicationId <app_id> | grep "Environment" ``` #### ⚠️ 注意事项 1. **类路径完整性**: - 缺少路径会导致`ClassNotFoundException` - 新增第三方库时需更新类路径 2. **环境变量优先级**: ```mermaid graph LR A[系统环境变量] --> B[mapred-site.xml] B --> C[作业级别配置] C --> D[最终生效值] ``` 3. **YARN集成要求**: - 确保`yarn-site.xml`中`yarn.nodemanager.aux-services`包含`mapreduce_shuffle` - ResourceManager和NodeManager需同时重启 > 💡 **最佳实践**:生产环境建议为Map/Reduce任务配置独立环境变量: > ```xml > <property> > <name>mapreduce.map.env</name> > <value>LD_LIBRARY_PATH=/opt/custom/libs:$LD_LIBRARY_PATH</value> > </property> > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值