Hadoop完全分布式环境搭建步骤

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客

大数据与数据分析_夏天又到了的博客-CSDN博客

本文介绍Hadoop完全分布式环境搭建方法,这个Hadoop环境用于安装配置Spark。假设读者已经安装好Visual Box 7.0.6虚拟环境与一个CentOS 7虚拟机(如果熟悉这两个步骤不,可以反馈给博主,博主将另外上个博文讲解)。 下面直接从Linux的统一配置开始讲解。

Linux的统一设置

后面配置Hadoop环境时将使用一些Linux的统一设置,在此一并列出。由于本次登录是用root登录的(见图2-30),因此可以直接操作某些命令,而不用添加sudo命令。

1. 配置主机名称

笔者习惯将"server+IP最后一部分数字"作为主机名称,所以取主机名为server201,因为本主机设置的IP地址是192.168.56.201。

# hostnamectl set-hostname server201

2. 修改hosts文件

在hosts文件的最后,添加以下配置(这可通过vim /etc/hosts命令进行修改):

192.168.56.201     server201

3. 关闭且禁用防火墙

# systemctl stop firewalld

# systemctl disable firewalld

4. 禁用SElinux,需要重新启动

#vim /etc/selinux/config

SELINUX=disabled

5. 设置时间同步(可选)

#vim /etc/chrony.conf

删除所有的server配置,只添加:

server ntp1.aliyun.com   iburst

重新启动chronyd:

#systemctl restart chronyd

查看状态:

#chronyc sources -v

^* 120.25.115.20

如果结果显示"*",则表示时间同步成功。

6. 在/usr/java目录下安装JDK1.8

usr目录的意思是unix system resource目录,可以将JDK1.8的Linux x64版本安装到此目录下。

首先去Oracle网站下载JDK1.8的Linux压缩包版本。

然后将压缩包上传到Linux并解压(作者使用jdk-8u361版本做演示):

# mkdir /usr/java

# tar -zxvf jdk-8u361-linux-x64.tar.gz -C /usr/java/

7. 配置JAVA_HOME环境变量

# vim /etc/profile

在profile文件最后添加以下配置:

export JAVA_HOME=/usr/java/jdk1.8.0_361

export PATH=.:$PATH:$JAVA_HOME/bin

让环境变量生效:

# source /etc/profile

检查Java版本:

[root@localhost bin]# java -version

java version "1.8.0_361"

Java(TM) SE Runtime Environment (build 1.8.0_361-b09)

Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)

到此,基本的Linux运行环境就已经配置完成了。
在VirtualBox虚拟机中,可以通过复制的方式,为本小节已经做了统一设置的CentOS镜像文件创建副本,用于备份或者搭建集群。

8. 为hadoop账户创建统一的工作空间/app

接下来创建一个工作目录/app,方便我们以hadoop账户安装、配置与运行Spark相关程序。

在磁盘根目录(/)下,创建一个app目录,并授权给hadoop用户。我们会将Spark以及其他相关的软件安装到此目录下。

以root账户切换到根目录下:

[hadoop@server201 ~]# cd /

添加sudo前缀,使用mkdir创建/app目录:

[hadoop@server201 /]# sudo mkdir /app

[sudo] hadoop 的密码:

将此目录的所有权授予hadoop用户和hadoop组:

[hadoop@server201 /]# sudo chown hadoop:hadoop /app

su hadoop账户,切换进入/app目录:

[hadoop@server201 /]$ cd /app/

使用ll -d命令查看本目录的详细信息:

[hadoop@server201 app]$ ll -d

drwxr-xr-x 2 hadoop hadoop 6 3月   9 21:35 .

可见此目录已经属于hadoop用户。

搭建Hadoop完全分布式环境

由于Spark在将Yarn作为集群管理器时会用到Hadoop,因此在安装Spark之前,先要把Hadoop完全分布式(集群)环境搭建起来。在Hadoop的集群中,有一个NameNode,一个ResourceManager;在高可靠的集群环境中,可以拥有两个NameNode和两个ResourceManager;在Hadoop3以后,同一个NameService可以拥有3个NameNode。由于NameNode和ResourceManager是两个主要的服务,因此建议将它们部署到不同的服务器上。

下面以3台服务器为例,来快速搭建Hadoop的完全分布式环境,这对深入了解后面要讲解的Spark集群运行的基本原理非常有用。
注意:可以利用虚拟机软件VirtualBox复制出来的CentOS镜像文件,快速搭建3个CentOS虚拟主机来做集群。

完整的集群主机配置如表2-1所示。

从表2-1中可以看出,server101运行的进程比较多,且NameNode运行在上面,所以这台主机需要更多的内存。

由于需要使用3台Linux服务器搭建集群环境,因此推荐使用VirtualBox把2.2节配置好的虚拟机CentOS7-201复制出来,稍微做些修改,即可快速搭建Hadoop完全分布式环境。

(1)把CentOS7-201复制为CentOS7-101,按下面的步骤(1)~步骤(3) 核对和修改相关配置,已经配置好的可以跳过去。

(2)把CentOS7-101复制为CentOS7-102、CentOS7-103,由于此时CentOS7-101已基本配置好了,复制出来的CentOS7-102、CentOS7-103只需修改主机名称和IP地址即可。

(3)3台虚拟机配置好了以后,再按下面的步骤(4) 和步骤(5) 运行这个完全分布式集群。

Hadoop完全分布式环境如图2-36所示。

图2-35 Hadoop完全分布式环境

步骤(1) 完成准备工作。

