第一步、确保你的jdk、hadoop、SSH免密已经配置好了,开启2台以上的虚拟机,并且能正常上网(后面放大招啦)
第二部、配置/etc/hosts文件(如下格式)
192.168.244.128 hadoop02
192.168.244.129 hadoop03
192.168.244.130 hadoop04
第三步、配置hadoop/etc/hadoop下面的core.site.xml, hdfs-site.xml, mapred-site.xml, yarn-site.xml
其中这个文件夹有3个.sh文件需要添加一个JAVA_HOME的真实路径-->hadoop-env.sh , yarn-env.sh ,mapred-env.sh
开始修改4个配置文件 本人使用的是 hadoop02,hadoop03, hadoop04 三台虚拟机
core.site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop02:9000</value>
</property>
<!-- 配置临时数据存放的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.2/data/tmp</value>
</property>
hdfs.site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop04:50090</value>
</property>
mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop03</value>
</property>
<!--指定rm的shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
常见的问题:
1 防火墙没关闭、或者没有启动
yarnINFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
2主机名称配置错误
3ip 地址配置错误
4ssh 没有配置好
5root 用户和 hadoop0x两个用户启动集群不统一
6配置文件修改不细心
7防火墙没关闭、或者没有启动 yarn
INFO client.RMProxy: Connecting to ResourceManager at hadoop108/192.168.10.108:8032
8 datanode 不被 namenode 识别问题
Namenode 在 format 初始化的时候会形成两个标识,blockPoolId 和 clusterId。新的
datanode 加入时,会获取这两个标识作为自己工作目录中的标识。
一旦 namenode 重新 format 后,namenode 的身份标识已变,而 datanode 如果依然持有原来的 id,就不会被 namenode 识别。
解决办法,1、删除 datanode 节点中的数据后,再次重新格式化 namenode。2、将namenode里的clusterld复制一个,把datanode里的clusterld覆盖掉
9 jps 发现进程已经没有,但是重新启动集群,提示进程已经开启。原因是在 linux 的根 目录下/tmp 目录中存在启动的进程临时文件,将集群相关进程删除掉,再重新启动集群。
10 jps 不生效。
原因:全局变量 hadoop java 没有生效,需要 source /etc/profile 文件。
最最重要的一点(坑了小编一下午)
如果配置过程全程用的root权限 不会出现这个错误
如果用的是普通用户的请注意了:
3台机器上面的普通用户必须配置名字一样 例如:
节点hadoop02 一般用户名hadoop02
节点hadoop03 一般用户名也要配置hadoop02
节点hadoop03 一般用户名也要配置hadoop02
不然start-all.dfs启动的时候,datanode节点上面就会出现启动成功(或者卡住需强退ctrl+c),浏览器端不显示,--> 说明还是没启动成功
总之就是使用一般用户的时候把几台虚拟机的一般用户配置名称一样就行了,可以减少错误的发生
小编qq602862011 欢迎一起探讨学习