1、 Error: JAVA_HOME is not set and could not be found
解决办法:设置环境变量
$/opt/software/hadoop/etc/hadoop
$ vim hadoop-env.sh
找到 export JAVA_HOME= J A V A H O M E 这 行 , 把 它 修 改 成 J A V A 安 装 路 径 的 具 体 地 址 , 注 意 路 径 前 面 没 有 {JAVA_HOME} 这行,把它修改成JAVA安装路径的具体地址,注意路径前面没有 JAVAHOME这行,把它修改成JAVA安装路径的具体地址,注意路径前面没有符号,
2、无法启动datanode,jps没有datanode的进程
计算机生成了可选文字: [hadoop@centos-210hadoop]$jps 37751NameNode 38749SecondaryNameNode 41743JPS
原因:当我们使用hadoop namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致。
解决办法:
第一种:如果dfs文件夹中没有重要的数据,那么删除dfs文件夹,再重新运行下列指令: (删除节点下的dfs文件夹,为自己配置文件中dfs.name.dir的路径)—(伪分布式默认在/tmp/hadoop-hadoop/dfs文件中)
第二种:如果dfs文件中有重要的数据,那么在dfs/name目录下找到一个current/VERSION文件,记录clusterID并复制。然后dfs/data目录下找到一个current/VERSION文件,将其中clustreID的值替换成刚刚复制的clusterID的值即可。
建议:
每次运行结束Hadoop后,都应该关闭Hadoop。下次想重新运行Hadoop,不用再格式化namenode,直接启动Hadoop即可。
1、内网机器无法通过浏览器访问虚拟机8088和50070端口(centos7版本)
#查看firewall服务状态 systemctl status firewalld
开启 systemctl start firewalld
重启 systemctl restart firewalld
关闭 systemctl stop firewalld
2、解决启动主机名,IP、localhost不一致
[hadoop@centos-210 hadoop]$ sbin/start-dfs.sh
Starting namenodes on [centos-210]
centos-210: starting namenode, logging to /opt/software/hadoop/logs/hadoop-hadoop-namenode-centos-210.out
localhost: starting datanode, logging to /opt/software/hadoop/logs/hadoop-hadoop-datanode-centos-210.out
Starting secondary namenodes [0.0.0.0]
0.0.0.0: starting secondarynamenode, logging to /opt/software/hadoop/logs/hadoop-hadoop-secondarynamenode-centos-210.out
原因分析:
namenode : centos-210 bin/hdfs getconf -namenodes
datanode : localhost datanodes(using default slaves file) etc/hadoop/slaves
secondarynamenode : 0.0.0.0
解决办法:
namenode:正常,无需修改,注意/etc/hosts
$bin/hdfs getconf -namenodes
计算机生成了可选文字: [hadoop@centos-210hadoop]$bin/hdfsgetconf centos一210 一namenOdeS
datanode : 修改 etc/hadoop/slaves,使用echo命令,>表示覆盖,>>表示追加。
$ echo “centos-210” >slaves
secondarynamenode :
$ bin/hdfs getconf -secondarynamenodes
计算机生成了可选文字: [hadoop@centos-210hadoop]$bin/hdfsgetconf 0.0.0.0 —secondarynamenodes
注意:根 https://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
查看dfs.namenode.secondary.http-address,dfs.namenode.secondary.https-address 两个参数默认的配置项,如下图:
计算机生成了可选文字: dfs.namenodesecondary.http-address dfs.namenodesecondary.https-address 0℃.0℃:50091 Thesecondarynamenodehttpserveraddressandport ThesecondarynamenodeHTTPSserveraddressandport
解决思路:在hadoop-hdfs/hdfs-default.xml文件中,加入这两个参数的配置:(红色部分为修改)
$ vim etc/hadoop/hdfs-site.xml
<name>dfs.namenode.secondary.http-address</name>
<value>centos-210:50090</value>
<name>dfs.namenode.secondary.https-address</name>
<value>centos-210:50091</value>
然后执行:
$cd sbin/ (在sbin目录下执行)
$ ./stop-dfs.sh 关闭
$ ./start-dfs.sh 重新启动-------------------------------------问题解决!!!!!
计算机生成了可选文字: [hadoop@centos-210sbin]$./start一dfs.sh StartingnamenodesOn[centOs一210] centOs一210:startingnamenode,loggingto/opt/software/hadoop/logs/hadoop-hadoop-namenode-cent os一210.out centOs一210:startingdatanode,loggingto/opt/software/hadoop/logs/hadoop-hadoop-datanode-cent os一210.out Startingsecondarynamenodes[centos—210] centOs一210:startingsecondarynamenode,loggingt0/opt/software/hadoop/logs/hadoop-hadoop-seco ndarynamenode—centos—210.out
3、机器挂掉,残留进程还在,如何处理?
$jps -l #命名空间 注 意:前面的进程号和 tmp/hsperfdata_hadoop/ 的内容一致
计算机生成了可选文字: hadoop@centos-210sbin]$jps 17683org.apache.hadoop.hdfs.server 26756org.apache.hadoop.hdfs.server 17289org.apache.hadoop.hdfs.serer.datanode.DataNode 32668sun.too]s.jps.〕ps ·namenOde ·namenOde ·SecondaryNameNode ·NameNode
计算机生成了可选文字: [hadoop@centos-210tmp] c d h s p e r f d a t a — h a d o o p / h a d o o @ c e n t o s 一 210 h s p e r f d a t a — h a d o o p ] cdhsperfdata—hadoop/ hadoo@centos一210hsperfdata—hadoop] cdhsperfdata—hadoop/hadoo@centos一210hsperfdata—hadoop] ]s 72891768326756 aOOpCenOS一 sperfdata—hadoop]$ pwd /tmp/hsperfdata—hadoop
解决办法:删除hsperfdata_hadoop目录下的残留进程!