hadoop的分布式搭建步骤:

第一步:
比如准备三台虚拟机,分别命名为master、node1、node2,并且确保都配置了java环境 ,都关闭了防火墙,都设置了静态的IP地址,然后三台虚拟机的hosts文件都互相映射,在本地windows上也有映射。最后进行时间同步、时区调整
具体操作如下:
1、时间同步
java
ntpdate ntp.aliyun.com
2、调整时区
java
timedatectl set-timezone Asia/Shanghai
3、配置相同的java环境
3.1将下载好的jdk进行解压,然后打开配置文件
java
vim /etc/profile
3.2配置环境变量
java
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
export PATH=.:$PATH:$JAVA_HOME/bin
3.3让环境变量生效
java
source /etc/profile
3.4检查java是否安装成功
java
java 判断环境变量是否配置成功
java -version 显示java版本
4、修改主机名
bash
hostnamectl set-hostname 主机名
5、关闭防火墙
bash
systemctl stop firewalld
-
查看防火墙状态:
systemctl status firewalld
-
取消防火墙自启:
systemctl disable firewalld
6、静态IP配置
6.11、编辑网络配置文件
java
vim /etc/sysconfig/network-scripts/ifcfg-网络名称

6.12修改网络配置文件
java
# 需要根据自身情况修改:
# IPADDR(根据自己的网段,自定义IP地址,三台虚拟机不能使用相同IP)
# GATEWAY(根据自己的网段填写对应的网关地址)
# DNS1 (同网关地址保持一致即可)
# 其他直接使用下列配置
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.190.100
GATEWAY=192.168.190.2
NETMASK=255.255.255.0
DNS1=192.168.190.2
DNS2=223.6.6.6
6.13 关闭NetworkManager,并取消开机自启
避免每次重新打开或重启虚拟机时ip地址的变动,我们需要关闭NetworkManger
java
systemctl stop NetworkManager
systemctl disable NetworkManager
6.14重启网络服务
java
systemctl restart network
7、相互映射
打开hosts文件,进行设置
java
vim /etc/hosts

第二步:
配置好上面的第一步,接下来我们就开始设置免密登录,这样master在每次远程连接node1和node2的时候就不用输入密码了,我们不需要让三台都能互相连接,只需要master连接node1,node2,和master连接master。
最注意的是:master一定要连接master,就是与自身相连,不然在启动hadoop集群的时候,会发现缺少Namenode节点,也就无法打开hdfs和yarn平台
1、生成密钥
java
ssh-keygen -t rsa
1.1查看公钥
java
cd ~/.ssh/

2、配置免密登录
也就是向master、node1、node2分发生成的公钥
java
ssh-copy-id master
ssh-copy-id node1
ssh-copy-id node2
公钥生成后,1、可以用copy语句,让node1和node2都直接复制.ssh文件,语句:ssh-copy-id node1,master中的秘钥位置:cd ~/.ssh/
2、如果不能使用copy命令,也可以手动的分别在node1和node2主机中创建一个.ssh文件,然后将master的公钥内容直接复制粘贴过来,从而完成配置。
3、测试免密登录
java
# 从master分别登录node1、node2,还有自己本身master
# 第一次连接登录都需要密码,检查第二次是否还需要密码,如不需要则免密登录配置成功
ssh node1
ssh node2
ssh master
第三步:Hadoop集群搭建
从这一步开始,进行集群的配置和搭建。修改三台主机的配置文件 ,vim /etc/profile,配置hadoop的环境变量,因为hadoop使用java编写的,所以配置之前先安装好java的环境变量,然后在配置hadoop环境变量
1、上传安装包并解压
1.1这里我上传到package包下
java
cd /urs/local/soft/packages/
1.2解压
java
tar -zxvf hadoop-3.1.1.tar.gz -C /usr/local/soft/
2、配置环境变量
注意:三台虚拟机都需要修改
2.1打开配置文件
java
vim /etc/profile
2.2增加以下配置
java
HADOOP_HOME=/usr/local/soft/hadoop-3.1.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
2.3重新加载环境变量
java
source /etc/profile
3、修改Hadoop配置文件
3.1切换到配置文件所在目录
java
cd /usr/local/soft/hadoop-3.1.1/etc/hadoop/
3.2修改Hadoop的配置文件:先找到修改文件的位置
通过下图发现要修改6个配置文件

3.3通过vim编辑并修改下列配置文件
java
# 在内容最后加入以下配置
export JAVA_HOME=/usr/local/soft/jdk1.8.0_171
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
workers
bash
node1
node2
后面的配置都放到文件的<configuration> </configuration>里面
core-site.xml
bash
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/soft/hadoop-3.1.1/data</value>
</property>
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
hdfs-site.xml
java
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
mapred-site.xml
bash
<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>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
yarn-site.xml
bash
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
4、分发Hadoop到node1、node2
配置好master的hadoop的后,直接scp命令进行分发,分发到node1和node2. 命令:scp -r /usr/local/soft/hadoop-3.1.1/ node1:`pwd`,或者去这个soft目录下:scp -r hadoop-3.1.1/ node1:`pwd`
分发命令:
bash
cd /usr/local/soft/
scp -r hadoop-3.1.1/ node1:`pwd`
scp -r hadoop-3.1.1/ node2:`pwd`
5、格式化namenode
只需在第一次启动的时候在Master节点上执行
bash
hdfs namenode -format
6、启动Hadoop集群
java
start-all.sh
#单独启动:
start-yarn.sh
start-dfs.sh
7、检查master、node1、node2上的进程
master:
java
[root@master soft]# jps
2597 NameNode
2793 SecondaryNameNode
2953 ResourceManager
3215 Jps
node1:
java
[root@node1 jdk1.8.0_171]# jps
11361 DataNode
11459 NodeManager
11559 Jps
node2:
java
[root@node2 ~]# jps
11384 DataNode
11482 NodeManager
11582 Jps
8、访问HDFS的WEB界面
注意新版本的端口由50070变成了9870
打开浏览器输入地址:
html
http://master:9870

9、访问YARN的WEB界面
bash
http://master:8088

完成以上步骤,到此Hadoop分布式集群搭建就完成了。
以下是Hadoop集群重置的一些命令:
Hadoop集群重置
1、停止集群
java
stop-all.sh
# 若进程停不掉 可直接使用进程号进行kill
2、删除所有节点上hadoop产生的数据文件
注意:三台都要执行 ,删除data文件
java
cd /usr/local/soft/hadoop-3.1.1
rm -rf data/
3、重新格式化namenode
java
hdfs namenode -format
4、启动集群
java
start-all.sh
5、查看元数据

查看分布式存储文件大小:
