CentOS7搭建hadoop集群环境

1、集群部署介绍

1.1Hadoop简介

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

 

对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任 务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

 

从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

1.2环境说明

ip

用途

操作系统

主机名

192.168.142.128

CentOS7.6

master

192.168.142.129

从1

192.168.142.128

slave1

192.168.142.130

从2

192.168.142.128

slave2

1.3环境配置

修改三台服务器的hosts配置,新增如下三条内容:

vi /etc/hosts
192.168.142.128 master
192.168.142.129 slave1
192.168.142.130 slave2

可以使用 ping 命令测试三台机器的连通性

 

1.4所需软件

(1)jdk

(2)hadoop

2、集群SSH免密登陆设置

2.1、环境hadoop用户

 

为三个节点分别创建相同的用户hadoop,并在以后的操作均在此用户下操作,操作如下:

useradd hadoop
passwd hadoop
设置密码
为hadoop添加sudo权限
visudo
在该行root ALL=(ALL) ALL下添加hadoop ALL=(ALL) ALL保存后退出

 

注:接下来操作基本都是在hadoop用户下进行

2.2、修改hostname

centos7默认的hostname是localhost,为了方便将每个节点hostname分别修改为master、slave1、slave2(以下以master节点为例)

sudo hostnamectl set-hostname master
查看
hostname

2.3、配置Master无密码登录所有Salve

a.首先生成master的rsa密钥:

sudo hostnamectl set-hostname master
查看
hostname

设置全部采用默认值进行回车

生成的密钥对:id_rsa(私钥)和id_rsa.pub(公钥),默认存储在"/用户名/.ssh"目录下。

CentOS7搭建hadoop集群环境_第1张图片

 

b. 接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

给授权文件权限

chmod 600  ~/.ssh/authorized_keys

进行本机ssh测试:$ssh maste 正常免密登陆后所有的ssh第一次都需要密码,此后都不需要密码

c.使用ssh-copy-id命令将公钥传送到远程主机上(这里以Slave1.Hadoop为例)

ssh-copy-id hadoop@slave1

登陆到slave1操作

chmod 600  ~/.ssh/authorized_keys

然后测试是否无密码登录其它机器成功

ssh slave1

slave2也是同样的

3、java环境安装

所有的机器上都要安装JDK,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装JDK以及配置环境变量,需要以"root"的身份进行。

3.1 安装JDK

首先用root身份登录"Master.Hadoop"后将jdk复制到"/usr/local/src"文件夹中,然后解压即可。查看"/usr/local/src"下面会发现多了一个名为"jdk-7u25-linux-i586"文件夹,说明我们的JDK安装结束,进入下一个"配置环境变量"环节。

然后将jdk文件夹移动到”/usr/local/“目录下。

3.2 配置环境变量

(1)编辑"/etc/profile"文件

 编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容如下:

 

# set java environment

export JAVA_HOME=/usr/local/jdk1.8.0_171/
export JRE_HOME=/usr/local/jdk1.8.0_171/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

 

(2)使配置生效

保存并退出,执行下面命令使其配置立即生效。

source /etc/profile 或 . /etc/profile

 

3.3 验证安装成功

配置完毕并生效后,用下面命令判断是否成功。

java -version

从上图中得知,我们确定JDK已经安装成功

4、hadoop集群安装(本例中版本为:3.0.2)

4.1、安装软件

进入 /usr/local目录下

cd /usr/local wget http://mirrors.shu.edu.cn/apache/hadoop/common/hadoop-3.0.2/hadoop-3.0.2.tar.gz tar –zxvf hadoop-3.0.2.tar.gz

注:hadoop有32位和64位之分,官网默认二进制安装文件是32位的,但是本文操作系统是64位,会在后面hadoop集群使用中产生一个warning但是不影响正常操作。

4.2、创建tmp文件夹

最后在"/usr/local/hadoop-3.0.2"下面创建tmp文件夹.

4.3、 配置环境变量

打开/etc/profile,增加hadoop环境变量

vi /etc/profile


