在CentOS7上实现Hadoop2.7.3完全分布式的安装部署(小白版)

作为一个小小白,硬着头皮在安装部署这个分布式计算平台的过程中,虽然看到了很多博客,但是很多小坑也是令人十分头痛。这篇博客,从小小白的角度出发,来讲解如何在CentOS7中,来部署安装三个节点(一主两从)的完全分布的Hadoop2.7.3。


第一步:安装虚拟机以及Linux系统

Hadoop官网上推荐使用Linux系统作为开发测试和生产环境的平台。

因此,首先安装VMware软件并进行破解,直接搜索下载破解即可。

其次,下载Linux镜像系统,一般有Ubuntu和CentOS,笔者使用的是CentOS7。博客[1]提供了对各类版本的说明,直接在官网下载对应版本即可,笔者使用的是CenOS7-x86_64-DVD-1804.iso。在安装过程中,会有很多选项,博客[2]给出了一个很好的参考。笔者使用的是GOME。在Master主机上完成以上操作。并进行克隆操作,保存到移动硬盘或U盘,以对Slave节点上进行配置。

接下来,在Slave节点上安装VMware,然后将克隆好的直接导入。此时,要注意的是,由于克隆操作MAC地址不变,所以要进行重新生成。


第二步:集群网络配置

为了使得集群既能互相之间进行通信,又能够进行外网通信,在编辑->虚拟机网络编辑器中,网络适配器均采用桥接模式。桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。

本文中的集群网络环境配置如下(主要参考主机IP地址,在同一子段内,即192.168.xxx必须相同):

master内网IP:192.168.137.1

slave1内网IP:192.168.137.2

slave2内网IP:192.168.137.3


然后在终端输入

su root

输入密码之后,输入

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

其中,ens33是虚拟机网络名称,通过查看网络的中的identity中MAC地址即可得到。

并按照以下修改


若出现问题,则可参考博客[3]进行修改。然后在终端调用ifconfig命令,进行查看。

设置完后,在终端Terminal通过ping对应的IP地址进行网络测试,若有返回值则网络设置成功。

第三步:创建Hadoop用户组

这一步是为了新建一个用户,专门用于Hadoop平台的操作,以免对整个虚拟机造成影响。是可选择的。在三个节点下,都创建同样的用户,是为了下一步的免秘钥登陆等操作做铺垫。

在root权限下进行以下操作。

$su root

#useradd -m hadoop

#passwd hadoop

为hadoop添加sudo权限

#visudo

在该行root ALL=(ALL) ALL下添加hadoop ALL=(ALL) ALL保存后退出,并切换回hadoop用户

第四步:配置Host文件,防火墙等

root权限下,进行以下操作。

1.修改计算机名,方便识别

centos7默认的hostname是localhost,为了方便将每个节点hostname分别修改为master、slave0、slave1

vi /etc/hostname

在文件中删除原有的,并输入对应主机的名称master、slave0、slave1即可。

2.能使用计算机名进行通信,而不再通过IP地址

# vi /etc/hosts

在文件下添加以下代码:

192.169.137.1 master

192.168.137.2 slave0

192.168.137.3 slave1

保存即可

3.关闭防火墙

由于大数据平台中各节点之间通信频繁,且是内部网络,因此一般要关闭防火墙,以避免数据包被过滤和限制。

root权限下,

查看防火墙的状态;

# systemctl status firewalld.service

关闭防火墙

# systemctl stop firewalld.service

终止防火墙服务,以防重启后会再次开启

# systemctl disable firewalld.service

最后,查看防火墙状态,显示以下情况即可。


第五步:配置SSH免密钥登陆

集群中,各节点之间通信时,需要确认用户身份,规模较大时,会大大降低工作效率。因此,要进行Master和Slave进行双向的免密钥登陆配置。下面,以master登陆slave0为例。

第四步的操作都是在root权限下,本步是在hadoop用户下,要进行切换。

1.master节点上

# su hadoop

$ ssh-keygen -t rsa ,然后一路回车。之后,对生成的密钥文件进行查看。

$ cd .ssh

$ ls -l

