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/
原文地址:https://www.cnblogs.com/OnTheWay-0518/p/9671645.html