基于centos7.6搭建hadoop-3.1.2集群

基于centos7.6搭建hadoop-3.1.2集群

  1. hadoop单节点安装。

Hadoop单节点的安装不需要守护进程,所以不需要安装zookeeper。
准备环境centos7.6、java1.8、hadoop-3.1.2。
首先安装虚拟机。我选择的是最小安装,这样会更节省资源,更快一些,但是有些东西会缺少,需要自己手动安装。在创建虚拟机之前点击左上角的虚拟网络编辑器。
基于centos7.6搭建hadoop-3.1.2集群_第1张图片

之后安装虚拟机的时候网卡会设置成NAT所以这里吧NAT的网段改为192.168.10.0。
基于centos7.6搭建hadoop-3.1.2集群_第2张图片
设置完成后就可以安装虚拟机了。下面是我的虚拟机配置。
基于centos7.6搭建hadoop-3.1.2集群_第3张图片
安装完成后先配置网卡信息。
在这里插入图片描述
不需要连接外网的话这样就可以了。多余行可以删掉。
基于centos7.6搭建hadoop-3.1.2集群_第4张图片
主要是标注的这3行进行修改。第一行的dhcp改为static,第二行的no改为yes,第三行是添加上去的,添加的就是这台虚拟机的IP。
然后重启网卡服务。
在这里插入图片描述
重启成功。
ip a s 查看网卡信息
基于centos7.6搭建hadoop-3.1.2集群_第5张图片
可以看到ens33网卡IP修改成功。
关闭防火墙,然后永久关闭防火墙。
在这里插入图片描述
然后就可以使用ssh工具连接使用了。这里推荐mobaxterm工具。有安装版和便携版。功能比较全,便携版无需安装使用方便。这软件功能比较多,本人由于英语不好所以正在摸索使用中,有什么好玩功能的东西望大家告知。
点击左上角的session即可开始连接。然后输入自己的虚拟机IP和用户进入连接。
基于centos7.6搭建hadoop-3.1.2集群_第6张图片
然后输入自己root账户的密码。
基于centos7.6搭建hadoop-3.1.2集群_第7张图片
连接成功。
基于centos7.6搭建hadoop-3.1.2集群_第8张图片
修改主机名hostname。
在这里插入图片描述
最小安装是没有vim的,我这里是手动装的。
将配置文件中原有的内容删除掉改为hadoop01。这里可以根据自己的选择改,比较随意。
在这里插入图片描述
配置完成后reboot重启生效。
然后配置hosts文件,这里因为我后面要装4节点的集群,所以提前把后面的也写好了。
在这里插入图片描述
在这里插入图片描述
向里面写入对应的IP和主机名。

Ping通说明配置生效。
基于centos7.6搭建hadoop-3.1.2集群_第9张图片
接下来创建一个新的用户hadoop这个用户将来用来管理hadoop所有的组件。

创建hadoop用户并且设置密码。
在这里插入图片描述
在这里插入图片描述
然后在/etc/sudoers配置文件里修改hadoop用户的权限。
在这里插入图片描述
第一行是本来就有的,添加第二行。
在这里插入图片描述
重启生效。

cd到/opt文件夹下新建两个文件夹software和module。software将用来存放传到节点上的安装包,module将成为hadoop组件的安装路径。
在这里插入图片描述
在这里插入图片描述
然后修改文件夹属主和读写权限。
修改属主。
在这里插入图片描述在这里插入图片描述
修改读写权限。
在这里插入图片描述
在这里插入图片描述
修改后的文件夹属性如下。
在这里插入图片描述
接下来就可以安装java了,因为我的节点是最小安装所以不需要查看是否有旧版本,直接安装即可。
首先在oracle官网下载linux的jdk安装包。
https://www.oracle.com/technetwork/java/javase/downloads/index.html
然后在mobaxterm自带的sftp上将安装包上传至/opt/software路径下。
(mobaxterm连接成功后可以看到左下角有一个跟随文件夹,把这里勾选上然后cd到/opt/software路径下,可以看到左边竖框也转到了该路径下。)
基于centos7.6搭建hadoop-3.1.2集群_第10张图片
在本地电脑上将文件拖拽至左边框内即可上传至对应路径。这里我将后面要用到的一些包也上传了进去。

将jdk的压缩包解压至/opt/module路径下。
在这里插入图片描述
将解压好的文件夹更名。然后配置环境变量。
在这里插入图片描述
向文件末尾追加两行。
在这里插入图片描述
执行source是变量生效。
在这里插入图片描述
查看版本确定安装成功。
在这里插入图片描述
到这里准备环境算是配置完成了,接下来就可以配置hadoop组件了。
首先将hadoop的安装包上传至/opt/software路径下。我之前上传过了就不再上传了。
cd到/opt/software路径下将hadoop安装包解压至/opt/module路径下。
基于centos7.6搭建hadoop-3.1.2集群_第11张图片
使用hadoop账户配置免密登录。
基于centos7.6搭建hadoop-3.1.2集群_第12张图片
然后修改hadoop的配置文件,这些文件的路径为/opt/module/hadoop-3.1.2/etc/Hadoop。
然后修改hdfs-site.xml、core-site.xml、hdfs-env.sh、
hdfs-site.xml配置副本数。
基于centos7.6搭建hadoop-3.1.2集群_第13张图片
hdfs-site.xml配置web页面。
在这里插入图片描述
core-sit.xml配置节点端口。
基于centos7.6搭建hadoop-3.1.2集群_第14张图片
hdfs-site.xml配置指定hadoop运行时产生文件的存储目录在这里插入图片描述

