亲测有用!Centos7 + Zookeeper集群 + Hadoop集群配置

Posted 一个努力学习代码的libre

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了亲测有用!Centos7 + Zookeeper集群 + Hadoop集群配置相关的知识,希望对你有一定的参考价值。

一、网络配置:

1.1 配置单机网络:

1.2 关闭防火墙:

1.3 SSH连接Centos7:

1.4 配置hosts文件:

二、JDK配置:

 三、Zookeeper集群配置:

四、Hadoop集群配置:

4.1 文件建立

4.2 JAVA路径设置

4.2.1 hadoop-env.sh配置

4.2.2  yarn-env.sh配置

 4.3 Hadoop集群文件配置

 4.3.1 core-site.xml配置

4.3.2 hdfs-site.xml配置:

4.3.3 mapred-site.xml配置

4.4 Hadoop集群搭建

4.4.1 克隆节点

4.4.2 配置免密登录 

4.4.3 启动Zookeeper

4.4.4 启动Hadoop集群


一、网络配置:

1.1 配置单机网络:

        配置虚拟机网络之前,我们需要打开cmd输入ipconfig,得到:

         IPv4 地址以及默认网关中显示的是为物理机的ip地址,在ip地址中各类网络地址的子网都是不同的。

例如:172.16.x.x是指B类网络地址,而.x.x则是在整个172.16下的子网ip地址

         因此,在编辑Centos7的网络地址的时候,需要找到自己的网络地址,可以通过子网掩码进行确认几类网络地址,之后通过VM-编辑-虚拟机网络编辑进行修改,即:

        通过学习网络上其他大佬的文章,子网IP选择和物理机的Network地址一致,Host地址不一致,可以为之后深入Centos学习节约一点时间。

        进入Centos7界面之后,选择root用户登录,之后进入终端,输入ifconfig可以看到自己的网络地址:

         如果是没配置过网络的Centos7,则这是配置完网络之后应该出现的截图。通过修改ifcfg-ens33文件实现对Centos7网络配置:

vim /etc/sysconfig/network-scripts/ifcfg-ens33 

        进入ens33文件之后,需要配置的是

BOOTPROTO = “static”

ONBOOT=yes

IPADDR=Network地址+自己设置的host地址

        host地址一般是从129开始,而搭建hadoop集群所需要的其他节点host设置,则是在master机器的host地址之上迭代+1。

GATEWAY=Network地址+2 例如172.16.1.2

        NETMASK地址以及DNS地址可以选择填写或者不填,在下图示例中是没有填写进去。

NETMASK=几类地址的子网掩码,例如255.255.255.0是C类地址的子网掩码

DNS=8.8.8.8,这个属于Google公司的dns码

         修改完ens33文件之后,保存并重启网络:

 service network restart

         再输入ifconfig,则可以看到自己刚刚在上面所设置的ip地址。

1.2 关闭防火墙:

        几乎现在每一台计算机系统都有配置自己的防火墙,而防火墙可以避免我们的计算机陷入不安全的环境当中。但是基于对Hadoop集群的学习以及是在VM虚拟机里面,因此我们可以选择直接关闭防火墙的自启动,避免每一次登录Centos7都会发生防火墙隔离的问题。但如果是基于自己系统里面,我建议每一次使用前再关闭防火墙。

systemctl stop firewalld.service #停止防火墙
systemctl status firewalld.service #查看防火墙状态
systemctl disable firewalld.service #关闭防火墙

        在Centos7里面,stop、start、status、disable以及restart分别对应着操作中的停止、开始、状态、禁止、重启的操作逻辑,因此,在操作其他语句时,我们亦可以尝试使用。

