环境准备:
系统:ubuntu18.04 server
软件:hadoop3.1.2、JDK8
如果你还未配置过Hadoop,可以先尝试部署伪分布式。
部署完全分布式Hadoop,我们先来理清思路,做个规划:
主机名 | 用户名 | NameNode | DataNode | IP |
---|---|---|---|---|
hadoop-master | hadoop | √ | × | 192.168.20.101 |
hadoop-slave1 | slave | × | √ | 192.168.20.102 |
hadoop-slave2 | slave | × | √ | 192.168.20.103 |
完全分布式Hadoop部署
配置完全分布式需要四个步骤,1.使集群中机器能互联互通,2.主机能免密登录从机,3.修改对应配置文件,设置主机和从机,4.验证。
准备工作:ip地址,主机名
ip地址,ubuntu18.04
使用netplan
管理ip
,通过修改配置文件修改三台机器ip
: vim /etc/netplan/*.yaml
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
addresses:
- 192.168.20.102/24
gateway4: 192.168.20.1
nameservers:
search: [mydomain, otherdomain]
addresses: [192.168.20.1, 8.8.8.8]
主机名,分别修改三台机器主机名为:hadoop-master,hadoop-slave1,hadoop-slave2
在ubuntu18.04版本修改主机名需要先修改 /etc/cloud/cloud.conf
文件,设置perserve_hostname
属性为true
preserve_hostname: true
1. 分别设置三台机器的Ip映射
修改Hosts
vim /etc/hosts
添加
192.168.20.101 hadoop-master
192.168.20.102 hadoop-slave1
192.168.20.103 hadoop-slave2
配置SSH实现免密登录
vim /etc/ssh/sshd_config
修改三台机器ssh配置
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
service sshd restart
重启ssh
。
仅从机使用slave普通用户操作
生成从机的公钥
ssh-keygen -t rsa -P ""
slave1上执行
scp ~/.ssh/id_rsa.pub master@192.168.20.101:~/.ssh/id_rsa.pub.s1
slave2上执行
scp ~/.ssh/id_rsa.pub master@192.168.20.101:~/.ssh/id_rsa.pub.s2
主机上hadoop用户执行,将主机的authorized
文件拷贝至从机。
cd ~/.ssh
cat id_rsa.pub.s1 >> authorized_keys
cat id_rsa.pub.s2 >> authorized_keys
scp ~/.ssh/authorized_keys master@192.168.20.101:~/.ssh
scp ~/.ssh/authorized_keys master@192.168.20.102:~/.ssh
从机操作
chmod 600 ~/.ssh/authorized_keys
测试免密登录: ssh 用户名@机器名
3.配置hadoop修改配置文件
这里列出的两个文件是配置分布式环境需要注意的,其他必须要配置的文件,请查看伪分布式配置。
core-site.xml
文件:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop-master:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
yarn-site.xml
文件:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
修改workers
(配置工作节点,3.X版本使用workers文件替代了之前的slaves和master文件)文件:
slave@hadoop-slave1
slave@hadoop-slave1
4.启动和验证集群
使用master
用户和slave
用户重新创建文件夹,并设置权限为普通用户。
sudo rm -r /usr/hadoop
sudo mkdir /usr/hadoop
sudo chown -R master /usr/hadoop #使用slave机器是 这里的master改为slave
mkdir /usr/hadoop/tmp
mkdir /usr/hadoop/hdfs
mkdir /usr/hadoop/hdfs/data
mkdir /usr/hadoop/hdfs/name
- 格式化HDFS文件系统:
在主节点上使用普通用户master
进行操作。(备注:只需一次,下次启动不再需要格式化,只需start-all.sh
)
hadoop namenode -format
如果报错文件夹无法创建,看看/usr/hadoop/tmp
目录权限是不是不够 - 启动
hadoop
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭。
启动hadoop
成功后,在Master
中的tmp
文件夹中生成了dfs
文件夹,在Slave
中的tmp
文件夹中均生成了dfs
文件夹和mapred
文件夹。
停止命令:
stop-all.sh
- 用
jps
命令查看进程
主机上输入jps
显示:
12989 Jps
12599 NameNode
12776 SecondaryNameNode
12920 ResourceManager
从机上输入jps
,显示:
3270 DataNode
3482 Jps
3382 NodeManager
网友评论