• hadoop常见错误解决方法


    一、启动集群时

      1.节点启动失败

      1.1端口占用  

    1.1报错信息:address already in use - bind Address:50070
    解决步骤:
    查询端口占用:lsof -i:50070
    查询到占用端口的进程:pid
    杀死进程:kill -9 {pid}
    

       1.2找不到路径

    1.2报错信息(namenode):could not find dir:xxx -> 找不到namenode格式化产生的路径
    格式化:hdfs namenode -format
    每次格式化时都会产生新的集群id -> clusterID
    /home/bigdata/hadoop/data/dfs/name/current/VERSION
    

       1.3子节点启动失败

    1.3报错信息(datanode):
    /home/bigdata/hadoop/data/dfs/dn/current/VERSION
    删除之前遗留的信息:dn
    手动修改VERSION中的版本信息,使得一致
    
    jps发现进程已经没有,但是重新启动集群,提示进程已经开启。原因是在linux的根目录下/tmp目录中存在启动的进程临时文件,将集群相关进程删除掉,再重新启动集群。
    

       1.4连接失败

    1.4要求输入密码
    slaves -> dfs.sh、yarn.sh -> 配置免密码登录(包括启动脚本的机器)
    -------------------------------------------------------------->若namenode也为datanode,启动DataNode时也会使用ssh免密登录方式开启节点 1.5进程启动成功 -> 消失 datanode,nodeManager -> logs -> retry:8032 -> shutdown
    启动时用22号端口启动----->访问主节点被防火墙拦截----->尝试一定次数自动杀死进程 防火墙

    二、HDFS操作  

    1.1报错信息:permission denied -> 权限不足
      (1)伪装用户(启动hdfs进程的用户) 
          -------> 配置环境变量HADOOP_HOME ,HADOOP_USER_NAME
          ------->System.setProperty("hadoop.home",""); ~~ JAVA代码中设置   (2)hdfs-site.xml -> 关闭权限校验 1.2报错信息:无法建立通信 -> 8020 保证hdfs进程启动,查看防火漆

    三、运行MR时

    1.1日志位置:
    (1)web的管理界面 (8088,job名点开)
    (2)$HADOOP_HOME/logs/userlogs -> 三个日志文件
    1.2报错信息(远程调用执行)
    (1)权限不足          中间结果的临时目录无相关权限 -> hdfs dfs -chmod -R 777 /tmp
    (2)结果输出目录已经存在
    (3)源数据目录不存在
    (4)逻辑错误
    (5)accept阶段卡住不动 
      查看队列中是否有正在运行的MR任务
      检查resourceManager/nodeManager 的防火墙是否关闭

    四、HIVE启动时

    1.1日志位置:在conf中指定 -> /home/${user.home} -> hive.log
    1.2报错信息
    (1)parseException     解析某个配置文件(hive-site.xml)的某行/列有错误,
      直接去目标位置修改
    (2)JDBC相关异常 -> 启动过程中读取配置文件打开MySQL
      检查相关参数
    (3)MySQL数据库密码修改 -> host,user唯一确定的密码(联合主键的方式实现)
        密码验证信息存放位置在mysql.user ---> host,password,user,password_expired,权限相关
        方式一:直接修改表 -> update mysql.user set password = password('xxx') where host = 'xx' and user = 'xx'
        方式二:set password = password('root'); -> 重置密码可解决密码过期问题
        添加或修改一条连接规则:
        GRANT ALL PRIVILEGES ON *.* to 'user'@'host' IDENTIFIED by 'root' WITH GRANT OPTION;
        FLUSH PRIVILEGES;
    (4)ClassNotFountException:com.mysql.jdbc.Driver
        拷贝驱动jar包至$HIVE_HOME/lib
    (5)远程操作时 return code 1 (系统停止级别为1,非正常停止)
        可查看hive.log,一般是/tmp/hadoop-yarn/staging/anonymous权限不足,修改文件权限即可

      HWI的页面打不开时,要导入4个jar包到指定目录下。

    五、SQOOP   

    1.错误信息(在Sqoop1.4.7中有):
    Could not load org.apache.hadoop.hive.conf.HiveConf. Make sure HIVE_CONF_DIR is set correctly.
    解决办法(环境变量中添加):
    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
    source .bash_profile
    
    2.数据上传成功,hive的warehouse无法查看:
    向Hive中导入数据时指定数据元(复制Hive中的hive-site.xml至sqoop的配置文件目录下)
    1.Hive默认使用derby作为数据元信息存储数据库
    2.在数据导入时如果不进行配置会导致在MySQL中无法正常写入数据结构信息
    3.在Hive中无法查询到表的结构信息--->将hive-site.xml移动到sqoop的conf目录下
    cp /home/bigdata/apache-hive-1.2.2-bin/conf/hive-site.xml /home/bigdata/sqoop-1.4.7.bin/conf/
    
  • 相关阅读:
    yii2.0缓存的使用
    yii2.0框架where条件的使用
    yii2.0自带验证码使用
    spring中MessageSource的配置使用方法1[转]
    DOM、JDOM、DOM4J的区别
    探秘Java虚拟机——内存管理与垃圾回收
    MySQL开发规范和原则大全
    Java Classloader机制解析
    Junit之测试顺序---FixMethodOrder
    MySQL的btree索引和hash索引的区别
  • 原文地址:https://www.cnblogs.com/OnTheWay-0518/p/9671645.html
Copyright © 2020-2023  润新知