HDFS完全分布式集群搭建过程
我的搭建环境
Centos7
Hadoop2.7.7
CRT
1、搭建前应进行的操作
-
安装3台CentOS7系统的主机
-
修改IP地址与主机名
1、查看自己的IP地址
ifconfig
2、修改自己的IP地址
因为我创建的一台虚拟机后,其他两台虚拟机是克隆而来,因此IP地址一致,则需要修改
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
执行上面命令后里面的内容如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none #此处设置为none,或static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1337141d-6fdf-4567-a581-bc4ec621052f
DEVICE=ens33
ONBOOT=yes
ETHTOOL_OPTS="autoneg on"
IPADDR=192.168.236.236 #第一台机器地址可不做修改,改后两台即可
PREFIX=24
GATEWAY=192.168.236.2
DNS1=192.168.236.2
修改保存之后重启网络使其生效
systemctl restart network
3、修改主机名,三台机器统一执行
echo -e "192.168.236.236 wq1\n192.168.236.237 wq2\n192.168.236.238 wq3" >> /etc/hosts
- 配置SSH免密登录
后期三台机器之间互相操作频繁,需要多次输入密码,因此设置
1、把老的锁和钥匙都扔了
rm -rf /root/.ssh
2、配钥匙
集群中的所有机器执行,输入该命令后点击回车三次
ssh-keygen -t rsa
3、发钥匙
三台机器都要执行下面的命令
# 将钥匙复制给wq1
ssh-copy-id wq1
# 将钥匙复制给wq2
ssh-copy-id wq2
# 将钥匙复制给wq3
ssh-copy-id wq3
- 配置环境变量
我自己安装的是JDK1.8
版本,安装在/opt/jdk1.8
下
hadoop2.7.7
安装在、/opt/hadoop2.7.7
下
配置环境变量-JDK-hadoop
#修改配置文件
vim /etc/profile
#插入下面内容
export JAVA_HOME=/opt/jdk1.8
export PATH=.:$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/opt/hadoop-2.7.7
export PATH=.:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
# 保存后刷新/etc/profile
source /etc/profile
2、开始搭建
我的hadoop安装位置在
/opt/hadoop2.7.7
下
下面的这些配置文件在/opt/hadoop-2.7.7/etc/hadoop
下
修改配置文件
组件\主机 | wq1 | wq2 | wq3 |
---|---|---|---|
HDFS | NameNode DataNode | DataNode | SecondaryNamenode DataNode |
NameNode在
core-site.xml
下,主机wq1作为NameNode
DataNode在slaves
中设置,每台机器都作为DataNode
SecondaryNamenode
设在wq3主机上上
1、对hadoop-env.sh
做如下操作,一行则是一步
cd /opt/hadoop-2.7.7/etc/hadoop
vim hadoop-env.sh
#缺少此步骤出现Java HOME not found异常
export JAVA_HOME=/opt/jdk1.8
2、core-site.xml
cd /opt/hadoop-2.7.7/etc/hadoop
vim core-site.xml
<property>
<!-- 配置默认的文件系统(配置NameNode服务启动的主机和端口) -->
<name>fs.defaultFS</name>
<value>hdfs://wq1:9000/</value>
</property>
<property>
<!-- 配置hdfs文件保存的目录,当前选择放在Hadoop的安装目录下 -->
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.7.7/data</value>
</property>
3、hdfs-site.xml
wq1有了NameNode,则下面这部分不用加上,另两台主机需要加上并根据主机名修改
cd /opt/hadoop-2.7.7/etc/hadoop
vim hdfs-site.xml
<property>
<!-- 配置固定的节点启动SecondaryNamenode -->
<name>dfs.namenode.secondary.http-address</name>
<value>wq2:50090</value>
</property>
4、slaves
每台机器都要有该部分内容
cd /opt/hadoop-2.7.7/etc/hadoop
vim slaves
# 将来需要启动从节点(对于HDFS来说就是DataNode)的主机名
wq1
wq2
wq3
5、格式化
hdfs namenode -format
6、启动
目前hadoop的组件只有hdfs ,所以单独启动即可
# hadoop全部组件的启动和关闭
start-all.sh
start-stop.sh
# 单独启动和关闭hdfs的全部组件
start-dfs.sh
stop-dfs.sh
7、检验
输入jps产生如下命令,集群搭建成功
[root@wq1 ~]# jps
13076 Jps
4501 DataNode
4358 NameNode
4681 SecondaryNameNode
[root@wq2 ~]# jps
8515 DataNode
9189 SecondaryNameNode
9305 Jps
[root@wq3 ~]# jps
9024 SecondaryNameNode
9701 Jps
8591 DataNode
3、一些常见的异常
hdfs的web界面无法访问,查看防火墙状态,关闭防火墙(namenode,datanode进程已启动)
[root@wq1 hadoop]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2021-05-31 09:47:24 CST; 1h 16min ago
[root@wq1 hadoop]# systemctl stop firewalld