Hadoop搭建集群

news2024/10/1 5:35:34

Hadoop搭建集群

  • 前言
  • 一、环境配置
    • 1.配置JDK
    • 2.配置Hadoop环境
  • 二、Hadoop本地运行
  • 三、Hadoop集群部署
    • 1.准备三台服务器
    • 2.节点规划
    • 3.环境配置
    • 4.无秘登录
    • 5.配置核心文件
      • 1)修改core-site.xml
      • 2)修改hdfs-site.xml
      • 3)修改yarn-site.xml
      • 4)修改mapred-site.xml文件
    • 6.集群启动
      • 1)初始化
      • 2)启动集群(HDFS)
      • 3)访问hdfs的web页面
      • 4)启动ResourceManager(yarn)
    • 7.集群基本测试
      • 1)上传文件到集群
      • 2)查看文件存放位置
      • 3)下载hdfs中存储的文件
      • 4)执行wordcount程序
  • Hadoop集群部署总结

前言

Hadoop集群部署是为了实现分布式存储和计算,提高大数据处理的效率和性能。1.确定集群规模和硬件资源,选择合适的操作系统和Hadoop版本,进行网络配置,确保集群内各节点之间可以互相通信。2.设置各节点的环境变量,安装和配置Java环境以及其他必要的软件和工具。3.配置Hadoop的核心组件(如HDFS和YARN)和各节点角色(如NameNode、DataNode、ResourceManager、NodeManager等),完成集群的部署。

本篇博客基本完全按照尚硅谷的b站课程搭建的hadoop集群,中间出现的部分问题也都解决,如果觉得观看视频太慢可以看看如下内容,先熟悉搭建流程对后续学习也会更有帮助,若遇到其他问题欢迎留言讨论。

一、环境配置

把hadoop和jdk压缩包上传到/opt/software
在这里插入图片描述
将这两个文件解压到/opt/module

tar -zxvf jdk-8u333-linux-x64.tar.gz -C /opt/module/
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/

在这里插入图片描述

1.配置JDK

在/etc/profile.d下新建my_env.sh文件,用来配置环境

vim /etc/profile.d/my_env.sh

在里面配置JAVA_HOME

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_333
export PATH=$PATH:$JAVA_HOME/bin

在这里插入图片描述

保存好后刷新一下环境的修改,便可以查看到JDK环境已经配置好了

source /etc/profile
java -version

在这里插入图片描述

2.配置Hadoop环境

配置hadoop环境和java的一样
还是编辑/etc/profile.d/my_env.sh

vim /etc/profile.d/my_env.sh

在里面加入hadoop环境,如下

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

在这里插入图片描述
保存好后source一下

source /etc/profile

输入hadoop回车,便可查看相关信息
在这里插入图片描述

二、Hadoop本地运行

进入到hadoop-3.1.3目录下

cd /opt/module/hadoop-3.1.3/

创建一个文件夹wcinput,并进入

mkdir wcinput

在wcinput下新建word.txt文件

vim wcinput/word.txt

在里面随便写几个单词,后面用hadoop可以统计各单词数

hello world
hello world
hello hi
hi world
hi world

保存好后就可以开始执行hadoop程序了

# 启动指令 启动java的jar包程序 分词统计 输入文件夹 输出文件夹
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput

解释:运行Hadoop中的WordCount示例程序的命令。它使用hadoop-mapreduce-examples-3.1.3.jar作为程序的jar包,并且指定输入文件夹为wcinput/,输出文件夹为wcoutput。WordCount是一个常用的示例程序,它统计输入文件中每个单词出现的次数,并将结果输出到指定的输出文件夹中

在这里插入图片描述
运行结束后会发现目录下多出一个文件
在这里插入图片描述
wcoutput中有两个文件,其中part-r-00000中便是统计次数结果

ll wcoutput/
cat wcoutput/part-r-00000

在这里插入图片描述

三、Hadoop集群部署

1.准备三台服务器

主机名IP地址节点类型
hadoop101192.168.10.101master
hadoop102192.168.10.102master
hadoop103192.168.10.103master

2.节点规划

hadoop101hadoop102hadoop103
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

3.环境配置