# set hadoop path
export HADOOP_INSTALL=/usr/local/hadoop-3.0.2
export PATH=${HADOOP_INSTALL}/bin:${HADOOP_INSTALL}/sbin:${PATH}
export HADOOP_MAPRED_HOME=${HADOOP_INSTALL}
export HADOOP_COMMON_HOME=${HADOOP_INSTALL}
export HADOOP_HDFS_HOME=${HADOOP_INSTALL}
export YARN_HOME=${HADOOP_INSTALLL}
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_INSTALL}/lib/natvie
export HADOOP_OPTS="-Djava.library.path=${HADOOP_INSTALL}/lib:${HADOOP_INSTALL}/lib/native"

重启配置使其生效

source /etc/profile

4.4、配置hadoop

我们先在master.hadoop中进行配置,配置完成后再将hadoop复制到slave1和slave2中。

(1)设置hadoop-env.sh中的java环境变量

cd /usr/local/hadoop-3.0.2/etc/hadoop/
vi hadoop-env.sh
JAVA_HOME=/usr/java/jdk1.8.0_191

( 2)配置core-site.xml文件


 
        hadoop.tmp.dir
        /usr/local/hadoop-3.0.2/tmp
        A base for other temporary directories.
    
    
        fs.default.name
        hdfs://master:9000
    

注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被删掉,必须重新执行format才行,否则会出错。

 

( 3 )配置hdfs-site.xml文件


    
        dfs.namenode.name.dir
        file:///usr/local/hadoop-3.0.2/dfs/name
    
    
        dfs.datanode.data.dir
        file:///usr/local/hadoop-3.0.2/dfs/data
    
    
        dfs.replication
        1
    

    
        dfs.nameservices
        hadoop-cluster1
    
    
        dfs.namenode.secondary.http-address
        master:50090
    
    
        dfs.webhdfs.enabled
        true
    

(4)配置mapred-site.xml文件


    
        mapreduce.framework.name
        yarn
        true
    

    
        mapreduce.jobtracker.http.address
        master:50030
    
    
        mapreduce.jobhistory.address
        master:10020
    
    
        mapreduce.jobhistory.webapp.address
        master:19888
    
    
        mapred.job.tracker
        http://master:9001
    

(5)配置yarn-site.xml文件




    
        yarn.resourcemanager.hostname
        master
    

    
        yarn.nodemanager.aux-services
        mapreduce_shuffle
    
    
        yarn.resourcemanager.address
        master:8032
    
    
        yarn.resourcemanager.scheduler.address
        master:8030
    
    
        yarn.resourcemanager.resource-tracker.address
        master:8031
    
    
        yarn.resourcemanager.admin.address
        master:8033
    
    
        yarn.resourcemanager.webapp.address
        master:8088
    

4.5、配置hadoop的集群

(1) 将Master中配置好的hadoop传入两个Slave中

scp -r /usr/local/hadoop-3.0.2  hadoop@slave1:/usr/local/
scp -r /usr/local/hadoop-3.0.2  hadoop@slave2:/usr/local/

(2) 修改Master主机上的workers文件

cd /usr/local/hadoop/etc/hadoop-3.0.2
vi workers
// 将以下内容写入
slave1
slave2

(3) 格式化HDFS文件系统

hdfs namenode -format

(4)启动hadoop

start-dfs.sh
start-yarn.sh

(5) 验证hadoop启动是否成功

jps

master中的结果:

slave中的结果:

还可以用hadoop自带的例子查看是否成功

hadoop jar /usr/local/hadoop-3.0.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.2.jar wordcount /input /outputhadoop jar /usr/local/hadoop-3.0.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.2.jar pi 10 10

出现如下结果说明成功:

CentOS7搭建hadoop集群环境_第2张图片

注:过程中如果有需要关闭防火墙和selinux,命令如下:

$sudo systemctl stop firewalld.service
$sudo systemctl disable firewalld.service
$sudo vim /usr/sbin/sestatus 

将SELinux status参数设定为关闭状态

SELinux status:                 disabled

参考博客:https://www.cnblogs.com/champaign/p/7645961.html

参考博客:https://www.cnblogs.com/pcxie/p/7747317.html

 

你可能感兴趣的:(大数据)