CentOS 7:hadoop安装过程的错误汇总

写在前面

主要是记录一下在安装hadoop全分布式环境中遇到的一些错误。

错误1:http://mirrors.ustc.edu.cn/centos/7.9.2009/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.ustc.edu.cn; Unknown error"Trying other mirror.

情景:在使用yum命令卸载jdk的时候遇到的。

解决方法:网络断了,修复网络即可。好像是yum命令卸载的时候是需要联网的,因为它需要解决依赖关系,不然就会一直尝试连接,直到连上为止。如果修复网络后,不同的yum进程之间发生了阻塞,用系统监视器杀死前一个yum进程即可。
查看当前的进程可以用ps a

查看当前的进程

错误2:bash: jps: command not found…

原因:jps命令是java所带的bash命令,出现该错误通常是由于java版本未正确安装或者java路径配置错误。奇怪的是,我安装好java后,使用java和javac命令都是可以的,就是用不了jps,不过后面修改的路径之后确实可以用了。

解决方法

  • 首先确认一下jps是不是真的有。进入java安装目录,打开bin文件夹,看是否有jps文件。如果有,在bin目录下输入“./jps”应该是可以调用该命令的了。

查看是否有jps文件

  • 然后修改配置文件。打开“/etc/profile”,修改或者增加一行“export PATH=$JAVA_HOME/bin:$PATH”即可。注意,“JAVA_HOME”变量是java的安装路径。奇怪的是,我之前的路径是配置成“export PATH=$PATH:$JAVA_HOME/bin”,然后jps就无法调用,调换一下$PATH所在的位置就可以了。
    修改配置文件
  • 最后,“source /etc/profile”使配置文件生效。

错误3:192.168.18.130: /usr/local/hadoop-2.10.1/sbin/hadoop-daemon.sh: line 165: /pids/pids/hadoop-user1-namenode.pid: Permission denied

情景:在master上启动dfs(使用start-dfs.sh)的时候出现的拒绝访问。此时登录的是user1普通账号,不是root账号。

start-dfs.sh时拒绝访问
原因:因为当前不是root用户,因此对hadoop需要访问的某些路径没有权限,造成了拒绝访问。可以看到上图中,master(192.168.18.130)和slave(192.168.18.131)均拒绝访问了,因为master和slave均在普通用户下进行集群的访问。

解决方法:为普通用户分配权限。

  • 从上图中可以看出,由于拒绝访问的是 /pids文件夹,该文件夹是在配置hadoop-env.sh文件时修改的自定义临时文件存储路径(默认应该是在 /tmp文件夹中的),因此为普通用户分配该文件夹的访问权限即可。
  • 该操作需要在master和所有的slave中执行。
su root
chown -R user1 /pids  # 为user1用户分配/pids文件夹的权限
su user1
  • 随后,关闭stop-dfs.sh后,再次启动即可。

错误4:jps无法显示java进程名。

场景:是在删除了hsperfdata_user1中的无效进程文件后,再使用jps就任何内容都显示不出来了。正常来说,就算hadoop没有启动,也应该会有jps进程在的。

原因:hsperfdata_root和hsperfdata_user1的权限出错。可能是因为删除的操作,导致了这两个文件的权限都变成了777(即任何用户均拥有全部的操作权限),因而jps进程无法访问。参考博客:linux下使用jps命令无效不显示内容

解决方法

  • 到/tmp文件夹下,键入下列命令可以查看文件的权限:
ls -l

查看文件权限

chmod 755 hsperfdata_*

修改后的文件权限

  • 现在jps命令就可以正常使用了。

错误5:192.168.18.130:8088网址打不开

情景:在master节点上尝试打开8088,8088是yarn的网页管理界面,但是打开失败。其他的页面,如50070端口可以打开。

原因:yarn-site.xml配置文件配错了。

解决方法

  • 首先排查防火墙是否处于关闭状态,master和slave都要检查。
systemctl status firewalld.service  # 查看防火墙状态
systemctl stop firewalld.service  # 暂时关闭防火墙(重启失效)
systemctl disable firewalld.service  #永久关闭防火墙
systemctl start firewalld.service  # 暂时打开防火墙(重启失效)
systemctl enable firewalld.service  # 永久打开防火墙
  • 测试能否ping通slave节点。