前面单机部署已经在hadoop101配置了Java和Hadoop环境,接下来将其对应文件拷贝到hadoop102、hadoop103即可
先进入/opt/module/

cd /opt/module/

再用scp将hadoop101中的jdk、hadoop拷贝到hadoop102、hadoop103

scp -r jdk1.8.0_333/ root@hadoop102:/opt/module/
scp -r jdk1.8.0_333/ root@hadoop103:/opt/module/
scp -r hadoop-3.1.3/ root@hadoop102:/opt/module/
scp -r hadoop-3.1.3/ root@hadoop103:/opt/module/

第一次访问会问你是否连接,输入yes回车,再输入密码即可
在这里插入图片描述

rsync拷贝方式

rsync -av hadoop-3.1.3/ root@hadoop102:/opt/module/hadoop-3.1.3/

第一次拷贝用scp,后续用rsync好一点,为了方便拷贝,可以写一个xsync分发脚本
cd 到root目录下,创建一个bin

cd ~
mkdir bin

再在bin下创建分发文件xsync

vim bin/xsync

在里面写入如下内容,这里已经把我的三个集群hostname加进去了,后续就不用再指定了

#!/bin/bash

# 1.判断参数个数
if [ $# -lt 1 ]
then
        echo Not Enough Arguement!
        exit;
fi

# 2.遍历集群所有机器并
for host in hadoop101 hadoop102 hadoop103
do
        echo ================  $host  ================
        # 3.遍历所有目录,挨个发送
        for file in $@
        do
                # 4.判断文件是否存在
                if [ -e $file ]
                        then
                                # 5.获取父目录
                                pdir=$(cd -P $(dirname $file); pwd)
                                # 6.获取当前文件的名称
                                fname=$(basename $file)
                                ssh $host "mkdir -p $pdir"
                                rsync -av $pdir/$fname $host:$pdir
                        else
                                echo $file does not exists!
                fi
        done
done

保持好后修改权限

chmod 777 bin/xsync

输入xsync bin/同步bin目录和环境配置文件my

xsync bin/

注意:因为我这已经配置了ssh免密登录,所有不需要输入密码
在这里插入图片描述
由于上面每次需要输入密码,所有这里可以配置ssh免密登录

4.无秘登录

因为我的hadoop101已经配好了,所以下面用100来代替展示,大家继续用hadoop101便可
先进入当前用户下的.ssh目录,然后创建密钥

cd ~	# 进入当前用户目录
cd .ssh	# 进入.ssh目录
ssh-keygen -t rsa

输入ssh-keygen -t rsa后连按三次回车,如下
在这里插入图片描述
输入ls查看会发现有多出两个文件
在这里插入图片描述
把公钥传给其他服务器,第一次需要输入密码,后续就不需要了

ssh-copy-id hadoop101	# 最好对自己也设置一下
ssh-copy-id hadoop102
ssh-copy-id hadoop103

在这里插入图片描述
上面是hadoop100对hadoop101、hadoop102、hadoop103都进行了免密登录,如果需要hadoop102对其他进行免密登录,需要在hadoop102下重复上面操作即可。

进入hadoop101,查看授权免密登录账户

cd /root/.ssh	
ll	# 查看文件
cat authorized_keys	# 查看认证信息

在这里插入图片描述
可以看到hadoop101已经对hadoop100、hadoop101、hadoop102、hadoop103都授权了免密登录。

5.配置核心文件

依照第二点节点规划对这三台服务器进行配置

hadoop101hadoop102hadoop103
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

接下来主要是配置四个核心文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
进入/opt/module/hadoop-3.1.3/etc/hadoop/,依次修改这四个文件

cd /opt/module/hadoop-3.1.3/etc/hadoop/

在这里插入图片描述

1)修改core-site.xml

vim core-site.xml

core-site.xml文件内容如下

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->
<configuration>
       <!--指定namenode的地址-->
   <property>
           <name>fs.defaultFS</name>
           <value>hdfs://hadoop101:8020</value>
   </property>
   <!--用来指定使用hadoop时产生文件的存放目录-->
   <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/module/hadoop-3.1.3/data</value>
   </property>
   <!--配置HDFS网页登录使用的静态用户为atguigu-->
   <property>
                <name>hadoop.http.staticuser.user</name>
                <value>atguigu</value>
   </property>