(1)所有主机安装JDK1.8+。建议将JDK安装到不同主机的相同目录下,这样可以减少

修改配置文件的次数。

(2)在主节点(即执行start-dfs.sh和start-yarn.sh的主机)上向所有其他主机做SSH免密码登录。

(3)修改所有主机的名称和IP地址。

(4)配置所有主机的hosts文件,添加主机名和IP的映射:

192.168.56.101 server101

192.168.56.102 server102

192.168.56.103 server103

(5)使用以下命令关闭所有主机上的防火墙:

systemctl stop firewalld

systemctl disable firewalld

步骤(2) 在server101上安装Hadoop。

可以将Hadoop 安装到任意目录下,如在根目录下,创建/app然后授予hadoop用户即可。

将hadoop-3.2.3.tar.gz解压到/app目录下,并配置/app目录属于hadoop用户:

$ sudo tar -zxvf hadoop-3.2.3.tag.gz -C /app/

将/app目录及子目录授权给hadoop用户和hadoop组:

$suto chown hadoop:hadoop -R /app

接下来的配置文件都在/app/hadoop-3.2.3/etc/hadoop目录下。配置hadoop-env.sh文件:

export JAVA_HOME=/usr/java/jdk1.8.0_361

配置core-site.xml文件:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://server101:8020</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/app/datas/hadoop</value>
    </property>
</configuration>

配置hdfs-site.xml文件:

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/app/hadoop-3.2.3/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/app/hadoop-3.2.3/dfs/data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
</configuration>

配置mapred-site.xml文件:

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

配置yarn-site.xml文件:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>server101</value>
    </property>
    <property>
        <name>yarn.application.classpath</name>
        <value>请自行执行hadoop classpath命令并将结果填入</value>
    </property>
</configuration>

配置workers文件。workers文件用于配置执行DataNode和NodeManager的节点:

步骤(3) 使用scp将Hadoop分发到其他主机。

由于scp会在网络上传递文件,而hadoop/share/doc目录下都是文档,没有必要进行复制,因此可以删除这个目录。

删除doc目录:

$ rm  -rf /app/hadoop-3.2.3/share/doc

然后复制server101的文件到其他两台主机的相同目录下:

$scp -r /app/hadoop-3.2.3   server102:/app/

$scp -r /app/hadoop-3.2.3   server103:/app/

步骤(4) 在server101上格式化NameNode。

首先需要在server101上配置Hadoop的环境变量。打开/etc/profile文件:

$ sudo vim /etc/profile

在文件最后追加以下内容:

export HADOOP_HOME=/app/hadoop-3.2.3

export PATH=$PATH:$HADOOP_HOME/bin

在server101上执行namenode初始化命令:

步骤(5) 启动HDFS和YARN。

在server101上执行启动工作时,由于配置了集群,此启动过程会以SSH方式登录其他两台主机,并分别启动DataNode和NodeManager。

$ /app/hadoop-3.2.3/sbin/start-dfs.sh

$ /app/hadoop-3.2.3/sbin/start-yarn.sh

启动完成后,通过宿主机的浏览器查看9870端口,页面会显示集群情况。即访问http://192.168.56.101:9870,会发现同时存在3个DataNode节点,如图2-36所示。

图2-36 存在3个DataNode节点

访问http://192.168.56.101:8088,会发现同时存在集群的3个活动节点,如图2-37所示。

图2-37 存在集群的3个活动节点

步骤(6) 执行MapReduce测试集群。

建议执行MapReduce测试一下集群,比如执行WordCount示例,如果可以顺利执行完成,则说明整个集群的配置都是正确的。首先创建一个文本文件a.txt,并输入几行英文句子:

[hadoop@server101 ~]$ vim a.txt
Hello This is
a Very Sample MapReduce
Example of Word Count
Hope You Run This Program Success!

然后分别执行以下命令:

[hadoop@server101 ~]$ hdfs dfs -mkdir -p /home/hadoop
[hadoop@server101 ~]$ hdfs dfs -mkdir /home/hadoop
[hadoop@server101 ~]$ hdfs dfs -put ./a.txt /home/hadoop
[hadoop@server101 ~]$ yarn jar /app/hadoop-3.2.3/share/hadoop/mapreduce/ hadoop-mapreduce-examples-3.2.3.jar wordcount ~/a.txt /out002

至此,就完成了Hadoop完全分布式环境的搭建。

相关推荐
Java 第一深情13 分钟前
零基础入门Flink,掌握基本使用方法
大数据·flink·实时计算
MXsoft61820 分钟前
华为服务器(iBMC)硬件监控指标解读
大数据·运维·数据库
PersistJiao1 小时前
Spark 分布式计算中网络传输和序列化的关系(二)
大数据·网络·spark·序列化·分布式计算
九河云1 小时前
如何对AWS进行节省
大数据·云计算·aws
FreeIPCC2 小时前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源
梦幻通灵2 小时前
ES分词环境实战
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客2 小时前
Elasticsearch 中的热点以及如何使用 AutoOps 解决它们
大数据·运维·elasticsearch·搜索引擎·全文检索
天冬忘忧3 小时前
Kafka 工作流程解析:从 Broker 工作原理、节点的服役、退役、副本的生成到数据存储与读写优化
大数据·分布式·kafka
sevevty-seven4 小时前
幻读是什么?用什么隔离级别可以防止幻读
大数据·sql
Yz98765 小时前
hive复杂数据类型Array & Map & Struct & 炸裂函数explode
大数据·数据库·数据仓库·hive·hadoop·数据库开发·big data