centos7+hadoop-3.1.0搭建分布式集群超详细教程

目录

一、新建虚拟机:

二、连接XSHell

三、修改主机名称和网络名称

四、关闭防火墙

五、关闭selinux

六、jdk的安装与卸载

七、hadoop的安装

八、克隆

九、配置slave1和slave2

十、ssh免密登录

十一、格式化节点

十二、启动hadoop集群


一、新建虚拟机:

参考教程:

https://blog.****.net/babyxue/article/details/80970526#commentBox

静态IP设置:

master

ip:192.168.100.10

网关:192.168.100.2

子网掩码:255.255.255.0

DNS:202.106.196.115

选择DNS为“手动”

设置root 密码123

设置qiao 密码123

二、连接XSHell

连接master

设置连接用户为root,密码为123

三、修改主机名称和网络名称

[[email protected] ~]# vim /etc/hosts

centos7+hadoop-3.1.0搭建分布式集群超详细教程

[[email protected] ~]# vim /etc/sysconfig/network

centos7+hadoop-3.1.0搭建分布式集群超详细教程

四、关闭防火墙

关闭:[[email protected] ~]# systemctl stop firewalld.service

禁止开机启动:[[email protected] ~]# systemctl disable firewalld.service

查看状态:[[email protected] ~]# firewall-cmd --state

五、关闭selinux

[[email protected] ~]# vim /etc/selinux/config

centos7+hadoop-3.1.0搭建分布式集群超详细教程

六、jdk的安装与卸载

1.查看

[[email protected] ~]# rpm -qa|grep jdk

2.卸载

[[email protected] ~]# yum -y remove java java版本

若遇到yum正在被占用:[[email protected] ~]# rm -f /var/run/yum.pid

3.将下载好的jdk通过xshell拖动到指定的文件夹中并将其解压

在root下创建文件夹java:[[email protected] ~]# mkdir java

将jdk解压到/root/java/:[[email protected] ~]# tar -zxvf jdk-8u45-linux-x64.tar.gz -C java

将压缩包删除:[[email protected] ~]# rm -rf jdk-8u45-linux-x64.tar.gz

4.配置环境

[[email protected] ~]# vim /etc/profile

centos7+hadoop-3.1.0搭建分布式集群超详细教程

JAVA_HOME=~/java/jdk1.8.0_45
JRE_HOME=~/java/jdk1.8.0_45/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME 
export JRE_HOME 
export CLASS_PATH 
export PATH

[[email protected] ~]# source /etc/profile

[[email protected] ~]# java -version

centos7+hadoop-3.1.0搭建分布式集群超详细教程

七、hadoop的安装

1.解压

将下载好的hadoop通过xshell拖动到master中

在root下创建文件夹hadoop:[[email protected] ~]# mkdir hadoop

将hadoop解压到/root/hadoop/:[[email protected] ~]# tar -zxvf

2.配置环境

hadoop-3.1.0

[[email protected] ~]# vim /etc/profile

centos7+hadoop-3.1.0搭建分布式集群超详细教程

export HADOOP_HOME=~/hadoop/hadoop-3.1.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

[[email protected] ~]# source /etc/profile

[[email protected] ~]# hadoop version

centos7+hadoop-3.1.0搭建分布式集群超详细教程

3.配置hadoop

(1)创建目录

在~/hadoop下创建目录

[[email protected] hadoop]# mkdir tmp

[[email protected] hadoop]# mkdir var

[[email protected] hadoop]# mkdir dfs

[[email protected] hadoop]# mkdir dfs/data

[[email protected] hadoop]# mkdir dfs/name

(2)修改配置文件

进入~/hadoop/下的hadoop-3.1.0/etc/hadoop/文件夹中

[[email protected] hadoop]# cd hadoop-3.1.0/etc/hadoop/

  • workers

[[email protected] hadoop]# vim workers

删除localhost 添加从节点的名称

centos7+hadoop-3.1.0搭建分布式集群超详细教程

  • hadoop-env.sh

[[email protected] hadoop]# vim hadoop-env.sh

centos7+hadoop-3.1.0搭建分布式集群超详细教程

在#  JAVA_HOME=/usr/java/testing hdfs dfs -ls下面添加如下内容:

export JAVA_HOME=~/java/jdk1.8.0_45
export HADOOP_HOME=~/hadoop/hadoop-3.1.0
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