</configuration>

2)修改hdfs-site.xml

vim hdfs-site.xml

hdfs-site.xml内容如下

<configuration>
    <!-- nn web 端访问地址-->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>hadoop101:9870</value>
	</property>
	
	<!-- 2nn web 端访问地址-->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>hadoop103:9868</value>
	</property>

</configuration>

3)修改yarn-site.xml

vim yarn-site.xml

yarn-site.xml内容如下

<configuration>
	<!--nomenodeManager获取数据的方式是shuffle-->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
       <!--指定Yarn的老大(ResourceManager)的地址-->     
    <property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop102</value>
    </property> 
	
    <property>
    	<name>yarn.nodemanager.env-whitelist</name>
    	<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	</property>
</configuration>

4)修改mapred-site.xml文件

vim mapred-site.xml

mapred-site.xml文件内容如下

<configuration>
	<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->
	<property>
		  <name>mapreduce.framework.name</name>
		  <value>yarn</value>
   </property>
</configuration>

配置worker

vim workers

将里面的内容修改如下

hadoop101
hadoop102
hadoop103

接下来运行xsync命令将/opt/module/hadoop-3.1.3/etc/hadoop下修改过的文件复制到其他服务器

xsync ../hadoop/

在这里插入图片描述
到这集群的配置就结束了

6.集群启动

查看hadoop的相关启动命令

ll /opt/module/hadoop-3.1.3/sbin/

在这里插入图片描述

1)初始化

如果集群是第一次启动,需要先初始化

cd /opt/module/hadoop-3.1.3/
hdfs namenode -format

在这里插入图片描述
初始化完成后会出现data文件夹,可以用tree查看一下文件夹结构

tree data/

在这里插入图片描述

2)启动集群(HDFS)

虽然说我也是跟着教程一步一步做的,但是这里还是有点问题

sbin/start-dfs.sh	# 启动hdfs

在这里插入图片描述
可以看到,我输入启动命令后会出现如上报错,应该是配置环境的原因

解决方法
vim /etc/profile.d/my_env.sh

添加如下信息
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
在这里插入图片描述
保存好后执行source /etc/profile 重新夹在环境配置

再次启动便可以成功了

sbin/start-dfs.sh

在这里插入图片描述
输入jps回车可以看到启动的节点(和前面的节点规划一样)

jps

在这里插入图片描述

3)访问hdfs的web页面

启动hdfs后就可以访问hdfs的web页面了,在浏览器中输入访问链接:http://hadoop101:9870/
在这里插入图片描述

4)启动ResourceManager(yarn)

因为ResourceManager在hadoop102上,所以这里需要到hadoop102上去启动
在这里插入图片描述

这里还是报环境变量错误,所以需要应该把hadoop101上修改的my_env.sh拷贝到hadoop102和hadoop103上,最后记得在hadoop102和hadoop103上source一下

xsync /etc/profile.d/my_env.sh

在这里插入图片描述

source /etc/profile.d/my_env.sh	# 在hadoop102、hadoop103上执行

再次输入启动yarn命令
在这里插入图片描述
如果有这个警告说明前面设置免密登录时没有对自己进行设置,最好三台主机相互之间都设置一下

cd ~/.ssh
ssh-copy-id hadoop102

关闭yarn重新启动

/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh
/opt/module/hadoop-3.1.3/sbin/start-yarn.sh

在这里插入图片描述
在这里插入图片描述
接下来可以访问yarn的web端,在浏览器中输入访问链接:http://hadoop102:8088/
在这里插入图片描述

7.集群基本测试

回到hadoop101主机,cd到hadoop-3.1.3下

cd /opt/module/hadoop-3.1.3

1)上传文件到集群

创建input目录

hadoop fs -mkdir /input

在这里插入图片描述

上传文件到input目录下

hadoop fs -put wcinput/word.txt /input

在这里插入图片描述
在这里插入图片描述

2)查看文件存放位置

tree data/

在这里插入图片描述
查看这个文件中的内容,会发现和word.txt中内容一样

cat data/dfs/data/current/BP-760216983-192.168.10.101-1722402767471/current/finalized/subdir0/subdir0/blk_1073741825

