hadoop错误日志

本文解决Hadoop启动时出现的namenode错误及LiveNodes显示异常问题,并修复了hadoop-1.0.4编译时的类型变量错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:3个节点,启动之后namenode报错,且存活节点( Live Nodes )只显示1个

2013-05-14 20:01:09,839 INFO org.apache.hadoop.ipc.Server: IPC Server handler 9 on 9000: starting

2013-05-14 20:01:13,659 ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:hadoop cause:java.io.IOException: File /home/hadoop/bigdata/hadoop-1.0.4/hadoopdata/mapreduce/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
2013-05-14 20:01:13,660 INFO org.apache.hadoop.ipc.Server: IPC Server handler 0 on 9000, call addBlock(/home/hadoop/bigdata/hadoop-1.0.4/hadoopdata/mapreduce/system/jobtracker.info, DFSClient_1548490558, null) from 172.16.201.170:60801: error: java.io.IOException: File /home/hadoop/bigdata/hadoop-1.0.4/hadoopdata/mapreduce/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
java.io.IOException: File /home/hadoop/bigdata/hadoop-1.0.4/hadoopdata/mapreduce/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1558)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:696)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)

        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)

解决方案:

关闭防火墙:sudo ufw disable

2,hadoop1.0.4编译出错

compile:
     [echo] contrib: gridmix
    [javac] /home/hadoop/hadoopsrc/hadoop1.0.4/src/contrib/build-contrib.xml:185: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 31 source files to /home/hadoop/hadoopsrc/hadoop1.0.4/build/contrib/gridmix/classes
    [javac] /home/hadoop/hadoopsrc/hadoop1.0.4/src/contrib/gridmix/src/java/org/apache/hadoop/mapred/gridmix/Gridmix.java:396: error: type argument ? extends T is not within bounds of type-variable E
    [javac]   private <T> String getEnumValues(Enum<? extends T>[] e) {
    [javac]                                         ^
    [javac]   where T,E are type-variables:
    [javac]     T extends Object declared in method <T>getEnumValues(Enum<? extends T>[])
    [javac]     E extends Enum<E> declared in class Enum
    [javac] /home/hadoop/hadoopsrc/hadoop1.0.4/src/contrib/gridmix/src/java/org/apache/hadoop/mapred/gridmix/Gridmix.java:399: error: type argument ? extends T is not within bounds of type-variable E
    [javac]     for (Enum<? extends T> v : e) {
    [javac]               ^
    [javac]   where T,E are type-variables:
    [javac]     T extends Object declared in method <T>getEnumValues(Enum<? extends T>[])
    [javac]     E extends Enum<E> declared in class Enum
    [javac] Note: Some input files use unchecked or unsafe operations.
    [javac] Note: Recompile with -Xlint:unchecked for details.
    [javac] 2 errors

解决方案:

将 private <T> String getEnumValues(Enum<? extends T>[] e) {

改为private String getEnumValues(Enum<?>[] e) { 

 StringBuilder sb = new StringBuilder(); 

String sep = "";

将 for (Enum<? extends T> v : e) {

改为 for (Enum<?> v : e) { 

sb.append(sep);       sb.append(v.name());       sep = "|";


### Hadoop 配置日志设置教程及日志管理 Hadoop 日志管理是集群运维的重要组成部分,通过配置日志可以查看和管理集群的运行状态、错误信息以及调试信息。以下是关于 Hadoop 配置日志的相关说明。 #### 1. Hadoop 日志的组成 Hadoop 日志主要由以下几部分构成:应用程序日志、系统日志和审计日志。应用程序日志记录了应用程序的执行过程和结果;系统日志记录了 Hadoop 系统本身的运行状态;审计日志则记录了用户的操作行为[^1]。 #### 2. 启动历史服务器并生成日志文件 在启动 Hadoop 历史服务器时,日志文件会被生成到指定路径。例如,在启动历史服务器时,日志会保存到 `/opt/module/hadoop-2.7.5/logs/mapred-xuzhenchao-historyserver-hadoop101.out` 文件中[^2]。为了确保日志能够被正确查看,需要确保历史服务器正常运行。 #### 3. 配置日志聚集功能 日志聚集功能可以通过修改 Hadoop 配置文件来实现。以下是关键配置项: - 开启日志聚集功能: ```xml <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> ``` - 设置日志聚集服务器地址: ```xml <property> <name>yarn.log.server.url</name> <value>http://hadoop102:19888/jobhistory/logs</value> </property> ``` - 设置日志保留时间为 7 天(以秒为单位): ```xml <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> ``` 完成上述配置后,重启 YARN 和历史服务器以使配置生效[^4]。 #### 4. 执行 WordCount 程序并验证日志 通过运行 WordCount 示例程序,可以验证日志配置是否正确。执行命令如下: ```bash hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /data/hadoop/input/ /data/hadoop/output/ ``` 运行完成后,可以在日志聚集服务器上查看生成的日志文件[^5]。 #### 5. 日志管理的重要性 Hadoop 日志管理不仅有助于诊断问题,还能帮助优化系统性能和监控集群状态。通过合理配置日志级别和存储策略,可以有效减少磁盘占用并提升系统效率[^1]。 ```python # 示例代码:检查日志文件是否存在 import os log_file = "/opt/module/hadoop-2.7.5/logs/mapred-xuzhenchao-historyserver-hadoop101.out" if os.path.exists(log_file): print("日志文件存在") else: print("日志文件不存在") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值