1.3 SSH连接Centos7:

        这里阐述的是通过SSH软件MobaXterm(官网有免费版本,学习用的小伙伴可以和我一样使用免费版本降低学习成本)连接VM虚拟机中的Centos7的教程:

        首先,我使用ssh软件的目的是因为VM虚拟机进行本机切换是需要输入CTRL+ALT跳出虚拟机操作界面,这使得我学习之路有点难受。因此,我选择使用SSH软件连接VM虚拟机中的Centos7,可以避免这个问题。同时,有些人无法从主机上传文件到虚拟机中(具体解决办法可以查询其他大佬的文章)或指定目录,而SSH软件帮助我们迅速的解决这一问题。

        从官网下载MobaXterm软件是纯英文版本,而如何进行远程连接呢?首先我们需要将修改虚拟机的IP地址(这一步,我们已经完成),之后选择MobaXterm中的:

后输入自己的Centos7中的IP地址,以及相关账号的姓名之后:

         点击OK,并在命令行界面中输入密码,实现Centos7命令行界面使用(这过程中VM虚拟机中的Centos7需要保持启动状态)。

1.4 配置hosts文件:

        这一步,是提前进行hosts文件配置,我们也可以在克隆完成之后再进行,并通过SCP命令将hosts文件进行同步。

        首先,我们先进行主机名字的修改:

hostnamectl set-hostname master #每台机器的主机名需要不同
hostnamectl set-hostname slave1 #推荐使用master、slave1、slave2
hostnamectl set-hostname slave2 
.
.
.

         并输入bash进行刷新,然后打开HOSTS文件进行配置:

vim /etc/hosts     #输入IP地址 主机名
                   #有多少台节点就输入多少IP地址和主机名
                   #需要区分IP地址

        配置完成之后,需要保证每一台节点的主机名和IP地址与HOSTS文件中写入的一致性 

二、JDK配置:

         配置Hadoop以及Zookeeper之前,我们还需要对Centos7中的JDK环境进行配置。虽然在Centos7中,我们已经有系统自带的JDK环境:

java -version

         但是,系统自带的JDK可能会与我们使用的Hadoop与Zookeeper造成错误,因此我们需要对自带的JDK进行删除,可以输入下面这行代码,查找到所有与JAVA有关的文件。

rpm -qa | grep java

         而删除自带的JDK,我们只需要删除所有带有OPENJDK文件,例如:

rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64

        将所有OPENJDK文件删除之后,我们输入java -version命令可以得到:

        这样一来,我们的自带JDK系统已经删除完毕。然后,进入JDK官网下载Linux版本的JDK。注意,不需要下载太高版本的JDK,否则会因为JDK自带因素导致无法正常运行Hadoop和Zookeeper(亲身体验过安装没问题,启动一直报错的痛苦),推荐下载Java 8

         将下载完成的JDK文件导入Centos7中,如果是使用Vm虚拟机,需要注意当前用户是ROOT或者是普通用户,避免找不到文件位置,而使用SSH连接软件,需要注意上传目录是在哪里。

        上传之后,对JDK进行解压,JDK文件名代表着JDK-版本-操作系统-x64/32位,因此建议使用TAB键完成JDK文件名的匹配。

tar -zxvf jdk-8u301-linux-x64.tar.gz

        解压之后,使用:

mv jdk1.8.0_301/ /usr/local/java

        将JDK文件移到/USR/LOCAL/下面,并重命名为JAVA,可以通过ls命令进行确认。需要注意的是本文全程使用的是ROOT用户进行安装。

        解压完JDK,我们需要对JAVA进行环境配置,类似于Windows的环境配置:

vim /etc/profile

        打开编辑/ETC/PROFILE文件之后,新建一行,并将JAVA所在位置等信息进行写入,即:

#java
export JAVA_HOME=/usr/local/java  #JAVA所在实际文件位置
export  CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin

        完成之后,重启PROFILE文件(推荐):

source /etc/profile

我们可以通过JAVA -VERSION命令进行查看:

 三、Zookeeper集群配置:

        Zookeeper的安装文件是从官网中下载,注意的是Zookeeper的版本不要最新,也不要太过老(因为有些版本的STATUS会发生No Runing现象,本文以Zookeeper3.6.3为例)。