配置hadoop-env.sh中的JAVA_HOME。
基于centos7.6搭建hadoop-3.1.2集群_第15张图片
接下来修改yarn的相关配置文件。
修改mapred-site.xml、yarn-site.xml、mapred-env.sh。
配置MapReduce程序运行在yarn上。
基于centos7.6搭建hadoop-3.1.2集群_第16张图片
配置resourcemanager的地址和reduce的数据获取方式。
基于centos7.6搭建hadoop-3.1.2集群_第17张图片
向mapred-env.sh中添加JAVA_HOME。
在这里插入图片描述
切换root用户修改/etc/profile文件,向里面添加HADOOP_HOME。
在这里插入图片描述
在这里插入图片描述
Source使配置文件生效。

格式化namenode看到successfully格式化成功。
基于centos7.6搭建hadoop-3.1.2集群_第18张图片
基于centos7.6搭建hadoop-3.1.2集群_第19张图片
启动服务。
基于centos7.6搭建hadoop-3.1.2集群_第20张图片
使用jps查看启动成功的服务。
基于centos7.6搭建hadoop-3.1.2集群_第21张图片
Web访问192.168.10.101:50070访问成功。
基于centos7.6搭建hadoop-3.1.2集群_第22张图片
刚格式化好的hdfs是完全空的,可以执行命令创建文件夹并上传文件。
在这里插入图片描述
这里我将jdk包作为测试上传到hdfs。

基于centos7.6搭建hadoop-3.1.2集群_第23张图片
可以在web管理页面中看到上传的文件有两个块有两个副本。(hadoop2.x以上默认副本大小为128MB,副本数是在hdfs配置文件里面配置的)
到这里单节点安装就完成了。

  1. 完全分布式安装。

完全分布式安装hadoop组件运行在多个物理节点上,这里对应多台虚拟机。这里我的计划是装一个四节点的集群,各组件分布如下。
基于centos7.6搭建hadoop-3.1.2集群_第24张图片
因为需要四台虚拟机所以还需要在创建三台。这里可以直接克隆hadoop01,这样可以省去很多基础环境配置。只需要配置hostname、IP等属性即可。接下来以hadoop02作为示例演示。hadoop03和hadoop04和hadoop02相同就不再演示。
基于centos7.6搭建hadoop-3.1.2集群_第25张图片
可以看到这台克隆来的虚拟机的属性还是hadoop01的,目前和hadoop01是一样的。然后使用root账户登录进行配置修改。
修改/etc/hostname和/etc/sysconfig/network-scripts/ifcfg-ens33 配置文件然后重启生效,接下来就可以用ssh工具进行连接了。

通过克隆虚拟机然后修改配置现在得到了基本配置完成的四个节点,但是还需要重新配置免密登录,因为之前配置的只有hadoop01的免密登录,想要四节点之间互相免密登录还需要重新配置。命令如下。(配置免密登录的时候注意用户切换,要使用hadoop用户配置免密登录)
[hadoop@hadoop02 ~]# ssh-keygen -t rsa
[hadoop@hadoop02 ~]# ssh-copy-id hadoop01
[hadoop@hadoop02 ~]# ssh-copy-id hadoop02
[hadoop@hadoop02 ~]# ssh-copy-id hadoop03
[hadoop@hadoop02 ~]# ssh-copy-id hadoop04
这样四个节点的基础环境就配置成功了。
由于HA需要zookeeper,所以需要先安装zookeeper。下载地址如下。
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
我之前已经下载好并上传至/opt/software路径下,所以这里直接解压。

解压zookeeper到/etc/module路径下。然后进入解压的文件夹进行配置。
在这里插入图片描述
在zookeeper安装文件夹下创建Data目录。
在这里插入图片描述
然后cd到conf文件夹下
将zoo_sample.cfg更名为zoo.cfg。然后进入该文件进行配置。
在这里插入图片描述
在这里插入图片描述
配置dataDir添加dataLogDir,并在末尾添加zookeeper所有节点信息,然后保存退出。
基于centos7.6搭建hadoop-3.1.2集群_第26张图片
接下来进入之前创建的Data目录下创建一个名为myid的文件,里面添加上zookeeper节点号数字。比如一号节点里面就是一个1。
在这里插入图片描述

在这里插入图片描述
这样一个zookeeper就配置完成了。然后切换root用户配置环境变量。

