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

目录

一、新建虚拟机:

二、连接XSHell

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

四、关闭防火墙

五、关闭selinux

六、jdk的安装与卸载

七、hadoop的安装

八、克隆

九、配置slave1和slave2

十、ssh免密登录

十一、格式化节点

十二、启动hadoop集群


一、新建虚拟机:

参考教程:

https://blog.csdn.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

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

[root@master ~]# vim /etc/hosts

[root@master ~]# vim /etc/sysconfig/network

四、关闭防火墙

关闭:[root@master ~]# systemctl stop firewalld.service

禁止开机启动:[root@master ~]# systemctl disable firewalld.service

查看状态:[root@master ~]# firewall-cmd --state

五、关闭selinux

[root@master ~]# vim /etc/selinux/config

六、jdk的安装与卸载

1.查看

[root@master ~]# rpm -qa|grep jdk

2.卸载

[root@master ~]# yum -y remove java java版本

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

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

在root下创建文件夹java:[root@master ~]# mkdir java

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

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

4.配置环境

[root@master ~]# vim /etc/profile

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第1张图片

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

[root@master ~]# source /etc/profile

[root@master ~]# java -version

七、hadoop的安装

1.解压

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

在root下创建文件夹hadoop:[root@master ~]# mkdir hadoop

将hadoop解压到/root/hadoop/:[root@master ~]# tar -zxvf hadoop-3.1.0.tar.gz -C ./hadoop/

2.配置环境

hadoop-3.1.0

[root@master ~]# vim /etc/profile

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

[root@master ~]# source /etc/profile

[root@master ~]# hadoop version

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第2张图片

3.配置hadoop

(1)创建目录

在~/hadoop下创建目录

[root@master hadoop]# mkdir tmp

[root@master hadoop]# mkdir var

[root@master hadoop]# mkdir dfs

[root@master hadoop]# mkdir dfs/data

[root@master hadoop]# mkdir dfs/name

(2)修改配置文件

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

[root@master hadoop]# cd hadoop-3.1.0/etc/hadoop/

  • workers

[root@master hadoop]# vim workers

删除localhost 添加从节点的名称

  • hadoop-env.sh

[root@master hadoop]# vim hadoop-env.sh

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第3张图片

在#  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

以下配置在各个文件的中添加

  • core-site.xml

[root@master hadoop]# vim core-site.xml

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第4张图片



fs.defaultFS
hdfs://master:9000


hadoop.tmp.dir
/root/hadoop/tmp

  • hdfs-site.xml

[root@master hadoop]# vim hdfs-site.xml

 

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第5张图片


   dfs.name.dir
   /root/hadoop/dfs/name
   Path on the local filesystem where theNameNode stores the namespace and transactions logs persistently.


   dfs.data.dir
   /root/hadoop/dfs/data
   Comma separated list of paths on the localfilesystem of a DataNode where it should store its blocks.


dfs.namenode.http-address
master:50070


   dfs.replication
   2
 
  • yarn-site.xml

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

[root@master hadoop]# hadoop classpath

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第6张图片

[root@master hadoop]# vim yarn-site.xml

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第7张图片

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第8张图片


yarn.resourcemanager.hostname
master


yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler


yarn.nodemanager.resource.cpu-vcores
1


    yarn.nodemanager.vmem-check-enabled
    false


yarn.application.classpath
输入刚才返回的Hadoop classpath路径
  • mapred-site.xml

[root@master hadoop]# vim mapred-site.xml

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第9张图片

 
    mapred.job.tracker
    master:49001


      mapred.local.dir
       /root/hadoop/var


       mapreduce.framework.name
       yarn

八、克隆

将master分别克隆为slave1和slave2

九、配置slave1和slave2

1.配置静态IP

(1)配置slave1的静态IP:

在slave1的右上角点击:

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第10张图片

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第11张图片

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

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第12张图片

将地址改为192.168.100.12 保存

打开slave1终端:

重启网络:[qiao@master ~]$ systemctl restart network.service

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

(2)配置slave2的静态IP:

修改方式与slave1一致