在这里插入图片描述

3)下载hdfs中存储的文件

cd ..
hadoop fs -get /input/word.txt
cat word.txt

在这里插入图片描述

4)执行wordcount程序

cd hadoop-3.1.3/
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在hdfs中保存有执行结果
在这里插入图片描述
mapreduce下还有其他jar包程序

ll share/hadoop/mapreduce/

在这里插入图片描述
到这里就差不多结束了,如果想要学习更过内容,可以查看hadoop官方文档

Hadoop集群部署总结

Hadoop集群部署需要准备一台主节点和多台从节点,首先安装hadoop软件包并进行配置,主节点上配置hdfs文件系统和yarn资源管理器,从节点上配置yarn节点管理器和hdfs数据节点。配置完成后,启动hadoop集群,可以通过web界面查看集群状态。部署过程中需要注意各个节点间的通信和权限设置,确保集群能够正常工作。最后,可以测试集群的功能,例如通过hadoop命令行工具执行任务,验证集群的性能和稳定性。完成部署后,可以根据需要进一步调优和扩展集群。

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

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

相关文章

【linux】【操作系统】内核之sched.c源码阅读

sched.c提供的代码片段包含了与操作系统内核中的进程调度和管理相关的多个函数。schedule函数首先对所有任务&#xff08;进程&#xff09;进行检测&#xff0c;唤醒任何一个已经得到信号的任务。具体方法是针对任务数组中的每个任务&#xff0c;检查其报警定时值alam。如果任务…

Midjourney咒语之手机壁纸国画艺术

手机壁纸 Mountains, surfaces, mysterious landscapes --ar 9:16 Abstract shapes of billowing flowing colorful gauze fabric, --ar 9:16 国画艺术 Peony is

如何快速看完一个网页上的视频

如何快速看完一个视频 懂的都懂。 Edge浏览器 添加下面两个书签&#xff1a; javascript:document.querySelector("video").dispatchEvent(new Event("ended"))javascript:var vdocument.querySelector("video");if(v){v.mutedtrue;v.playba…

从艺术创作到作物生长,农业AI迎来“GPT“时刻

&#xff08;于景鑫 国家农业信息化工程技术研究中心&#xff09;"GPT"一词早已不再神秘,其在文本、图像生成领域掀起的风暴正以摧枯拉朽之势席卷全球。人们惊叹于ChatGPT对话之智能、思维之敏捷,更对Stable Diffusion、Midjourney创作的艺术画作赞叹不已。而大语言模…

无代码开发AI服务 - 利用向量库Kendra和Llama大模型在亚马逊云科技AWS上创建RAG知识库

简介&#xff1a; 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践&#xff0c;并应用到自己的日常工作里。 上次我们介绍了我们利用ElasticSearch作为向量…

网鼎杯comment二次注入

靶机网址&#xff1a;BUUCTF在线评测 进来就是这个界面&#xff0c;点击发帖后需要进行登录。 从界面可以看出用户是zhangwei&#xff0c;密码是zhangwei***&#xff0c;密码的最后三位需要进行暴力破解。 这里需要用到工具Burp Suite进行抓包。 这就是抓到的包&#xff0c;我…

【大模型从入门到精通8】openAI API 提升机器推理:高级策略2

这里写目录标题 示例定义处理输入的函数链式思考提示示例&#xff1a;结构化系统和用户提示获取并展示模型的回答实现内心独白结论与最佳实践 示例 设置环境 在深入实施之前&#xff0c;设置必要的环境至关重要。这包括加载 OpenAI API 密钥并导入相关的 Python 库。以下代码块…

Chapter 25 面向对象

欢迎大家订阅【Python从入门到精通】专栏&#xff0c;一起探索Python的无限可能&#xff01; 文章目录 前言一、初识对象二、成员方法三、类和对象 前言 面向对象编程&#xff08;OOP&#xff09;是Python编程中的一个核心概念&#xff0c;它能帮助程序员更好地组织和管理代码…

01 计算机系统基础-2

