在伪分布式的基础上我们继续配置
目录
master配置
首先查询主机master的节点是否运行
root@master:~# jps
5379 NameNode
5699 SecondaryNameNode
5513 DataNode
8844 Jps
看来节点是正常的,接下来我们继续。
在master上修改本地解析
vim /etc/hosta
#将ip对应主机改为以下
10.211.4.103 master
10.211.4.104 slave1
127.0.0.1 localhost
#保存退出
wq
#查看是否能解析成功
root@master:~# ping master
PING master (10.211.4.103) 56(84) bytes of data.
64 比特,来自 master (10.211.4.103): icmp_seq=1 ttl=64 时间=0.019 毫秒
64 比特,来自 master (10.211.4.103): icmp_seq=2 ttl=64 时间=0.033 毫秒
^C
--- master ping 统计 ---
已发送 2 个包, 已接收 2 个包, 0% 包丢失, 耗时 1013 毫秒
rtt min/avg/max/mdev = 0.019/0.026/0.033/0.007 ms
root@master:~# ping slave1
PING slave1 (10.211.4.104) 56(84) bytes of data.
64 比特,来自 slave1 (10.211.4.104): icmp_seq=1 ttl=64 时间=0.510 毫秒
64 比特,来自 slave1 (10.211.4.104): icmp_seq=2 ttl=64 时间=0.377 毫秒
64 比特,来自 slave1 (10.211.4.104): icmp_seq=3 ttl=64 时间=0.390 毫秒
^C
--- slave1 ping 统计 ---
已发送 3 个包, 已接收 3 个包, 0% 包丢失, 耗时 2026 毫秒
rtt min/avg/max/mdev = 0.377/0.425/0.510/0.059 ms
修改配置文件
#core-site.xml
vi /usr/local/hadoop-3.3.0/etc/hadoop/core-site.xml
#将localhost修改为master即可
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop-3.3.0/tmp</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
#hdfs-site.xml
vi /usr/local/hadoop-3.3.0/etc/hadoop/hdfs-site.xml
#将value的值从1修改为2
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-3.3.0/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-3.3.0/tmp/dfs/data</value>
</property>
</configuration>
#maperd-site.xml
vi /usr/local/hadoop-3.3.0/etc/hadoop/maperd-site.xml
#maperd-site.xml文件描述MapReduce框架名称、历史服务的地址和端口信息
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
#yarn-site.xml
vi /usr/local/hadoop-3.3.0/etc/hadoop/yarn-site.xml
#yarn-site.xml文件描述ResourceManager服务的主机信息
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-sercices</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
检查hadoop-env.sh
workers配置
vi /usr/local/hadoop-3.3.0/etc/hadoop/workers
#将原本的localhost删掉,写入以下
master
#之后再写入slave1
重建NameNode
cd /use/local/hadoop-3.3.0
#将原本的tmp目录删除
rm -rf tmp
#更新tmp目录
mkdir /usr/local/hadoop-3.3.0/tmp
mkdir tmp/dfs
mkdir tmp/dfs/name
mkdir tmp/dfs/data
mkdir tmp/dfs/namesecondary
#修改权限
chmod -R +777 tmp
#重启namenode
hdfs namenode -format
#启动服务
start-all.sh
mr-jobhistory-daemon.sh start historyserver
#查看进程
root@master:/usr/local/hadoop-3.3.0/sbin# jps
11216 ResourceManager
12387 Jps
5379 NameNode
5699 SecondaryNameNode
11352 NodeManager
5513 DataNode
12367 JobHistoryServer
slave1配置
用master克隆一台虚拟机,命名为slave1,由于我原本就有一台,所以这里就不演示了。
slave1的IP地址:10.211.4.104/24
我们使用了两台虚拟机,需要给他们配置一个ssh免密登录,刚好我前面有一个例子就是两台虚拟机配置免密:大数据笔记-hadoop(1)
配置好后我们进行检验
启动并测试
在workers里加入slave1
vi /usr/local/hadoop-3.3.0/etc/hadoop/worker
#写入slave1
master
slave1
重建tmp目录且设置权限
在master虚拟机上对NameNode进行格式化
hdfs namenode -format
启动集群服务
start-all.sh
查看master进程
然后在查看slave1进程和web-ui信息,确认无误,hadoop就搭建好了。
一些报错
关于记录启动DataNode的主机列表的文件,我看的资料绝大部分配置的都是slaves文件,做好集群后slave1上死活查不出进程,在msater上启动也没有看到slave1;后来我问了别人,才知道Hadoop某个版本更新后slaves文件变成了workers文件.......
然后slave1启动后还是有问题,如图。
我们这里配置好了的话,slave1上应该会显示两个进程:datanode和nodemanager,但我的slave1没有显示datanode。
解决方案参考:解决Hadoop集群中(主,从)节点上无datanode的问题