之后,将其中的公钥文件追加写入授权文件,并给授权文件权限:

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

$ chmod 600  ~/.ssh/authorized_keys

接下来,查看文件列表情况,如下所示即可。


将master上的authorized_keys传到slave0,完成后,master节点的工作将完成。

$ scp ~/.ssh/authorized_keys hadoop@slave0:~/  

2.slave0节点

对其进行ssh配置,同样需要在hadoop用户下。

$ ssh-keygen -t rsa 这一步是在master节点向slave9发送文件之前完成的

然后将发送文件拷贝到slave0节点的对应文件夹中进行替换

$ mv authorized_keys ~/.ssh/

最后,修改authorized_keys权限

$ chmod 600 authorized_keys

以上,完成了对slave0节点上的SSH配置。

3.验证

通过master对slave0免密钥登陆验证,在master节点上,切换到hadoop用户

$ ssh slave0

第一次使用时需要输入密码,退出 $ exit后,再次登陆验证即可。

第六步:安装JDK

hadoop是基于Java的,所以要安装配置Java环境(三个节点均需要操作,以下以master节点为例)。

1.下载安装

由于hadoop本身带有OpenJDK,所以要先卸载。卸载过程可参考博客[5]

卸载之后,在官网上进行jdk-7u79-linux-x64.tar.gz的下载,可参考博客[6]进行。

之后,在hadoop用户下,在home目录下新建一个resource文件夹,将下载到的jdk安装包放到里面。

打开终端,切换到root权限,在usr目录下创建java文件夹,并将jdk移动到该文件夹下

# mkdir /usr/java

# mv /home/hadoop/resource/jdk-7u79-linux-x64.tar.gz /usr/java

# cd /usr/java

# tar -zxvf jdk-7u79-linux-x64.tar.gz

回车后进行解压缩。

2.环境配置

安装好后需要对java环境进行配置。在root权限下进行以下操作:

# vi /home/hadoop/.bash_profile

在打开文件中,在文件末尾加入以下命令:

export JAVA_HOME=/usr/java/jdk1.7.0_79/

export PATH=$JAVA_HOME/bin:$$PATH

保存退出后,执行

# source .bash_profile

为验证是否配置成功,输入

# java -version

显示以下结果则成功。


第七步:安装hadoop

1.Hadoop下载安装

下载hadoop2.7.3,可参考博客[7]

下载好后,在hadoop用户中,在home目录下,新建文件夹hadoop,并将安装包解压到该文件夹下。出现以下则安装成功

$ cd hadoop

$ ls -l


2.配置环境变量

Hadoop的配置文件是hadoop-env.sh,位于~/hadoop/etc/hadoop/,可以通过文件夹一层一层地找,然后进行准确修改

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

在文件中,配置JDK安装路径:export JAVA_HOME=/usr/java/jdk1.7.0_79/

保存退出后,对yarn进行环境配置。

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

在文件中,配置JDK安装路径:export JAVA_HOME=/usr/java/jdk1.7.0_79/

3.配置核心组件

hadoop在工作时,会产生临时数据等,因此要有一个地方能够存储这些文件。

首先,在hadoop文件夹下新建两个文件temp和hdfs,并在hdfs文件夹下新建name、tmp和data

$ mkdir temp

$ mkdir hdfs

$ cd hdfs

$ mkdir name

$ mkdir data

$ mkdir tmp

然后配置核心文件core-site.xml文件,在/usr/hadoop/etc/hadoop”目录下。这里配置的是HDFS master(即namenode)的地址和端口号。

$ vi /home/hadoop/hadoop/etc/hadoop/core-site.xml

并进行如下配置:

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>hdfs://master:9000</value>
  </property>
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/hadoop/tmp</value>
  </property>

</configuration>

4.配置文件系统

$ vi /home/hadoop/hadoop/etc/hadoop/hdfs-site.xml

打开文件后,进行如下配置

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/hadoop/hadoop/hdfs/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/hadoop/hadoop/hdfs/data</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>master:9001</value>
  </property>

</configuration>

5.配置yarn-site.xml核心文件

$ vi /home/hadoop/hadoop/etc/hadoop/yarn-site.xml

