记一次Hadoop集群启动事件、经验分享

1.编写配置文件

core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml

向集群中各机器分发配置文件

xsync /opt/module/hadoop-3.1.3/etc/hadoop/etc

2.群起集群

2.1配置workers

vim /opt/module/hadoop-3.1.3/etc/hadoop/workersvim /opt/module/hadoop-3.1.3/etc/hadoop/workers

2.2再次向集群分发文件

xsync /opt/module/hadoop-3.1.3/etc/hadoop/etc3.1.3/etc/hadoop/etc

2.3启动集群

若第一次启动集群,需要在集群的每一台机器上都执行初始化命令

进入/opt/module/hadoop-3.1.3目录下执行
hdfs namenode -format

启动HDFS

sbin/start-dfs.sh

配置了ResourceManager的节点(hadoop102)启动YARN

sbin/start-yarn.sh

3.启动成功

Web端查看HDFS的NameNode

(a)浏览器中输入:http://hadoop102:9870
(b)查看HDFS上存储的数据信息

Web端查看YARN的ResourceManager

(a)浏览器中输入:http://hadoop103:8088

(b)查看YARN上运行的Job信息


4.一些可能出现的问题

4.1权限问题

  • 启动集群时,必须保证操作hadoop的用户是非root用户,即普通用户,否则会报错

以root用户登录系统。
执行以下命令将doulepeach用户添加到sudoers列表中,允许其以sudo命令的方式执行任何命令:
visudo
在打开的文件中,找到以下行:
root    ALL=(ALL:ALL) ALL
在该行下方添加以下内容:
doulepeach    ALL=(ALL) ALL
保存文件并退出。
  • 重新登入普通用户: su doublepeach

  • 使用以下命令将hadoop文件夹权限修改为此普通用户所有

sudo chown doublepeach /path/to/hadoop

此时再执行 sbin/start-dfs.sh 就能启动hadoop集群了

4.2 JAVA_HOME问题

这个问题很奇怪,说启动hadoop时找不到jdk的路径,但我明明/etc/profile里正确配置了jdk的JAVA_HOME,但还是报以下错误:

[doublepeach@hadoop101 hadoop-3.1.3]$ sbin/start-dfs.sh
Starting namenodes on [hadoop101]
hadoop101: ERROR: Unable to write in /opt/module/hadoop-3.1.3/logs. Aborting.
Starting datanodes
hadoop102: ERROR: JAVA_HOME is not set and could not be found.
hadoop101: ERROR: Unable to write in /opt/module/hadoop-3.1.3/logs. Aborting.
hadoop103: ERROR: JAVA_HOME is not set and could not be found.
Starting secondary namenodes [hadoop103]
hadoop103: ERROR: JAVA_HOME is not set and could not be found.found.

最终执行了以下命令后问题解决:

export JAVA_HOME=/usr/dev/jdk1.8.0_121/
echo 'export JAVA_HOME=export JAVA_HOME=/usr/dev/jdk1.8.0_121/' >> ~/.bashrc
source ~/.bashrc
sbin/start-dfs.sh

这样就不报找不到JAVA_HOME了,集群可以正常启动了(注意jdk的路径)

  • (但是我怀疑不是这个配置的问题,应该也是权限的问题,只不过我误打误撞这样也配置成功了,以后深入学习原理后应该就明白这一块的hadoop启动机制了)