以下配置在各个文件的<configuration></configuration>中添加

  • core-site.xml

[[email protected] hadoop]# vim core-site.xml

centos7+hadoop-3.1.0搭建分布式集群超详细教程

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop/tmp</value>
</property>
</configuration>
  • hdfs-site.xml

[[email protected] hadoop]# vim hdfs-site.xml

 

centos7+hadoop-3.1.0搭建分布式集群超详细教程

<property>
   <name>dfs.name.dir</name>
   <value>/root/hadoop/dfs/name</value>
   <description>Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.</description>
</property>
<property>
   <name>dfs.data.dir</name>
   <value>/root/hadoop/dfs/data</value>
   <description>Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.</description>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<property>
   <name>dfs.replication</name>
   <value>2</value>
</property> 
  • yarn-site.xml

在命令行输入如下命令,并将返回地址复制,在配置yarn-site.xml时会用到:

[[email protected] hadoop]# hadoop classpath

centos7+hadoop-3.1.0搭建分布式集群超详细教程

[[email protected] hadoop]# vim yarn-site.xml

centos7+hadoop-3.1.0搭建分布式集群超详细教程

centos7+hadoop-3.1.0搭建分布式集群超详细教程

<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.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>输入刚才返回的Hadoop classpath路径</value>
</property>
  • mapred-site.xml

[[email protected] hadoop]# vim mapred-site.xml

centos7+hadoop-3.1.0搭建分布式集群超详细教程

 <property>
    <name>mapred.job.tracker</name>
    <value>master:49001</value>
</property>
<property>
      <name>mapred.local.dir</name>
       <value>/root/hadoop/var</value>
</property>
<property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
</property>

八、克隆

将master分别克隆为slave1和slave2

九、配置slave1和slave2

1.配置静态IP

(1)配置slave1的静态IP:

在slave1的右上角点击:

centos7+hadoop-3.1.0搭建分布式集群超详细教程

centos7+hadoop-3.1.0搭建分布式集群超详细教程

点击红框内设置salve1的静态IP

centos7+hadoop-3.1.0搭建分布式集群超详细教程

将地址改为192.168.100.12 保存

打开slave1终端:

重启网络:[[email protected] ~]$ systemctl restart network.service

(注意 这时候slave1的主机名称还是master)

(2)配置slave2的静态IP:

修改方式与slave1一致

将地址改为192.168.100.13

(3)检测slave1和slave2是否能

[[email protected] ~]$ ping www.baidu.com

ping 192.168.100.11 检测master、slave1和slave2是否能相互两两ping通

2.修改主机名称

[[email protected] ~]# vim /etc/hostname

centos7+hadoop-3.1.0搭建分布式集群超详细教程

[[email protected] ~]# vim /etc/sysconfig/network

centos7+hadoop-3.1.0搭建分布式集群超详细教程

修改后重启slave1和slave2

十、ssh免密登录

注意:master、slave1和slave2都要在root下进行操作

(1)master:

a.[[email protected] ~]# ssh-****** -t rsa

一直按回车直到该命令结束

分别在slave1和slave2上执行相同的操作

b.进入到/root/.ssh目录下

[[email protected] ~]# cd /root/.ssh

将 id_rsa.pub写入authorized_keys

[[email protected] .ssh]# cat id_rsa.pub >> authorized_keys

更改authorized_keys的权限

[[email protected] .ssh]# chmod 644 authorized_keys

c.将authorized_keys发送给slave1和slave2

[[email protected] .ssh]# scp authorized_keys slave1:/root/.ssh/

输入yes和slave1的密码即可

[[email protected] .ssh]# scp authorized_keys slave2:/root/.ssh/

(2)slave1:

a.进入到/root/.ssh路径下

[[email protected] ~]# cd /root/.ssh/

b.更改authorized_keys的权限

[[email protected] .ssh]# chmod 644 authorized_keys

c.将 id_rsa.pub追加到authorized_keys

[[email protected] .ssh]# cat id_rsa.pub >> authorized_keys

d.将authorized_keys发送给slave2

[[email protected] .ssh]# scp authorized_keys slave2:/root/.ssh/

(3)slave2:

a.进入到/root/.ssh路径下

[[email protected] ~]# cd /root/.ssh/

b.更改authorized_keys的权限

[[email protected] .ssh]# chmod 644 authorized_keys