在这里插入图片描述在这里插入图片描述
然后切换至hadoop用户用scp将配置好的zookeeper文件夹发送至其他需要安装的节点。这里需要发送至hadoop02和hadoop03。
在这里插入图片描述
在这里插入图片描述
然后到对应节点去修改之前创建的myid文件,将里面的数字改为节点号。Hadoop02里面改为2.
hadoop03里面改为3.
并修改这两个节点的环境变量。
然后就可以启动zookeeper了。
在这里插入图片描述
使用命令分别在三台安装了zookeeper的节点上启动zookeeper。
使用命令查看三个节点上zookeeper的状态。
在这里插入图片描述在这里插入图片描述在这里插入图片描述
可以看到一个leader其他的都是follower,说明安装正确没有问题。
接下来就可以进行hadoop的完全分布式配置了。
因为其他三个节点都是由hadoop01克隆过来的所以其他节点修改配置文件即可完成配置安装。
接下来配置hadoop分布式安装的配置文件。需要配置以下文件。
core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

core-site.xml




   fs.defaultFS
   hdfs://mycluster



  hadoop.tmp.dir
  /opt/module/hadoop-2.7.6/data/ha/tmp



     ha.zookeeper.quorum
     hadoop01:2181,hadoop02:2181,hadoop03:2181

 

hdfs-site.xml




dfs.replication
2



  dfs.nameservices
  mycluster



   dfs.ha.namenodes.mycluster
   nn1,nn2



   dfs.namenode.rpc-address.mycluster.nn1
   hadoop01:9000



   dfs.namenode.rpc-address.mycluster.nn2
   hadoop02:9000



   dfs.namenode.http-address.mycluster.nn1
   hadoop01:50070



    dfs.namenode.http-address.mycluster.nn2
    hadoop02:50070



    dfs.namenode.shared.edits.dir
    qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/mycluster



    dfs.ha.fencing.methods
    sshfence



    dfs.ha.fencing.ssh.private-key-files
    /home/hadoop/.ssh/id_rsa



   dfs.journalnode.edits.dir
   /opt/module/hadoop-3.1.2/data/ha/jn



   dfs.permissions.enable
   false



   dfs.client.failover.proxy.provider.mycluster
   org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider



   dfs.ha.automatic-failover.enabled
   true
 

mapred-site.xml

 
    
     
      mapreduce.framework.name
      yarn
     
    
         
        mapreduce.jobhistory.address   
        hadoop03:10020   
         
    
         
        mapreduce.jobhistory.webapp.address   
        hadoop03:19888   
      
        
      
        mapreduce.jobhistory.joblist.cache.size
        20000
      
     
      
        mapreduce.jobhistory.done-dir
        ${yarn.app.mapreduce.am.staging-dir}/history/done
      
      
        mapreduce.jobhistory.intermediate-done-dir
        ${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate
      
      
        yarn.app.mapreduce.am.staging-dir
        /tmp/hadoop-yarn/staging
      
    

yarn-site.xml



 
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
    
        yarn.resourcemanager.ha.enabled
        true
    
    
    
        yarn.resourcemanager.cluster-id
        rmCluster
    
    
        yarn.resourcemanager.ha.rm-ids
        rm1,rm2
    
    
        yarn.resourcemanager.hostname.rm1
        hadoop01
    
    
        yarn.resourcemanager.hostname.rm2
        hadoop02
    
    
    
        yarn.resourcemanager.zk-address
        hadoop01:2181,hadoop02:2181,hadoop03:2181
    
    
    
        yarn.resourcemanager.recovery.enabled
        true
    
    
    
        yarn.resourcemanager.store.class    
        org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
    

然后修改/opt/module/hadoop-3.1.2/etc/hadoop/路径下的workers文件。(在hadoop1.x和hadoop2.x中是slaves文件,但是hadoop3.x中是workers文件)
workers文件指定的是datanode的地址和journalnode的地址。
配置完成后用scp将配置好的文件整个目录发往其他节点。
基于centos7.6搭建hadoop-3.1.2集群_第27张图片
03节点和04节点也要发送。

然后先启动zookeeper服务,再启动journalnode。(一定要先启动zookeeper

可以看到在启动了journalnode之后hadoop目录中data路径下多了一个ha文件夹。
基于centos7.6搭建hadoop-3.1.2集群_第28张图片
然后在namenode1上格式化namenode。
在这里插入图片描述
看到successfully说明格式化成功。然后在hadoop01上启动namenode。

可以看到namenode已经启动成功。然后在hadoop02上同步namenode。
基于centos7.6搭建hadoop-3.1.2集群_第29张图片

同步成功。
基于centos7.6搭建hadoop-3.1.2集群_第30张图片
启动hadoop02上的namenode。
在这里插入图片描述
在hadoop01上启动所有的datanode再去Hadoop可以看到datanode启动成功。
基于centos7.6搭建hadoop-3.1.2集群_第31张图片
此时可以进入web页面查看状态,端口50070.
在这里插入图片描述在这里插入图片描述
看到hadoop01和hadoop02的状态都是standby。在hadoop01上格式化ZKFC,然后其中一台变成active。

Hadoop集群分布式安装完成。

你可能感兴趣的:(hadoop)