hadoop(04)、Hadoop 集群模式搭建实践

     在《hadoop(01)、windows平台下hadoop环境搭建》一文中,咱们在windows平台上搭建了单机模式的hadoop,本文咱们将在linux(CentOS7)下搭建hadoop集群模式,以便实践更多场景下hadoop的使用,尤为是在实际的生产模式中,一定是以集群模式存在。java

1、准备工做

1.三台CentOS7-64的机器(本文已经在VM中搭建好了)node

2.JDK-LINUX-64的程序包(jdk-8u151-linux-x64.tar.gz)linux

3.hadoop-2.8.2的程序包(hadoop-2.8.2.tar.gz)git

4.SSH链接工具(git bash)web

5.FTP传输工具(8uftp)apache

准备的三台虚拟机:windows

192.168.1.10   Master主节点centos

192.168.1.20   Slaver从节点1bash

192.168.1.30   Slaver从节点2app

准备的相关程序包:

2、环境准备

分别打开三台虚拟机:

1.向三台主机使用FTP传文件

打开FTP工具

注意:若是最小化安装的系统,须要在centos安装ftp服务:yum -y install vsftpd

特别注意:若是安装ftp服务时不能解析域名,须要配置dns解析:vi /etc/resolv.conf

nameserver 8.8.8.8

nameserver 8.8.4.4

安装完成FTP服务,这时候使用FTP服务仍是链接不上,咱们修改vsftpd的配置文件:vi /etc/vsftpd/vsftpd.conf

此时,使用命令: netstat -ntlp,此时FTP服务的21端口已经打开,

使用FTP服务上传hadoop的服务包到/home/hadoop/目录下:

上传JDK的程序包/home/java/目录下:

 

 

2.由于hadoop是java环境下的,因而咱们首先安装jdk环境

进入/home/java 目录使用 ls命令查看文件:

这时能看到刚才使用FTP上传的hadoop的程序包,而后咱们使用解压命令:tar -zxvf <file>

通过一会解压过程,文件解压完成:

注:文件名太长可写首字母后用tab自动补齐

而后在/etc/profile文件中,配置环境变量,让JDK在全部用户生效:vi /etc/profile

在文件的最后添加如下设置:

注:使用某些SSH工具能够直接ctrl+c+v操做,不用手动输入,文本使用的git bash就能够

export JAVA_HOME=/home/java/jdk1.8.0_151
export JRE_HOME=$JAVA_HOME/jre 
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib 
export PATH=$JAVA_HOME/bin:$PATH

保存退出后,让修改的环境变量生效:source /etc/profile

此时环境变量已经生效,咱们验证下jdk安装的是否成功: java -version

特别提醒:

1.禁止防火墙:

systemctl stop firewalld.service  中止防火墙

systemctl disable firewalld.service 静止开机启动

2.禁止Selinux:

/usr/sbin/sestatus -v  查看Selinux状态                 

修改/etc/selinux/config 文件将SELINUX=enforcing改成SELINUX=disabled

此处搭建FTP服务详情可参考《CentOS最小安装的系统安装FTP服务

3、集群搭建

通过前面的全部工做,此时准备工做已经完成。

1.解压hadoop的程序包

进入/home/hadoop 目录使用 ls命令查看文件:

这时能看到刚才使用FTP上传的hadoop的程序包,而后咱们使用解压命令:tar -zxvf <file>

通过一会解压过程,文件解压完成:

2.配置环境变量

执行vi /etc/profile命令,并在文件末尾添加如下:

export HADOOP_HOME=/home/hadoop/hadoop-2.8.2

export HADOOP_CONF_HOME=$HADOOP_HOME/etc/hadoop

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存退出后,让修改的环境变量生效:source /etc/profile

3.修改配置文件

<1>.修改启动脚本

vi /home/hadoop/hadoop-2.8.2/etc/hadoop/hadoop-env.sh

vi /home/hadoop/hadoop-2.8.2/etc/hadoop/yarn-env.sh

在这来那个文件都添加export JAVA_HOME=/home/java/jdk1.8.0_151

<2>.修改配置信息

首先配置核心文件:vi  /home/hadoop/hadoop-2.8.2/etc/hadoop/core-site.xml

<configuration>
<property>
         <name>fs.defaultFS</name>
         <value>hdfs://hdpc01:9000</value>
</property>
<property>
         <name>io.file.buffer.size</name>
         <value>131072</value>
</property>
<property>
         <name>hadoop.tmp.dir</name>
         <value>file:/home/hadoop/hadoop-2.8.2/tmp</value>
         <description>Abase for other temporary directories.</description>
</property>
<property>
         <name>hadoop.proxyuser.root.hosts</name>
         <value>*</value>
</property>
<property>
         <name>hadoop.proxyuser.root.groups</name>
         <value>*</value>
</property>
</configuration>

而后配置HDFS文件:vi  /home/hadoop/hadoop-2.8.2/etc/hadoop/hdfs-site.xml

