搭建Hadoop集群过程中常见错误的解决方案

格式化报错

权限问题

出现cannot creat directory或cannot creat file类型

如下报错信息:

cannot create directory Permission denied

如果使用的是 user 用户,多数情况下是因为文件权限问题,hadoop3.3.1、big_data(存数据)、log_hadoop(存日志) 文件都要将权限给 user。

9.1.2 主机名问题

不识别主机名称,如下报错信息:

java.net.UnknownHostException: hadoop102: hadoop102
java.net.InetAddress.getLocalHost(InetAddress.java:1475)

解决方案:检查 etc/hosts 文件配置和主机名称,不要起一些奇怪的主机名。

主机名称更改地址 /etc/hostname

运行模块进程不全

未格式化

如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode

hdfs namenode -format

DN和NN进程同时只能工作一个。

如果不是第一次格式化,则需要先停掉 namenode 和 datanode 进程,再删除所有机器上的 big_data(存数据) 和 log_hadoop(存日志) 文件夹,然后重新创建 big_data 和 log_hadoop 文件夹,将权限全部给到 user,再进行格式化。(如果没有配置这些,默认路径在 /tmp 目录下)

因为格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。

Hadoop103,Hadoop104无进程

原因:ssh没有配置好。

jps无法使用

原因:如果不是用 rpm 安装需要去 /etc/profile 文件下配置环境变量。rpm 安装默认在 /usr/java/default 不需要配置环境变量。

jps无进程,但是启动集群显示正在运行

原因:是在 Linux 的根目录下 /tmp 目录中存在启动的进程临时文件,将集群相关进程删除掉,再重新启动集群。

Web端打开不了

原因有以下几种:

1)防火墙没关闭

systemctl stop firewalld.service 
systemctl disable firewalld.service 

2)模块没有启动

3)主机名称配置错误

4)IP地址配置错误

5)如果只是8088端口无法打开。

vim /etc/hosts

注释或删除如下代码

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         hadoop102 

测试中文件上传和计算问题

报错内容:

INFO mapreduce.JobSubmitter: Cleaning up the staging area /tmp/hadoop-yarn/staging/root/.staging/job_1510302622448_0003

出错原因:单机读取的是本地的文件,分布式环境下需要从hdfs 上读取文件。

解决方案:将本地的文件上传到 hdfs 上,然后再运行可以成功执行。

报错内容:

Output directory xxx already exists

出错原因:输出目录已存在

解决方案:修改输出目录,输出目录需要为空目录,所以在后面随便加上一个目录名,则会在 /output 目录下创建目录,如果是多次计算每次都需要指定不同的目录用于存储结果。

Hadoop文件系统命令参考:FileSystem Shell

下面给出几个常用命令

1 新建文件夹

hadoop dfs -mkdir [-p] <paths>  

2 上传本地文件

hadoop fs -put localfile /hadoopdir

3 查看hadoop文件

hadoop fs -ls /hadoopfile
hadoop fs -ls -e /hadoopdir

4 修改文件夹权限

hadoop fs -chown [-R] [OWNER][:[GROUP]] URI [URI ]

5 删除文件夹

hadoop fs -rm -r /hadoopdir

你可能感兴趣的:(Hadoop,hadoop,大数据,Java,集群)