Centos7-hadoop完全分布式搭建

准备

  • 两部虚拟机,master,slave(我用的主节点master是Desktop模式的,子节点slave为了节省空间,装的Minimal模式的,但不影响)
  • JDK
  • Hadoop

master上安装JDK

下载java包

jdk-8u201-linux-x64.tar.gz
Centos7-hadoop完全分布式搭建

解压

tar -zxvf jdk-8u201-linux-x64.tar.gz

先创建文件夹java

mkdir -p /usr/java

移动文件到/usr/java

mv -v jdk1.8.0_201 /usr/java

添加环境变量

vi /etc/profile

找到java安装路径

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre  
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

更新环境变量

source /etc/profile

验证jdk

java -version

Centos7-hadoop完全分布式搭建

下载hadoop安装包

下载地址:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
下好后,将压缩包解压到目录/usr/local下,并修改文件名,当然要在root权限下操作

tar -zxvf hadoop-2.9.2.tar.gz -C /usr/local
mv -v hadoop-2.9.2 hadoop

Centos7-hadoop完全分布式搭建

修改配置文件

hadoop配置涉及的文件有7个:core-site.xmlhadoop-env.shyarn-env.shmapred-site.xmlyarn-site.xmlslaveshdfs-site.xml,这些文件都在/usr/local/hadoop/etc/hadoop/目录

新建需要的文件

配置之前先在/usr/local/hadoop下创建所需的文件

mkdir -p /usr/local/hadoop/hdfs/tmp
mkdir -p /usr/local/hadoop/hdfs/data
mkdir -p /usr/local/hadoop/hdfs/name

修改core-site.xml文件

这个是Hadoop的核心配置文件,需要配置两个属性:

  1. fs.default.name配置来Hadoop的HDFS系统的命名,位置为主机的9000端口
  2. hadoop.tmp.dir配置了Hadoop的临时文件的位置

添加以下代码:

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hdfs/tmp</value>
</configuration>

修改hadoop-env.sh文件

该文件是Hadoop运行基本环境的配置,需要修改JDK的实际位置。。故在该文件中修改为JAVA_HOME值为本季安装位置:

export JAVA_HOME=/usr/java/jdk1.8.0_201

修改yarn-env.sh文件

# export JAVA_HOME=/home/y/libexec/jdk1.6.0/
export JAVA_HOME=/usr/java/jdk1.8.0_201

修改mapred-site.xml

这个是MapReduce的相关配置,Hadoop2.x中没有mapred-site.xml文件,需要由mapred-site.xml.template复制的到

cp -v mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

添加以下代码:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

修改yarn-site.xml文件

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
</configuration>

注意:master为自己主机名

修改hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/hdfs/name</value>  # namenode临时文件所存放的目录
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/hdfs/data</value>  # datanode临时文件所存放的目录
    </property>
     <property>
           <name>dfs.replication</name>
           <value>3</value> #默认3
       </property> 
</configuration>

修改slaves文件

该文件里面保存有slave节点的信息,在slave文件里添加以下代码:

slave #有几个子节点,就添加几个,我这创了一个

修改/etc/hosts文件

该文件配置的是主机名与IP地址的映射。

192.168.144.143 master
192.168.144.144 slave

添加hadoop环境变量

vim /etc/profile

export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

更新变量:source /etc/profile

hadoop version

Centos7-hadoop完全分布式搭建

配置SSH免密登录

主节点master和子节点slave都要配置

关闭防火墙

systemctl disable firewalld #关闭防火墙
reboot #重启

使用ssh-******产生公钥和私钥对

输入命令ssh-****** -t rsa,连续按三次Enter健
Centos7-hadoop完全分布式搭建

ssh-copy-id将公钥复制到远程机器中

ssh-copy-id -i /root/.ssh/id_rsa.pub master #依次输入yes,root用户密码
ssh-copy-id -i /root/.ssh/id_rsa.pub slave

Centos7-hadoop完全分布式搭建
Centos7-hadoop完全分布式搭建

验证ssh是否能够无**登录

在master下输入ssh slave,如图所示,配置成功
Centos7-hadoop完全分布式搭建

配置slave节点

设置固定IP地址

ifconfig -a # 查看当前ip地址

修改/etc/sysconfig/network-scripts/ifcfg-ens33
Centos7-hadoop完全分布式搭建

复制java文件

复制master上java文件到slave

scp -r /usr/java [email protected]:/usr

复制hadoop文件

复制master上hadoop文件到slave

scp -r /usr/local/hadoop [email protected]:/usr/local

配置环境变量

vim /etc/profile

添加以下代码:

export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export JRE_HOME=$JAVA_HOME/jre  
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

更新环境变量

source /etc/profile

Centos7-hadoop完全分布式搭建
配置成功

配置ntp时间同步服务

NTP是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,提供高精准度的时间校正。Hadoop集群对时间要求很高,主节点和各从节点的时间都必须要同步。配置时间同步服务主要是为了进行集群间的时间同步。

安装NTP服务

在各节点安装NTP服务,执行命令:

yum install -y ntp

最终出现complete!,安装完成

设置master节点为NTP服务主节点

vi /etc/ntp.conf

注释掉以server开头掉行,并添加以下代码:

restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap
server 127.127.1.0
fudge 127.127.1.0 stratum 10

在slave节点中也同样配置ntp服务,修改slave节点中的ntp.conf,注释掉以server开头的行,添加以下代码:

server master

启动NTP服务

1.在master节点执行命令:

service ntpd start & chkconfig ntpd on

Centos7-hadoop完全分布式搭建2. 在slave上执行命令ntpdate master
3. 在slave上执行命令:

service ntpd start & chkconfig ntpd on

永久开启时间同步

启动关闭集群

格式化

启动之前需要先格式化一下,在master上执行命令:

hdfs namenode -format

若出现一下画面,则格式化成功:
Centos7-hadoop完全分布式搭建

启动集群命令

在master上直接进入Hadoop安装目录

cd $HADOOP_HOME # 进入hadoop安装目录
sbin/start-dfs.sh # 启动HDFS相关服务
sbin/start-yarn.sh # 启动YARN相关服务
sbin/mr-jobhistory-daemon.sh start historyserver # 启动日志相关服务

或者直接执行命令:

start-all.sh

Centos7-hadoop完全分布式搭建在主节点master和子节点slave上分别执行jps命令
Centos7-hadoop完全分布式搭建
Centos7-hadoop完全分布式搭建### 关闭集群命令

cd $HADOOP_HOME 
sbin/stop-dfs.sh # 启动HDFS相关服务
sbin/stop-yarn.sh # 启动YARN相关服务
sbin/mr-jobhistory-daemon.sh stop historyserver # 启动日志相关服务

监控集群

HDFS监控

在自己电脑浏览器上输入网址:http://192.168.144.143:50070,回车,便可看到HDFS的监控界面
Centos7-hadoop完全分布式搭建

1.Overview记录了NameNode的启动时间、版本号编译版本等一些基本信息
2.Summary是集群信息,提供了当前集群环境的一些有用信息,从图中可知所有DataNode节点的基本存储信息。
选择"Utilities"->"Browse the file system"菜单命令可以查看HDFS上的文件信息。

YARN监控

在浏览器的地址输入"http://master:8088",便可看到YARN的监控界面
Centos7-hadoop完全分布式搭建## 搭建完成!