<configuration>
<property>
         <name>dfs.namenode.name.dir</name>
         <value>file:/home/hadoop/hadoop-2.8.2/data/hdfs/name</value>
</property>
<property>
         <name>dfs.datanode.data.dir</name>
         <value>file:/home/hadoop/hadoop-2.8.2/data/hdfs/data</value>
</property>
<property>
         <name>dfs.replication</name>
         <value>3</value>
</property>
<property>
         <name>dfs.namenode.secondary.http-address</name>
         <value>hdpc01:9001</value>
</property>
<property>
         <name>dfs.webhdfs.enabled</name>
         <value>true</value>
</property>
</configuration>

再配置YARN文件:vi  /home/hadoop/hadoop-2.8.2/etc/hadoop/yarn-site.xml

<configuration>
<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.resourcemanager.scheduler.address</name>
         <value>hdpc01:8030</value>
</property>
<property>
         <name>yarn.resourcemanager.address</name>
         <value>hdpc01:8032</value>
</property>
<property>
         <name>yarn.resourcemanager.admin.address</name>
         <value>hdpc01:8033</value>
</property>
<property>
         <name>yarn.resourcemanager.resource-tracker.address</name>
         <value>hdpc01:8035</value>
</property>
<property>
         <name>yarn.resourcemanager.webapp.address</name>
         <value>hdpc01:8088</value>
</property>
</configuration>

使用cp mapred-site.xml.template mapred-site.xml

再配置Mapred文件:vi  /home/hadoop/hadoop-2.8.2/etc/hadoop/mapred-site.xml        

<configuration>  
<property>                                                                    
         <name>mapreduce.framework.name</name>  
         <value>yarn</value>  
</property>  
<property>  
         <name>mapreduce.jobhistory.address</name>  
         <value>hdpc01:10020</value>  
</property>  
<property>  
         <name>mapreduce.jobhistory.webapp.address</name>  
         <value>hdpc01:19888</value>  
</property>  
</configuration> 

最后修改slaves配置文件:

hdpc01

hdpc02

hdpc03

特别注意:以上配置中的IP地址最好都使用主机名替换,防止后期ip变动会影响hadoop集群,要改配置中的IP地址,此处直接使用主机名既能够避免。

4.从节点安装

将刚刚主节点配置的hadoop复制到咱们准备好的两个从节点的机器上,若是目录一致则不须要修改环境变量,不同修改对应的环境变量(本文使用了快捷的方式,直接将主节点的虚拟机镜像手动克隆了两份做为从节点,该方法快捷简单,能够参考《VMware Workstation player 克隆多个CentOS实》),这样两个从节点也都配置好了。

5.配置主结点SSH免密登陆子结点

在主节点机器上执行:ssh-keygen -t rsa

而后回车一直到完成:

将id_rsa.pub重定向到authorized_keys:cat id_rsa.pub>>authorized_keys

同理,两个从节点也都执行此步骤。

注:从节点hdpc03也和上图hdpc02同样处理      

在主节点机器上将两个从节点的id_rsa.pub追加到authorized_keys

ssh hdpc02 cat /root/.ssh/id_rsa.pub>>authorized_keys

ssh hdpc03 cat /root/.ssh/id_rsa.pub>>authorized_keys

出现不能解析域名的问题,咱们须要在三个节点的机器上配置下hosts:vi /etc/hosts

192.168.100.10   hdpc01

192.168.100.20   hdpc02

192.168.100.30   hdpc03

而后执行:

在主节点机器将authorized_keys分发到两个从节点的/root/.ssh目录下

scp authorized_keys hdpc02:/root/.ssh/

scp authorized_keys hdpc03:/root/.ssh/

此时主节点机器对两个从节点机器的免密登录配置完成,咱们测试下:

ssh hdpc02

ssh hdpc03

 

注意:上面安装其余从节点不只能够克隆镜像,还能够在设置免密登录后使用scp拷贝过去:

scp -r hadoop-2.8.2/ hdpc02:/home/hadoop/

scp -r hadoop-2.8.2/ hdpc03:/home/hadoop/

4、集群验证

1.在主节点上格式化

hadoop namenode -format 或者 hdfs namenode -format

此时已经成功格式化。

2.在主节点启动集群

执行start-all.sh 

    

使用hadoop dfsadmin -report查看个节点信息:

3.web页面查看:192.168.100.10:50070

4.web查看集群信息:192.168.100.10:8088

5.中止集群

执行stop-all.sh

5、总结

      本文是完整的hadoop集群搭建过程,经过这过hadoop集群的工做方式有了更深的认识,同时也是总体能力的一个考验,为何这么说,由于搭建过程当中遇到不少额外的知识,好比我在搭建过程当中遇到不少坑,FTP21号端口被防火墙拦截等问题。最后一步步解决各类问题,成功实践hadoop集群的搭建,在此记录一下,顺道帮助更多学习的同窗。

相关文章
相关标签/搜索