将地址改为192.168.100.13

(3)检测slave1和slave2是否能

[qiao@master ~]$ ping www.baidu.com

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

2.修改主机名称

[root@master ~]# vim /etc/hostname

[root@master ~]# vim /etc/sysconfig/network

修改后重启slave1和slave2

十、ssh免密登录

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

(1)master:

a.[root@master ~]# ssh-keygen -t rsa

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

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

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

[root@master ~]# cd /root/.ssh

将 id_rsa.pub写入authorized_keys

[root@master .ssh]# cat id_rsa.pub >> authorized_keys

更改authorized_keys的权限

[root@master .ssh]# chmod 644 authorized_keys

c.将authorized_keys发送给slave1和slave2

[root@master .ssh]# scp authorized_keys slave1:/root/.ssh/

输入yes和slave1的密码即可

[root@master .ssh]# scp authorized_keys slave2:/root/.ssh/

(2)slave1:

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

[root@slave1 ~]# cd /root/.ssh/

b.更改authorized_keys的权限

[root@slave1 .ssh]# chmod 644 authorized_keys

c.将 id_rsa.pub追加到authorized_keys

[root@slave1 .ssh]# cat id_rsa.pub >> authorized_keys

d.将authorized_keys发送给slave2

[root@slave1 .ssh]# scp authorized_keys slave2:/root/.ssh/

(3)slave2:

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

[root@slave2 ~]# cd /root/.ssh/

b.更改authorized_keys的权限

[root@slave2 .ssh]# chmod 644 authorized_keys

c.将 id_rsa.pub追加到authorized_keys

[root@slave2 .ssh]# cat id_rsa.pub >> authorized_keys

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

[root@slave2 .ssh]# scp authorized_keys master:/root/.ssh

[root@slave2 .ssh]# scp authorized_keys slave1:/root/.ssh

(4)验证

在master上:

登录[root@master .ssh]# ssh slave1

登出[root@slave1 ~]# logout

十一、格式化节点

在master:

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

[root@master ~]# cd hadoop/hadoop-3.1.0/sbin/

格式化节点

[root@master sbin]# hdfs namenode -format

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第13张图片

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

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

十二、启动hadoop集群

master:

[root@master sbin]# ./start-all.sh

[root@master sbin]# jps

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第14张图片

slave1、slave2:

[root@slave1 ~]# jps

在浏览器中:192.168.100.11:50070

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第15张图片

运行一个样例程序:

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

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

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

[root@master hadoop]# mkdir file

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

[root@master hadoop]# cd file/

[root@master file]# echo "Hello World" > file1.txt

[root@master file]# echo "Hello Hadoop" > file2.txt

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

[root@master file]# more file1.txt

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

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

[root@master /]# cd /root/hadoop/hadoop-3.1.0

在HDFS上创建input文件夹

[root@master hadoop-3.1.0]# bin/hadoop fs -mkdir -p /input

查看是否创建成功

[root@master hadoop-3.1.0]# bin/hadoop fs -ls /

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

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

查看是否上传成功

[root@master hadoop-3.1.0]# bin/hadoop fs -ls /input/

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第16张图片

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

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

[root@master hadoop-3.1.0]# find -name *example*

centos7+hadoop-3.1.0搭建分布式集群超详细教程_第17张图片

运行程序

[root@master hadoop-3.1.0]# bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.0.jar wordcount /input /output

查看output下的文件

[root@master hadoop-3.1.0]# bin/hadoop fs -ls /output

查看运行的结果

[root@master hadoop-3.1.0]# hadoop fs -cat /output/part-r-00000

运行结束后关闭hadoop:

[root@master sbin]# ./stop-all.sh

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

补充:

删除hdfs上的文件:

[root@master hadoop-3.1.0]# bin/hdfs dfs -rm -r /output

错误:

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

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

添加一下内容:

  
    yarn.nodemanager.vmem-check-enabled  
    false  
 

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

这样问题就解决了

你可能感兴趣的:(centos7+hadoop-3.1.0搭建分布式集群超详细教程)