c.将 id_rsa.pub追加到authorized_keys

[[email protected] .ssh]# cat id_rsa.pub >> authorized_keys

d.将authorized_keys分别发送给master和slave1

[[email protected] .ssh]# scp authorized_keys master:/root/.ssh

[[email protected] .ssh]# scp authorized_keys slave1:/root/.ssh

(4)验证

在master上:

登录[[email protected] .ssh]# ssh slave1

centos7+hadoop-3.1.0搭建分布式集群超详细教程

登出[[email protected] ~]# logout

十一、格式化节点

在master:

进入到~/hadoop/hadoop-3.1.0/sbin/路径下

[[email protected] ~]# cd hadoop/hadoop-3.1.0/sbin/

格式化节点

[[email protected] sbin]# hdfs namenode -format

centos7+hadoop-3.1.0搭建分布式集群超详细教程

运行后不报错并在倒数四五行出现successfully即为格式化节点成功

注意:在没有出现错误的情况下,节点格式化一次即可

十二、启动hadoop集群

master:

[[email protected] sbin]# ./start-all.sh

[[email protected] sbin]# jps

centos7+hadoop-3.1.0搭建分布式集群超详细教程

slave1、slave2:

[[email protected] ~]# jps

centos7+hadoop-3.1.0搭建分布式集群超详细教程

在浏览器中:192.168.100.11:50070

centos7+hadoop-3.1.0搭建分布式集群超详细教程

运行一个样例程序:

hadoop中自带wordcount样例程序,现在运行它

(1)创建本地示例文件:

现在/root/hadoop下创建目录:

[[email protected] hadoop]# mkdir file

在file下创建两个文件file1.txt和file2.txt

[[email protected] hadoop]# cd file/

[[email protected] file]# echo "Hello World" > file1.txt

[[email protected] file]# echo "Hello Hadoop" > file2.txt

可以使用命令查看文件是否创建好

[[email protected] file]# more file1.txt

centos7+hadoop-3.1.0搭建分布式集群超详细教程

(2)在HDFS上创建输入文件夹input

先进入到/root/hadoop/hadoop-3.1.0/路径下

[[email protected] /]# cd /root/hadoop/hadoop-3.1.0

在HDFS上创建input文件夹

[[email protected] hadoop-3.1.0]# bin/hadoop fs -mkdir -p /input

查看是否创建成功

[[email protected] hadoop-3.1.0]# bin/hadoop fs -ls /

centos7+hadoop-3.1.0搭建分布式集群超详细教程

(3)上传本地的file文件夹中的文件到集群的input目录下

[[email protected] hadoop-3.1.0]# bin/hadoop fs -put /root/hadoop/file/file*.txt /input/

查看是否上传成功

[[email protected] hadoop-3.1.0]# bin/hadoop fs -ls /input/

centos7+hadoop-3.1.0搭建分布式集群超详细教程

(4)在集群上运行wordcount例子

在hadoop的安装环境下运行模糊查找命令,找到wordcount样例编译好的jar包的位置

[[email protected] hadoop-3.1.0]# find -name *example*

centos7+hadoop-3.1.0搭建分布式集群超详细教程

centos7+hadoop-3.1.0搭建分布式集群超详细教程

运行程序

[[email protected] hadoop-3.1.0]# bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar wordcount /input /output

查看output下的文件

[[email protected] hadoop-3.1.0]# bin/hadoop fs -ls /output

centos7+hadoop-3.1.0搭建分布式集群超详细教程

查看运行的结果

[[email protected] hadoop-3.1.0]# hadoop fs -cat /output/part-r-00000

centos7+hadoop-3.1.0搭建分布式集群超详细教程

运行结束后关闭hadoop:

[[email protected] sbin]# ./stop-all.sh

若在关闭时遇到错误,再次运行该命令

补充:

删除hdfs上的文件:

[[email protected] hadoop-3.1.0]# bin/hdfs dfs -rm -r /output

错误:

之前在运行wordcount程序时,遇到错误:

centos7+hadoop-3.1.0搭建分布式集群超详细教程

这个意思是虚拟内存不足,修改配置文件yarn-site.xml

添加一下内容:

<property>  
    <name>yarn.nodemanager.vmem-check-enabled</name>  
    <value>false</value>  
</property> 

即将检查虚拟内存属性改为false

这样问题就解决了