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@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@djt002 native]$ tar -xvf hadoop-native-64-2.6.0.tar -C tar -xvf hadoop-native-64-2.6.0.tar -C $HADOOP_HOME/lib
以上,这两个命令都要执行。
然后增加环境变量
[root@djt002 native]# vim /etc/profile
增加下面的内容:
export HADOOP_COMMON_LIB_NATIVE_DIR=HADOOP_HOME/lib"
让环境变量生效
[root@djt002 native]# source /etc/profile
自检hadoop checknative –a 指令检查
结果
最后,这个问题成功解决了!
配置时全部写主机名,不要写地址,不然会错
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文件
更改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