查看防火墙

  • 如果都可以,估计是配置文件错了。使用netstat -tpnl|grep java查看目前的端口情况。

查看端口情况

  • 从上图可以看到,并没有8088端口。
  • 重新检查yarn-site.xml,发现是yarn.resourcemanager.hostname属性的值写错了,应该是master的ip地址,如192.168.18.130。默认值是0.0.0.0。

yarn-site.xml配置文件

  • 修改之后,重启yarn进程,即键入start-yarn.sh即可。此时的端口号中就有8088了,而且网页也可以打开。

查看端口号

错误6:slave节点上没有DataNode进程。

场景:在master节点上启动了dfs后,slave节点上用jps命令查看并没有DataNode进程。这导致了无法将文件传输到hdfs上面(因为没有DataNode)。

解决方法

  • 在所有的slave节点上,进入安装目录,找到hdfsdata文件夹,进入dfs文件夹,删除其中的data文件夹。
  • 在master节点上,格式化文件系统,输入:
hdfs namenode -format
  • 重启dfs后,可以在slave节点上看到DataNode节点。

错误7:WARN hdfs.DataStreamer: DataStreamer Exception. org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /InputDataTest.COPYING could only be replicated to 0 nodes instead of minReplication (=1). There are 0 datanode(s) running and no node(s) are excluded in this operation.

场景:在使用hdfs命令将文件传送到hdfs文件系统时出现的。此时在hdfs上创建文件夹是可以的,但是无法将文件传送到DataNode上。用hadoop dfsadmin -report查看hdfs的状态,如下图。可以看到,hdfs中一点可用空间都没有。

查看hdfs状态
原因:原因主要出现在NameNode和DataNode的通信上。首先检查slave上是否有DataNode进程。然后检查master和slave之间的防火墙有没有关闭,能否相互ping通。如果都不行,可以查看在master上的log日志信息,路径是hadoop安装目录->logs,如下图。可以看到,日志中表明了是DataNode拒绝和NameNode进行通信,导致了注册失败。

日志信息
解决方法:参考hadoop 使用ip配置导致hdfs启动失败

  • 在master的hdfs-site.xml配置文件中加入以下配置信息后重启dfs即可。
<property>
    <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
    <value>false</value>
 </property>
  • 此时再使用hadoop dfsadmin -report或者用web网页(输入主机ip:50070)就可以看到可用空间不为0了。

web查看hdfs状态

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7上安装和配置Hadoop的步骤如下: 1. 安装Java环境:Hadoop需要Java环境的支持,可以通过以下命令安装Java: ``` sudo yum install java-1.8.0-openjdk-devel ``` 2. 下载Hadoop:可以从Hadoop官网下载最新版本的Hadoop,也可以使用以下命令下载: ``` wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz ``` 3. 解压Hadoop:使用以下命令解压Hadoop: ``` tar -xzvf hadoop-3.3.0.tar.gz ``` 4. 配置Hadoop环境变量:编辑/etc/profile文件,在文件末尾添加以下内容: ``` export HADOOP_HOME=/path/to/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin ``` 5. 配置Hadoop:进入Hadoop目录,编辑etc/hadoop/hadoop-env.sh文件,将JAVA_HOME设置为Java环境的安装路径: ``` export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk ``` 6. 配置Hadoop集群:编辑etc/hadoop/core-site.xml文件,添加以下内容: ``` <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration> ``` 编辑etc/hadoop/hdfs-site.xml文件,添加以下内容: ``` <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/path/to/hadoop/data/nameNode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/path/to/hadoop/data/dataNode</value> </property> </configuration> ``` 7. 格式化Hadoop文件系统:使用以下命令格式化Hadoop文件系统: ``` hdfs namenode -format ``` 8. 启动Hadoop集群:使用以下命令启动Hadoop集群: ``` start-all.sh ``` 9. 验证Hadoop集群:使用以下命令验证Hadoop集群是否正常运行: ``` jps ``` 如果输出中包含NameNode、DataNode、ResourceManager和NodeManager等进程,则说明Hadoop集群已经成功启动。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值