Hadoop启动相关命令:
Hadoop namenode -format
在master机器上格式化namenode
只需要执行一次,如果要重新执行,一定要先删掉配置文件core-site.xml中配置的hadoop.tmp.dir对应路径下的文件
service iptables stop
关闭集群中所有机器防火墙
For i in (seq 1 100 ); Do ssh node$i “hostname; service iptable stop; chkconfig iptables off; service iptables status ”; done
start-all.sh 启动hadoop的所有服务,包含(hdfs和mapreduce的相关服务)
可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,…。
启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。
jps 查看进程
在master上的结果是:
jobTracker NameNode jps SecondaryNameNode
在slave上的结果是:
TaskTracker DataNode jps
Hadoop dfsadmin -report 查看hadoop集群的状态
Hadoop dfsadmin -safemode leave 关闭hdfs的安全模式
http:192.168.1.2:50030 访问mapreduce对应网页
http:192.168.1.2:50070 访问hdfs的对应网页
服务一直启动不了的终极解决办法:
1.删除集群中所有机器上的/usr/Hadoop/tmp文件
2.删除集群中所有机器上的pid文件。默认存放在/tmp目录下。这里我重新设置到了/bigdata/hadoop/pids,记得要授权给hadoop用户
3.重新执行stop-all.sh,把能关的服务先都关掉。
4.执行ps -ef | grep java| grep hadoop命令,查询是否还有hadoop相关进程才运行,如果有,执行kill -9 进程号 命令杀掉
5.重新格式化主机master
Hadoopnamenode -format
6.执行start-all.sh启动hadoop
7.发现没有报错,执行 Hadoopdfsadmin –report 命令查看hadoop运行状态
出现如图所示:
发现只启动了一个节点。可能是还存在安全模式。
8.执行hadoop dfsadmin –safemodeleave,关闭主机上的安全模式
9.再次执行hadoop dfsadmin –report
解决“no datanode to stop”问题?
原因:
每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下的所有目录。
第一种方法:
删除master上的tmp文件夹
rm -rf /usr/Hadoop/tmp
创建/usr/Hadoop/tmp文件夹
mkdir /usr/Hadoop/tmp
删除“/tmp”一下的“hadoop”开头文件
rm -rf /tmp/Hadoop*
重新格式化hadoop的master
Hadoop namenode -format
启动hadoop
start-all.sh
使用第一种方案,有种不好处就是原来集群上的重要数据全没有了。假如说Hadoop集群已经运行了一段时间。建议采用第二种。
第二种方法:(推荐)
1)修改每个Slave的namespaceID使其与Master的namespaceID一致。
或者
2)修改Master的namespaceID使其与Slave的namespaceID一致。
该"namespaceID"位于"/usr/hadoop/tmp/dfs/data/current/VERSION"文件中,前面蓝色的可能根据实际情况变化,但后面红色是不变的。
建议采用第二种,这样方便快捷,而且还能防止误删。
解决Exceeded MAX_FAILED_UNIQUE_FETCHES问题
出现错误如下:
Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out
程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
执行ulimit -a 查看文件限制数量
vim /etc/security/limits.conf
添加:
soft nofile 102400 soft nofile 409600 vim /etc/pam.d/login
添加:
session required /lib/security/pam_limits.so