使用Mac版Docker搭建Hadoop集群(运行yarn与总结坑点)

上一篇文章介绍了启动HDFS,并且在浏览器访问,接下来启动yarn并尝试提交任务使其执行。在hadoop2节点上启动yarn,因为yarn-site.xml中写的yarn.resourcemanager.hostname属性值是hadoop2。

sbin/start-yarn.sh

然后jps查看hadoop2上的进程:

发现ResourceManager启动成功。然后运行单词统计任务:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.2.jar wordcount /wcinput /wcoutput

这里的wcoutput同样不能事先存在。因为这里使用的是集群模式,所以输出路径wcoutput前带上/,表示在HDFS的根路径。运行成功后可以在根路径下的output目录中看到结果。相应的文件真实存储路径依然在usr/lib/hadoop/data/dfs/data/current/BP-2060838795-172.17.0.4-1651994494825/current/finalized/subdir0/subdir0:

 

如果执行任务报错:The auxService:mapreduce_shuffle does not exist,应确保yarn-site.xml的如下配置正确:

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>

笔者因为services写成了service,找错误原因找了很久。如果还不行,再在yarn-site.xml中加上如下内容:

  <property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>

如果报错:Please check whether your etc/hadoop/mapred-site.xml contains the below configuration,则在mapred-site.xml加上如下内容:

<property>
    <name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/lib/hadoop</value>
</property>
<property>
    <name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/lib/hadoop</value>
</property>
<property>
    <name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/lib/hadoop</value>
</property>

其中的HADOOP_MAPRED_HOME就是环境变量$HADOOP_HOME。如果报错:Retrying connect to server xxxx,这是一直连不上某个节点的现象,建议检查各节点的ssh是否开启且能否免密登录。实在不行然后再在yarn-site.xml中添加如下配置:

<property>
    <name>yarn.resourcemanager.address</name>
    <value>resourcemanager节点ip或主机名:8032</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>resourcemanager节点ip或主机名:8030</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>resourcemanager节点ip或主机名:8031</value>
 </property>

如果还报resourcemanager连不上,建议参考以下第二点重启yarn集群。

其它问题,总结如下:

1. 如果浏览器访问不到相应端口,解决方法一是运行容器时没有进行端口映射(Mac主机无法ping同docker容器,这是由Mac版的docker决定的,因此一定运行容器时要加上端口映射),二是相应的xml配置文件中的主机名换成实际的容器ip地址

2. 如果发现namenode少了一个或者nodemanager等节点有问题,需要重启集群,需要注意删掉各节点hadoop安装路径下的data和logs目录(顺便把有关错误日志也可一起删除),保险起见在/tmp下的文件也一并删掉,防止一些进程杀不死。清理干净后,执行hdfs namenode -format格式化namenode,然后依次启动hdfs和yarn。

3. 如果想重启单个节点,可以使用如下命令:

hdfs --daemon start/stop namenode/datanode/secondarynamenode
yarn --daemon start/stop resourcemanager/nodemanager

4. 前台浏览器无法删除文件/创建目录,报权限不足,可在core-site.xml添加如下配置:

 <property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
 </property>

上述配置表示浏览器登录的用户为root。

5. 上述集群搭建方案使用了docker容器,不存在网上说了很多的防火墙的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值