打开文件后,进行如下配置

<configuration>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
  </property>
  <property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
  </property>
</configuration>

6.配置mapred-site.xml核心文件

在配置这个文件时,系统中不包含该文件,而是包含一个mapred-site.xml.template文件。将该文件复制并改名

$ cp /home/hadoop/hadoop/etc/hadoop/mapred-site.xml.template ~/home/hadoop/hadoop/etc/hadoop/mapred-site.xml

然后对文件进行编辑

$ vi /home/hadoop/hadoop/etc/hadoop/mapred-site.xml

打开文件后,进行如下配置

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>

</configuration>

7.配置slaves文件

该文件给出了Hadoop集群中的slave列表,不在列表内的节点便不会被视为计算节点。

$ vi /home/hadoop/hadoop/etc/hadoop/slaves

然后输入

slave0

slave1

8.对slave节点进行配置

对slave节点,通过复制master节点的即可。在master节点的hadoop用户下进行:

$ scp -r /home/hadoop/hadoop hadoop@slave0:~/

9.配置Hadoop集群环境变量

以下操作,对所有节点均要实现。在hadoop用户中,对环境变量进行配置

$ vi /home/hadoop.bash_profile

打开文件后,在文件尾添加以下内容:

#HADOOP

export HADOOP_HOME=/home/hadoop/hadoop

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

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

保存退出后,执行以下命令使配置生效。

$ source /home/hadoop/.bash_profile

第八步:启动Hadoop集群

1.格式化文件系统

hadoop用户下,执行以下命令:

$ hdfs namenode -format

2.启动hadoop

hadoop用户下,进入到hadoop安装目录,并执行以下命令

$ cd ~/hadoop

$ sbin/start-all.sh

输入yes之后,则可以启动。若提示,unable to load the native library

这是因为这是32位的native library,可以直接下载一个64位的进行替换,或者在编译的时候编译成64位。此外还需要修改环境变量。最后hadoop环境变量将如下所示。在配置环境变量时,务必注意=之后不要有空格。


然后输入一下命令退出:

$ sbin/stop-all.sh

需要说明的是,Hadoop系统建议使用start-dfs.sh以及start-yarn.sh命令来开启hdfs和yarn。

3.验证

在master节点上输入jps,查看是否成功。


在slave节点上输入jps,查看是否成功。

另外,可以在浏览器中,

输入http://master:50070/来查看系统状态。

输入http://master:18088/来查看yarn状态。

第九步:程序测试

hadoop安装包中自带很多程序示例,其中包括单词计数,以空格为分隔符。

为进行测试,首先创建测试文件test。以下测试均在hadoop集群启动后进行。在输入命令时,务必注意空格的使用

$ echo "i am a boy . i love China . i love BMW-DSC" >> test

在hdfs文件系统中,创建input文件夹

$ hadoop fs -mkdir /input

然后将test文件放入hafs系统中

$ hadoop fs -put test /input

之后,调用wordcount函数进行单词计数

$ hadoop jar ~/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /input /output

至此,完成计数,且将结果保存在了output文件夹中。

然后查看output文件夹中都有什么结果。

$ hadoop fs -ls /output


然后,查看计数结果

$ hadoop fs -cat /output/part-r-00000


需要说明的是,这些文件夹以及都是在hdfs上,因此无法在本地磁盘中找到。且在程序运行前,结果文件夹output必须是不存在的。若文件需要更改,然后重新运行程序,则需要将input和output都删除,重新生成。或者新建两个对应的文件夹。

删除输入文件夹:$ hadoop fs -rm -r /input

删除输出文件夹:$ hadoop fs -rm -r /output

----------------------------------------------------------------------------------------------------------------------------------

本篇博客参考了诸多博客以及书籍,其中需要特别感谢的是:

https://www.cnblogs.com/pcxie/p/7747317.html

https://blog.csdn.net/happy_wu/article/details/70240014

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: 中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-javadoc-API文档-中文(简体).zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·本文档为双语同时展示,一行原文、一行译文,可逐行对照,避免了原文/译文来回切换的麻烦; ·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值