将zookeeper导入到Centos7,进行解压、移动的操作:

tar -zxvf  zookeeper-xxxx.tar.gz    #tab补全
mv zookeeper-xxx /usr/local/zookeeper  #tab补全
cd /usr/local/zookeeper

        在zookeeper文件路径下,建立DATA文件目录和LOGS文件目录:

mkdir data;mkdir logs

        并且,将ZOOKEEPER文件目录下的CONF文件目录下的zoo_sample.cfg文件进行复制粘贴重命名操作:

cp zoo_sample.cfg zoo.cfg

        进入到zoo.cfg文件编辑中,修改以下图所示:

 

         代码:

dataDir=/usr/local/zookeeper/data        #data存放地方
dataLogDir=/usr/local/zookeeper/logs     #log存放地方


clientPortAddress=192.168.x.x        #本机IP,避免localhost现象,可以不加

server.0=192.168.x.x:2888:3888       #server0-2指的是节点,一般用的是1-250
server.1=192.168.x.y:2888:3888       #填入多台Centos7的IP地址
server.2=192.168.x.z:2888:3888       #2888是内部通信地址,3888是选举leader使用

         保存后: 

cd /usr/local/zookeeper/data          #到data地址
touch myid                            #建立myid文件,需要和server.匹配
echo 0 >> myid                        #通过echo将id写入myid

          如果要将Zookeeper文件在任意目录下调用,需要编辑PROFILE文件:

vim /etc/profile

#zookeeper                                    #输入
export ZOOKEEPER_HOME=/usr/local/zookeeper    #所在位置
export PATH=$PATH:$ZOOKEEPER_HOME/bin

         因为我们配置的是ZOOKEEPER集群,因此启动前需要保证所有节点都启动。如果是按照本文顺序先配置单机,再克隆出其他节点的话,现在启动ZOOKEEPER会出现其他节点报错的信息:

/usr/local/zookeeper/bin/zkServer.sh start     #在zookeeper/bin路径下进行配置

        启动成功截图(三台节点同时在线)为:

         后将 START 换成 STATUS/STOP则分别是上文中所提及的状态以及停止服务。

         同时,如果我们想一键启动ZOOKEEPER则可以通过在ROOT目录或其他路径下建立一个.sh文件进行操作,同时需要用CHMOD命令进行权限给予 chmod 775 文件名.sh

#! /bin/bash

case $1 in
"start"){
 for i in 192.168.x.x 192.168.x.y 192.168.x.z     #三台机的主机名或IP地址
 do
  ssh $i "/usr/local/zookeeper/bin/zkServer.sh start"  #同一个路径下
 done
};;
"stop"){
 for i in 192.168.x.x 192.168.x.y 192.168.x.z
 do
  ssh $i "/usr/local/zookeeper/bin/zkServer.sh stop"
 done
};;
"status"){
 for i in 192.168.x.x 192.168.x.y 192.168.x.z
 do
  ssh $i "/usr/local/zookeeper/bin/zkServer.sh status"
 done
};;
esac

四、Hadoop集群配置:

4.1 文件建立

        首先,我们需要从官网中下载Hadoop文件到本机中,并上传到Centos7。之后进行重复上文的动作,将Hadoop文件解压,并移动到/USR/LOCAL路径下:

tar -zxvf hadoop-2.10.1.tar.gz       #tab补齐即可
mv hadoop-2.10.1/ /usr/local/hadoop  #会重命名为hadoop文件
cd /usr/local/hadoop/                #到路径下,如果找不到则是路径写错了

        同样,如果我们要在任意目录下启动Hadoop集群,则需要将Hadoop路径写入到PROFILE路径下面:

vim /etc/profile                 

#hadoop
export HADOOP_HOME=/usr/local/hadoop     #Hadoop路径
export PATH=$PATH:${HADOOP_HOME}/bin

        编辑完成之后,通过重启PROFILE文件进行测试:

source /etc/profile
had                               #当tab能自动补齐时,则编辑成功

        现在,我们需要知道的是Hadoop集群是需要进行数据存储,因此我们需要建立一个DATA文件进行数据存储。

mkdir -p /usr/local/data/temp
mkdir -p /usr/local/data/hdfs/name
mkdir -p /usr/local/data/hdfs/data

        当我们将这些外部东西设置好了之后,我们需要进行内部“装饰”,首先需要我们在Hadoop文件夹下,然后进入到ETC/HADOOP目录下:

cd etc/hadoop/

4.2 JAVA路径设置

        接下来,大家如果怕自己编辑文件错误,可以通过CP命令将文件复制一份重命名为其他,进行备份。然后,我们开始编辑,首先是将JAVA路径配置进去。

4.2.1 hadoop-env.sh配置

        编辑hadoop-env.sh文件:

vim hadoop-env.sh

        然后在文件中查找找到JAVA_HOME,插入下面的代码,并把之前的JAVA_HOME进行屏蔽:

export JAVA_HOME=/usr/local/java         #java所在路径

        如图:

4.2.2  yarn-env.sh配置

        编辑 yarn-env.sh文件:

vim yarn-env.sh

        同样的查找到文件中的JAVA_HOME路径,将之前的屏蔽掉后插入下面代码:

export JAVA_HOME=/usr/local/java         #java所在路径

        如图:

 4.3 Hadoop集群文件配置

        接下来进行Hadoop集群文件的配置,还是那一句话,如果担心配置错误的话,建议可以CP文件进行备份。所有代码都要输入到<configuration></configuration>

 4.3.1 core-site.xml配置

        编辑core-site.xml文件:

vim core-site.xml

        输入以下代码:


<property>

<name> fs.default.name </name>

<value>hdfs://master:9000</value>            #masterIP地址

<description>指定HDFS的默认名称</description>

</property>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>              #masterIP地址

<description>HDFS的URI</description>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/data/tmp</value>           #上文中建立的data文件

<description>节点上本地的hadoop临时文件夹</description>

</property>
        <!--流文件的缓冲区单位KB-->
        <property>
                <name>io.file.buffer.size</name>
                <value>4096</value>
        </property>
  <!--执行zookeeper地址 -->
<property>
  <name>ha.zookeeper.quorum</name>         #zookeeper的IP需要与下面输入一致
 <value>master:2181,slave1:2181,slave2:2181</value>
 </property>

4.3.2 hdfs-site.xml配置:

        编辑hdfs-site.xml文件:

vim hdfs-site.xml

        输入以下代码:


<property>

        <name>dfs.namenode.name.dir</name>

        <value>file:/usr/local/data/hdfs/name</value>     #根据实际修改

<description>namenode上存储hdfs名字空间元数据 </description>

    </property>

    <property>

        <name>dfs.datanode.data.dir</name>

        <value>file:/usr/local/data/hdfs/data</value>     #根据实际修改

<description>datanode上数据块的物理存储位置</description>

    </property>

    <property>

        <name>dfs.replication</name>

        <value>3</value>

<description>副本个数,默认是3,应小于datanode机器数量</description>

    </property>
        <property>
                <name>dfs.namenode.secondary.http-address</name>
                <value>hadoop02:50090</value>             #根据实际修改
                <!-- hadoop02是slave1或者是2 的 主机名 -->
        </property>

4.3.3 mapred-site.xml配置

        由于mapred-site.xml被Hadoop文件自动设置了.template,因此需要首先去掉.template才能使用,推荐以下操作:

cp mapred-site.xml.template mapred-site.xml

        编辑mapred-site.xml

vim mapred-site.xml

        输入以下代码:

<property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

<description>指定mapreduce使用yarn框架</description>

</property>

4.3.4 yarn-site.xml配置

        编辑yarn-site.xml

vim yarn-site.xml

        输入以下代码

<property>

        <name>yarn.resourcemanager.hostname</name>

        <value>hadoop01</value>            #推荐master

