Hadoop完全分布式搭建教程
分析:
1.配好IP
2.修改主机名
3.配置IP映射
4.关闭防火墙
5.配置SSH免密
6.安装Java
7.集群搭建
软件提取链接:https://pan.baidu.com/s/1oxBcv6xRavVtxmBPzEWHuQ 提取码:1000
1.配置IP
master主节点上配置IP
[root@localhost ~] # vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改
ONBOOT=yes
BOOTPROTO=static
#添加,网关以实际网关为主
IPADDR=192.168.15.100
NETMASK=255.255.255.0
GATEWAY=192.168.15.2
DNS1=114.114.114.114
DNS2=192.168.15.2
slave1从节点配置IP
[root@localhost ~] # vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改
ONBOOT=yes
BOOTPROTO=static
#添加,网关以实际网关为主
IPADDR=192.168.15.102
NETMASK=255.255.255.0
GATEWAY=192.168.15.2
DNS1=114.114.114.114
DNS2=192.168.15.2
slave2从节点配置IP
[root@localhost ~] # vim /etc/sysconfig/network-scripts/ifcfg-ens33
#修改
ONBOOT=yes
BOOTPROTO=static
#添加,网关以实际网关为主
IPADDR=192.168.15.103
NETMASK=255.255.255.0
GATEWAY=192.168.15.2
DNS1=114.114.114.114
DNS2=192.168.15.2
2.修改主机名
master主节点修改主机名
[root@localhost ~] # vim /etc/sysconfig/network
#删除原有内容,添加如下字段
HOSTNAME=master
[root@master ~] #hostname master
[root@master ~] #exit
slave1从节点修改主机名
[root@localhost ~] # vim /etc/sysconfig/network
#删除原有内容,添加如下字段
HOSTNAME=slave1
[root@master ~] #hostname slave1
[root@master ~] #exit
slave2从节点修改主机名
[root@localhost ~] # vim /etc/sysconfig/network
#删除原有内容,添加如下字段
HOSTNAME=slave2
[root@master ~] #hostname slave2
[root@master ~] #exit
3.配置IP映射
[root@master ~] #vim /etc/hosts
#添加
192.168.15.100 master
192.168.15.102 slave1
192.168.15.103 slave2
[root@slave1 ~] #vim /etc/hosts
#添加
192.168.15.100 master
192.168.15.102 slave1
192.168.15.103 slave2
[root@slave2 ~] #vim /etc/hosts
#添加
192.168.15.100 master
192.168.15.102 slave1
192.168.15.103 slave2
4.关闭防火墙
[root@master ~] #systemctl stop firewalld.service
[root@master ~] #systemctl disable firewalld.service
[root@slave1 ~] #systemctl stop firewalld.service
[root@slave1 ~] #systemctl disable firewalld.service
[root@slave2 ~] #systemctl stop firewalld.service
[root@slave2 ~] #systemctl disable firewalld.service
5.SSH免密
[root@master ~]#cd .ssh
如果显示没有就执行 mkdir .ssh再执行cd .ssh
[root@master .ssh] #ssh-keygen -t rsa
三下回车
[root@master .ssh] #ssh-copy-id master
输入yes,然后输入密码就完成了免密登入
[root@master .ssh] #ssh-copy-id slave1
输入yes,然后输入密码就完成了免密登入
[root@master .ssh] #ssh-copy-id slave2
输入yes,然后输入密码就完成了免密登入
[root@slave1~]#cd .ssh
如果显示没有就执行 mkdir .ssh再执行cd .ssh
[root@slave1 .ssh] #ssh-keygen -t rsa
三下回车
[root@slave1 .ssh] #ssh-copy-id master
输入yes,然后输入密码就完成了免密登入
[root@slave1 .ssh] #ssh-copy-id slave1
输入yes,然后输入密码就完成了免密登入
[root@slave1 .ssh] #ssh-copy-id slave2
输入yes,然后输入密码就完成了免密登入
[root@slave2~]#cd .ssh
如果显示没有就执行 mkdir .ssh再执行cd .ssh
[root@slave2 .ssh] #ssh-keygen -t rsa
三下回车
[root@slave2 .ssh] #ssh-copy-id master
输入yes,然后输入密码就完成了免密登入
[root@slave2 .ssh] #ssh-copy-id slave1
输入yes,然后输入密码就完成了免密登入
[root@slave2 .ssh] #ssh-copy-id slave2
输入yes,然后输入密码就完成了免密登入
6.Java安装
https://blog.csdn.net/qq_50835159/article/details/117632199?spm=1001.2014.3001.5501
7.集群搭建(需提前装好Java)
Hadoop集群架构图
(Hadoop软件安装包统一发/opt/software)
[root@master software]#tar -zxvf hadoop-2.7.2.tar.gz -C /usr/local/
[root@master software]#cd /usr/local/hadoop-2.7.2
[root@master hadoop-2.7.2]#cd etc/hadoop
配置全局变量
[root@master hadoop]#vim /etc/profile
#将hadoop载入全局变量
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
[root@master hadoop]#source /etc/profile
配置hadoop-env.sh
[root@master hadoop]#vim hadoop-env.sh
# 修改JAVA_HOME,引入JAVA变量
export JAVA_HOME=/usr/local/jdk1.8.0_144
配置core-site.xml
[root@master hadoop]#vim core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.7.2/data/tmp</value>
</property>
配置hdfs-site.xml
[root@master hadoop]#vim hdfs-site.xml
<!-- 指定副本为3 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:50090</value>
</property>
<!-- 配置namenode元数据存储目录 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/usr/local/hadoop-2.7.2/data/tmp/dfs/name</value>
</property>
<!-- 配置datanode元数据存储目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/usr/local/hadoop-2.7.2/data/tmp/dfs/data</value>
</property>
配置yarn-env.sh
[root@master hadoop]#vim yarn-env.sh
#修改JAVA_HOME,引入JAVA变量
export JAVA_HOME=/usr/local/jdk1.8.0_144
配置yarn-site.xml
[root@master hadoop]#vim yarn-site.xml
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>
配置mapred-env.sh
[root@master hadoop]#vim mapred-env.sh
#修改JAVA_HOME,引入JAVA变量
export JAVA_HOME=/usr/local/jdk1.8.0_144
配置mapred-site.xml
[root@master hadoop]#cp mapred-site.xml.template mapred-site.xml
[root@master hadoop]#vim mapred-site.xml
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
配置slaves,不能出现多余空行或者空格否则将会出错。
[root@master hadoop]#vim slaves
master
slave1
slave2
分发Hadoop
[root@master hadoop]#cd /usr/local
[root@master local]#scp -r /usr/local/hadoop-2.7.2 root@slave1:/usr/local/
[root@master local]#scp -r /usr/local/hadoop-2.7.2 root@slave2:/usr/local/
配置slave1节点hadoop全局环境变量
[root@slave1 ~]#vim /etc/profile
#将hadoop载入全局变量
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
[root@slave1 ~]#source /etc/profile
配置slave2节点hadoop全局环境变量
[root@slave2 ~]#vim /etc/profile
#将hadoop载入全局变量
export HADOOP_HOME=/usr/local/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
[root@slave2 ~]#source /etc/profile
Master节点:格式化Hadoop
[root@master local]#cd hadoop-2.7.2
[root@master hadoop-2.7.2]#hadoop namenode -format
启动Hadoop-dfs、Hadoop-yarn
[root@master hadoop-2.7.2]#start-all.sh
启动resourcemanager
[root@slave1 ~]#cd /usr/local/hadoop-2.7.2
[root@slave1 hadoop-2.7.2]#yarn-daemon.sh start resourcemanager
查看集群
[root@master ~]#jps
4166 NameNode
4482 Jps
4263 DataNode
4524 NodeManager
[root@slave1 ~]#jps
4389 ResourceManager
3218 DataNode
3288 Jps
3564 NodeManager
[root@slave2 ~]#jps
3221 DataNode
3283 SecondaryNameNode
3514 NodeManager
3364 Jps
关闭hadoop
[root@master ~]#stop-all.sh
[root@master ~]#jps
3288 Jps
[root@slave1 ~]#jps
3364 Jps
[root@slave2 ~]#jps
3543 Jps
hadoop shell命令(常用)
-help:输出这个命令参数
[root@master hadoop-2.7.2]#hadoop fs -help rm
-mkdir:在HDFS上创建目录 -p多级目录
[root@master hadoop-2.7.2]#hadoop fs -mkdir -p /data/Localhost
-put:从本地文件系统中拷贝文件到HDFS路径去
[root@master hadoop-2.7.2]#hadoop fs -put ./test.txt /data/Localhost
-tail:显示一个文件的末尾
[root@master hadoop-2.7.2]#hadoop fs -put ./test.txt /data/Localhost/test.txt
-rm:删除文件或文件夹
[root@master hadoop-2.7.2]#hadoop fs -rm /data/test.txt
-get:从HDFS拷贝到本地
[root@master hadoop-2.7.2]#hadoop fs -get /data/kongming.txt ./
-cp :从HDFS的一个路径拷贝到HDFS的另一个路径
[root@master hadoop-2.7.2]#hadoop fs -cp /data/kongming.txt /zhuge.txt
-cat:显示文件内容
[root@master hadoop-2.7.2]#hadoop fs -cat /test.txt
-mv:在HDFS目录中移动文件
[root@master hadoop-2.7.2]#hadoop fs -mv /zhuge.txt /data
-rmdir:删除空目录
[root@master hadoop-2.7.2]#hadoop fs -rmdir /none