操作系统 进程管理 进程管理是操作系统的核心&#xff0c;但如果设计不当&#xff0c;就会出现死锁的问题。如果一个进程在等待一件不可能发生的事&#xff0c;则进程就死锁了。而如果一个或多个进程产生死锁&#xff0c;就会造成系统死锁。基于死锁产生机制及解决方案&#…

LeetCode Hard|【460. LFU 缓存】

力扣题目链接 LFU全称是最不经常使用算法&#xff08;Least Frequently Used&#xff09;&#xff0c;LFU算法的基本思想和所有的缓存算法一样&#xff0c;一定时期内被访问次数最少的页&#xff0c;在将来被访问到的几率也是最小的。 相较于 LRU 算法&#xff0c;LFU 更加注重…

MATLAB霍夫曼表盘识别系统

MATLAB霍夫曼表盘识别系统 一、介绍 本设计为基于MATLAB的表盘指针识别&#xff0c;算法原理是基于hough变换。可检测压力表&#xff0c;石英手表&#xff0c;电表刻度&#xff0c;气压表等带指针刻度的表盘。通过hough检测直线和圆的关系&#xff0c;得出指针夹角&#xff0…

保形分位数回归(CQR)

目录 简介1 介绍提纲式总结 分位数回归从数据中估计分位数 3 共性预测4 保形分位数回归(CQR)两个定理 6 实验7 结论 简介 保形预测是一种构造在有限样本中获得有效覆盖的预测区间的技术&#xff0c;无需进行分布假设。尽管有这种吸引力&#xff0c;但现有的保形方法可能是不必…

(C题老外游中国)2024年华数杯大学生数学建模竞赛解题思路完整代码论文集合

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

Open3D 三维重建-Delaunay Triangulation (德劳内三角剖分)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2重建后点云 Open3D点云算法汇总及实战案例汇总的目录地址&#xff1a; Open3D点云算法与点云深度学习案例汇总&#xff08;长期更新&#xff09;-CSD…

MySQL--日志管理

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、日志简介 MySQL日志主要分为4类&#xff0c;使用这些日志文件&#xff0c;可以查看MySQL内部发生的事情。这4类日志分别是: 错误日志&#xff1…

程序编译及链接

你好&#xff01;感谢支持孔乙己的新作&#xff0c;本文就程序的编译及链接与大家分析我的思路。 希望能大佬们多多纠正及支持 &#xff01;&#xff01;&#xff01; 个人主页&#xff1a;爱摸鱼的孔乙己-CSDN博客 ​ ​ 1.翻译译环境与运行环境 当我们进行程序设计时&…

Android Graphics 显示系统 - 计算FPS的原理与探秘Present Fence

“ 最近忙着新房子装修的事情&#xff0c;这篇计划内的文章拖了好久一直没有足够的时间来写作&#xff0c;终于挤出些儿时间来继续研究学习了。” 整了四个晚上终于拼凑出一篇文章&#xff0c;虽说是讲FPS计算原理&#xff0c;但该文涉及的知识点还是蛮多的&#xff0c;特别是对…

webpack的loader机制

webpack的loader机制 loader本质上就是导出函数的JavaScript模块。导出的函数&#xff0c;可以用来实现内容的转换。 /* * param{string|Buffer} content 源文件的内容 * param{object} [map] SourceMap数据 * param{any} [meta] meta数据&#xff0c;可以是任何数据 * */ fu…

黑马头条vue2.0项目实战(五)——首页—频道编辑

目录 1. 使用页面弹出层 1.1 页面弹出层简单使用 1.2 创建频道编辑组件 1.3 页面布局 2. 展示我的频道 3. 展示推荐频道列表 3.1 获取所有频道 3.2 处理展示推荐频道 4. 添加频道 5. 编辑频道 5.1 处理编辑状态 5.2 切换频道 5.3 让激活频道高亮 5.4 删除频道 6.…

K8S Docker搭建RocketMQ Dledger高可用集群

本篇文章回顾在华润基于K8S和Docker云设施搭建初步高可用具备failover的RocketMQ集群。RocketMQ版本是5.0.0。 目前现状 采用Dledger模式部署集群&#xff0c;3台namesrv&#xff0c;3台broker&#xff0c;namesrv每台1g的Docker部署&#xff0c;broker每台2g的Docker部署。测…