Hadoop ~之安装注意事项

  • 一:经常格式化导致报错如下
  • hadoop起动后没有datanode的问题
  • 没有配置native环境
  • 配置时全部写主机名,不要写地址,不然会错
  • Hadoop-在HDFS创建文件报mkdir: Cannot create directory /aa. Name node is in safe mode.
  • hadoop环境报failed on connection exception
  • Linux下永久修改主机名
  • jps报process information unavailable的解决办法
  • bash:haoop:command not found


一:经常格式化导致报错如下

File /input/data.txt.COPYING could only be replicated to 0 nodes instead of minReplication (=1)

看它的报错信息好像是节点没有启动,但是我的节点都启动起来了,使用jps也能查看到节点信息。
使用hadoop dfsadmin -report命令查看磁盘使用情况,发现出现以下问题:

Configured Capacity: 0 (0 B)Present Capacity: 0 (0 B)DFS Remaining: 0 (0 B)DFS Used: 0 (0 B)DFS Used%: NaN%Under replicated blocks: 0Blocks with corrupt replicas: 0Missing blocks: 0-------------------------------------------------Datanodes available: 0 (0 total, 0 dead)

节点下存储空间都是空的,问题应该就是出现在这了。

使用hadoop namenode -format格式化了多次造成spaceID不一致,

解决方案:
1、停止集群(切换到/sbin目录下)
stop-all.sh
2、删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据;
rm -rf /root/training/hadoop-2.7.3/tmp
3、重新格式化namenode(切换到hadoop目录下的bin目录下)
hdfs namenode -format
4、重新启动hadoop集群(切换到hadoop目录下的sbin目录下)
start-all.sh

hadoop起动后没有datanode的问题

直接删除掉dfs文件夹中name和data文件夹里的所有内容,重启。
主节点与从节点的东西都要删除
Hadoop namenode -format 是极其危险的东西,能不用就尽量不要用
出现该问题的原因:
在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。

没有配置native环境

问题描述:
Unable to load native-hadoop library for your platform… using builtin-java classes where applicable

原因:

Apache提供的hadoop本地库是32位的,而在64位的服务器上就会有问题,因此需要自己编译64位的版本。

hadoop版本相匹配的spark hadoop principal_hadoop

[hadoop@djt002 native]$ pwd
 /usr/local/hadoop/hadoop-2.6.0/lib/native
 [hadoop@djt002 native]$ ls
 libhadoop.a libhadooppipes.a libhadoop.so libhadoop.so.1.0.0 libhadooputils.a libhdfs.a libhdfs.so libhdfs.so.0.0.0

其实,这个问题,要解决很简单,我这里是hadoop-2.6.0版本。
如果你也是hadoop2.6的可以下载下面这个:
  http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.6.0.tar 若是其他的hadoop版本,下载下面这个:
http://dl.bintray.com/sequenceiq/sequenceiq-bin/hadoop-native-64-2.*.0.tar
hadoop版本相匹配的spark hadoop principal_hadoop版本相匹配的spark_02
hadoop版本相匹配的spark hadoop principal_hadoop_03

[hadoop@djt002 native]$ tar -xvf hadoop-native-64-2.6.0.tar -C hadoop版本相匹配的spark hadoop principal_安全模式_04 tar -xvf hadoop-native-64-2.6.0.tar -C $HADOOP_HOME/lib
以上,这两个命令都要执行。

然后增加环境变量

[root@djt002 native]# vim /etc/profile

增加下面的内容:

hadoop版本相匹配的spark hadoop principal_hadoop_05


export HADOOP_COMMON_LIB_NATIVE_DIR=hadoop版本相匹配的spark hadoop principal_hadoop_06HADOOP_HOME/lib"

让环境变量生效
[root@djt002 native]# source /etc/profile

自检hadoop checknative –a 指令检查

结果

hadoop版本相匹配的spark hadoop principal_主机名_07


  最后,这个问题成功解决了!

配置时全部写主机名,不要写地址,不然会错

Hadoop-在HDFS创建文件报mkdir: Cannot create directory /aa. Name node is in safe mode.

我们在xshell中在HDFS中创建一个文件夹,但是报该节点处于安全模式

mkdir: Cannot create directory /aa. Name node is in safe mode.

1:什么是安全模式

安全模式是值HDFS处于一种特殊状态,在这种状态下HDFS文件只接受读取文件,不能进行创建修改等变更请求,

在NameNode节点启动的时候,HDFS首先会进入安全模式,DataNode在启动的时候会向NameNode汇报block等状态,直到等整个系统进入到安全标准时,HDFS会自动离开安全模式

系统什么时候才离开安全模式,需要满足哪些条件?当收到来自datanode的状态报告后,namenode根据配置,确定 1)可用的block占总数的比例、2)可用的数据节点数量符合要求之后,离开安全模式。如果有必要,也可以通过命令强制离开安全模式。

要离开安全模式,需要满足以下条件:
1)达到副本数量要求的block比例满足要求;
2)可用的datanode节点数满足配置的数量要求;
3) 1、2 两个条件满足后维持的时间达到配置的要求。

在这里笔者是等了几分钟后还是处于安全模式,就采用的命令强制退出的安全模式~

bin/hadoop dfsadmin -safemode leave

hadoop环境报failed on connection exception

ls: Call From slaver1/127.0.0.1 to master:9000 failed on connection exception: java.net.ConnectException: Connection refused;
 For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

在搭建分布式环境的时候,发现在DataNode中使用命令:

hdfs dfs -ls /
 报ls: Call From slaver1/127.0.0.1 to master:9000 failed on connection exception: java.net.ConnectException: Connection refused;
 For more details see: http://wiki.apache.org/hadoop/ConnectionRefusedCheck that there isn’t an entry for your hostname mapped to 127.0.0.1 or 127.0.1.1 in /etc/hosts (Ubuntu is notorious for this)


于是我打开master中的hosts文件,查看是否有127.0.0.1
还真的存在这么个东西,于是我将这行给注释掉

Linux下永久修改主机名

红帽系列的Linux发行版主机名存放位置是/etc/sysconfig/network,Ubuntu Linux主机名存放位置是/etc/hostname,所以只要修改主机名存放文件便可以永久的修改计算机名

  以CentOS为例,可以使用hostname命令查看当前的主机名,通过vim /etc/sysconfig/network打开network文件

  

hadoop版本相匹配的spark hadoop principal_hadoop版本相匹配的spark_08


  

  更改HOSTNAME的值即可,修改完成保存退出

  重新启动系统修改即可生效

jps报process information unavailable的解决办法

现象
启动Hadoop的时候使用jps检查进程 ,出现Process information unavailable的问题,如下

[root@vm8033 local]# jps5700 – process information unavailable4853 – process information unavailable12773 Jps11801 – process information unavailable5161 – process information unavailable4924 – process information unavailable5212 – process information unavailable11804 – process information unavailable2094 – process information unavailable

基本有两种解决方案
第一种
1、进入/tmp
2、删除该目录下的hsperfdata_KaTeX parse error: Expected group after '_' at position 51: …者修改权限hsperfdata_̲{username} 。

bash:haoop:command not found

出现这个错误的原因是没有配置环境变量
source /etc/profile