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

news2024/11/6 16:19:17

【图书介绍】《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完全分布式环境的搭建。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2234381.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

H7-TOOL的CAN/CANFD助手增加帧发送成功标识支持, 继续加强完善功能细节

2.27版本固件正式携带此功能&#xff0c;包括之前做的负载率检测和错误信息展示也将集成到这个版本固件中。 对于接收&#xff0c;我们可以直接看到效果&#xff0c;而发送不行&#xff0c;所以打算在发送的地方展示下发送成功标识。CAN发送不像串口&#xff0c;需要等待应答后…

ssm+jsp653基于Javaweb的网上花店系统的设计与实现

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…

操作系统如何执行,他究竟是个什么

硬件中断 所谓硬件中断&#xff0c;其实也是一个执行信号的过程&#xff0c;具体流程如下。 具体要执行什么方法&#xff0c;只需要拿着对应的信号访问中断向量表就就行比如 N就是像cpu发的中断信号。 时钟中断 但是这里面有一个叫做时钟源的东西&#xff0c;其实也是一个外…

音视频入门基础:FLV专题(24)——FFmpeg源码中,获取FLV文件视频信息的实现

一、引言 通过FFmpeg命令可以获取到FLV文件的视频压缩编码格式、色彩格式&#xff08;像素格式&#xff09;、分辨率、码率、帧率信息&#xff1a; 而由《音视频入门基础&#xff1a;FLV专题&#xff08;9&#xff09;——Script Tag简介》和《音视频入门基础&#xff1a;FLV专…

JMM内存模型(面试回答)

1.什么是JMM JMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下&#xff0c;内存的访问有一定的差异&#xff0c;所以会造成相同的代码运行在不同的系统上会出现各种问题。所以Java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异&…

【stablediffusion又出王炸】IC-Light,可以操控图像生成时的光照,光照难题终于被解决了!

IC-Light代表Impose Constant Light,是一个控制图像照明的项目。可以操控图像生成时的光照&#xff0c;对内容主体重新打光生成符合新背景环境光照的图片。这下商品图合成这种需要最大程度保持原有主体 ID 需求的最大的问题解决了。 Controlnet, Layerdiffusion, IC-light… …

创建线程时传递参数给线程

在C中&#xff0c;可以使用 std::thread 来创建和管理线程&#xff0c;同时可以通过几种方式将参数传递给线程函数。这些方法包括使用值传递、引用传递和指针传递。下面将对这些方法进行详细讲解并给出相应的代码示例。 1. 值传递参数 当你创建线程并希望传递参数时&#xff…

react使用Fullcalendar 实战用法

使用步骤请参考&#xff1a;react使用Fullcalendar 卡片式的日历&#xff1a; 需求图&#xff1a; 卡片式的日历&#xff0c;其实我是推荐 antd的&#xff0c;我两个都写了一下都能实现。 antd 的代码&#xff1a; antd的我直接用的官网示例&#xff1a;antd 日历示例 i…

使用 RabbitMQ 有什么好处?

大家好&#xff0c;我是锋哥。今天分享关于【使用 RabbitMQ 有什么好处&#xff1f;】面试题。希望对大家有帮助&#xff1b; 使用 RabbitMQ 有什么好处&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ 是一种流行的开源消息代理&#xff0c;广…

基于MATLAB的农业病虫害识别研究

matlab有处理语音信号的函数wavread&#xff0c;不过已经过时了&#xff0c;现在处理语音信号的函数名称是audioread选取4.wav进行处理&#xff08;只有4的通道数为1&#xff09; 利用hamming窗设计滤波器 Ham.m function [N,h,H,w] Ham(fp,fs,fc)wp 2*pi*fp/fc;ws 2*pi*…

极简实现酷炫动效:Flutter隐式动画指南第三篇自定义Flutter隐式动画

目录 前言 一、TweenAnimationBuilder 二、使用TweenAnimationBuilder实现的一些动画效果 1.调整透明度的动画 2.稍微复杂点的组合动画 3.数字跳动的动画效果 前言 上两节博客分别介绍了Flutter中的隐式动画的基础知识以及使用隐式动画实现的一些动画效果。当系统提供的隐…

怎么能监控电脑屏幕?四个真心好用的电脑屏幕监控小妙招,一分钟看完!

怎么能监控电脑屏幕&#xff1f;这或许是许多家长、企业管理者和IT安全人员心中的疑问。 有人说&#xff1a;用魔法水晶球&#xff01; 当然&#xff0c;这个方法些许梦幻&#xff0c;现实中我们还是要依靠科技手段来实现电脑屏幕的监控。 接下来&#xff0c;我将为大家介绍四…

中仕公考:25年浙江省公务员考试今日开始报名

2025年浙江省公务员考试于今日开始报名&#xff0c;准备参加考试的各位考生不要错过报名时间! 报名时间&#xff1a;2024年11月6日9时—11月11日17时。 资格初审时间&#xff1a;2024年11月6日9时—11月13日17时。 准考证下载时间&#xff1a;2024年12月3日9时—12月8日17时…

【IEEE出版】第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2024,12月06-08)

第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议&#xff08;ITCA 2024) 2024 6th International Conference on Information Technology and Computer Application 会议官网&#xff1a;itca2024.iaecst.org 会议时间&#xff1a;2024年12月06-08日 截稿时…

SpringMVC总结 我的学习笔记

SpringMVC总结 我的学习笔记 一、SpringMVC简介1.MVC2.SpringMVC概述3. SpringMVC中的核心组件4.SpringMVC核心架构流程 二、SpringMVC框架实例具体实现使用注解实现 四、数据处理及跳转1.结果跳转方式2.处理器方法的参数与返回值处理提交数据数据显示到前端 五、RestFul风格1.…

基于SpringBoot的免税商品优选购物商城的设计与实现

一、项目背景 从古至今&#xff0c;通过书本获取知识信息的方式完全被互联网络信息化&#xff0c;但是免税商品优选购物商城&#xff0c;对于购物商城工作来说&#xff0c;仍然是一项非常重要的工作。尤其是免税商品优选购物商城&#xff0c;传统人工记录模式已不符合当前社会…

【Python】计算机视觉应用:OpenCV库图像处理入门

计算机视觉应用&#xff1a;OpenCV库图像处理入门 在当今的数字化时代&#xff0c;计算机视觉&#xff08;Computer Vision&#xff09;已经渗透到各行各业&#xff0c;比如自动驾驶、智能监控、医疗影像分析等。而 Python 的 OpenCV 库&#xff08;Open Source Computer Visi…

Spring Boot开发入门教程

简介 Spring Boot是一个开源的Java基础框架&#xff0c;用于创建独立、生产级的基于Spring框架的应用程序。通过Spring Boot&#xff0c;你可以轻松地创建独立的、生产级的Spring应用程序。 环境准备 Java开发环境&#xff1a;确保你的机器上安装了Java 8或更高版本。Maven…

vue3入门知识(一)

vue3简介 性能的提升 打包大小减少41%初次渲染快55%&#xff0c;更新渲染快133%内存减少54% 源码的升级 使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking 新的特性 1. Composition API&#xff08;组合API&#xff09; setupref与reactivecomput…

【产品经理】工业互联网企业上市之路

树根互联2022年6月2日提交招股书之后&#xff0c;因财务资料超过六个月有效期加三个月延长期&#xff0c;2022年9月30日上市审核中止&#xff1b;2022年12月26日树根互联更新了2022年半年度财务资料&#xff0c;又九个月过去了&#xff0c;其上市进程将面临再一次中止。 处于上…