<description>指定resourcemanager所在的hostname</description>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>
      

</property>

4.3.5 slaves文件配置

        到这一步,我们需要先编辑slaves文件:

vim slaves

        然后,把LOCALHOST给删除,更换成SLAVE1、SLAVE2

slave1        #或者是IP地址
slave2
master

4.4 Hadoop集群搭建

4.4.1 克隆节点

        首先,我们关闭现在的Centos7

shutdown now

        然后,右键虚拟机,选择管理-克隆-完整克隆(注意不要把克隆机放在C盘,不然你会发现C盘又被占用了点空间),如图:

        克隆好两台Centos7后,我们可以发现现在只需要修改ENS33文件中的IP地址、ZOOKEEPER文件目录下的DATA目录下的MYID,以及主机名即可,具体操作如下:

        修改ens33文件:

vim /etc/sysconfig/network-scripts/ifcfg-ens33 

         修改地方如图:

        同时,需要我们输入的IP地址和HOSTS文件的IP地址一致,否则无法启动SSH免密登录,查看的代码:

cat /etc/hosts    #需要修改则将cat和vim互换

         Myid修改的代码如下:

cd /usr/local/zookeeper/data          #到data地址     
echo 1 >> myid                        #通过echo将id写入myid

        注意的地方是,MYID的ID需要和server.x相匹配,同时也需要保证server.x的IP和HOSTS文件的IP一致

        主机名修改的代码如下:

hostnamectl set-hostname slave1 #推荐使用master、slave1、slave2
hostnamectl set-hostname slave2 
.
.
.

         然后重启:

reboot

         测试是否可以连接

ping 主机名     #也可以是主机的IP

        然后,如图:

4.4.2 配置免密登录 

        现在我们需要实现的是A机免密访问B机,同时B机也可以免密访问A机。

ssh-keygen -t rsa             #在master上,三次回车即可

         将master公钥拷贝在一个文件里面

cat id_rsa.pub >> authorized_keys

        然后把其他节点的密码也输入到同一个文件,需要登录其他节点

ssh slave1                   #slave1为节点名
ssh-copy-id -i master        #master主机名或IP地址

        回到master主机上,输入:

chmod 600 authorized_keys
chmod 700 .ssh

        然后通过SCP把authorized_keys传到其他节点上:

scp /root/.ssh/authorized_keys slave1:/root/.ssh/

        通过SSH其他节点,测试是否成功 

ssh 节点名           #注意第一次启动需要密码,接下里就不用

4.4.3 启动Zookeeper

        输入JPS,保证自己节点机器上没有运行ZOOKEEPER,如图:

        然后在集群节点下面输入以下代码,或者是用.sh文件一键启动,可以用STATUS或者是JPS查看:

/usr/local/zookeeper/bin/zkServer.sh start     #在zookeeper/bin路径下进行配置

4.4.4 启动Hadoop集群

       第一次启动Hadoop集群,需要在master节点上格式化,代码如下:

hdfs namenode -format

       然后格式化后,输入以下代码,启动Hadoop集群:

/usr/local/hadoop/sbin/start-all.sh start

        如图,可以通过JPS查看进程:

        到目前为止,HADOOP集群和ZOOKEEPER集群配置完成。

--------2021年9月17日12:43:38修改--------        

        如果大家觉得不错的话可以给波支持,写这一波文章,主要是为了提升自己对HADOOP的理解,接下里我还会继续更新对HADOOP学习,冲!

以上是关于亲测有用!Centos7 + Zookeeper集群 + Hadoop集群配置的主要内容,如果未能解决你的问题,请参考以下文章

IDEA 激活码 亲测有用

wamp的安装--亲测有用

centos7下如何安装mysql 亲测

CentOS7离线安装Docker和卸载Docker步骤(亲测有效)

Centos7 查看 CPU 核数 和 型号 和 主频(亲测有效)

centos7磁盘扩容(亲测有效)