Haoop集群的搭建(小白教学)

news2024/11/16 1:23:07

       搭建hadoop集群我们必须拥有自己的虚拟机,下列我会给大家奉上超详细的集群搭建以及我在搭建的时候碰到的问题以及对应解决办法,正所谓自己走过的错路是曲折的,也是防止大家做弯路,不仅浪费时间还心态爆炸,下面带走入hadoop集群搭建。

1.下载VMware

这里给大家提供一个下载Vmware虚拟机的网站:

VMware - Delivering a Digital Foundation For Businesses

  • 进去之后点击产品-产品-更多产品-搜索work
  •  对应的系统根据自己的电脑进行选择(下载后就是傻瓜式安装,不多做解释)
  • VM密钥可在网上自行查找

 2.下载Centos7系统

阿里云镜像下载地址:centos-7-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)

环境的配置根据自己的电脑的配置进行选择(虚拟机最好分50g内存)

3.更改ip地址

一共有三处需要更改ip地址

一、改变VM中的ip地址

 

二、改变windows中的ip地址

 三、改变hadoop100ip地址

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

BOOTPROTO="static"

IPADDR=192.168.10.100

GATEWAY=192.168.10.2

DNS1=192.168.10.2

192.168.10.100 hadoop100

192.168.10.101 hadoop101

192.168.10.102 hadoop102

192.168.10.103 hadoop103

192.168.10.104 hadoop104

192.168.10.105 hadoop105

192.168.10.106 hadoop106

192.168.10.107 hadoop107

192.168.10.108 hadoop108

C:\Windows\System32\drivers\etc

将上述ip地址加入到hosts中

如果w10可能会出现无法在文件中进行添加,w10对权限这方面把控的比较严格,所以可以将文件复制一份在桌面上,然后在添加后在放进原文件夹中

4.关闭防火墙以及其他操作

1.yum  install -y epel-release  //类似于安装了一个仓库

2.systemctl stop firewalld  //关闭当前防火墙

3.systemctl  disable  firewalld.service   //关闭开机时的防火墙

4.vim /etc/suduers

 5.卸载虚拟机自带的jdk

rpm -qa | grep -i java  | xargs -n1 rpm -e --nodeps

6.下载、解压hadoop、jdk 配置linux中的环境

Hadoop镜像:Index of /apache/hadoop/common (tsinghua.edu.cn)

注意:hadoop版本最好下不易过高的,因为是在windows环境中如果运行hdfs等,所需要的hadoop.dll 不太好找,以至于心态崩溃。

jdk:百度云下载:

链接:百度网盘 请输入提取码 提取码:cbw4

下载后通过Xftp软件将jar包传到linux下的 /opt/software中,

vim  /etc/profile.d/my_env.sh

解压并安装jdk:

1.tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/module/

2.cd /etc/profile.d/   

3.sudo vim my_env.sh
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

4.source /etc/profile

解压并安装hadoop:

1.tar -zxvf hadoop-3.3.1.tar.gz -C /opt/module/ 

2.2.cd /etc/profile.d/ 

3.sudo vim my_env.sh
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.3.1

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

4.source /etc/profile

 6.完全分布式运行模式

1.scp:可以实现服务器与服务器之间的数据拷贝

拷贝:
scp     -r      $pdir/$fname    $user@$host:$pdir/$fname 
命令     递归  要拷贝的文件夹路径/名称   目的地用户@主机:目的地路径/名称


同步:
rsync     -av     $pdir/$fname  $user@$host:$pdir/$fname 
命令     递归  要拷贝的文件夹路径/名称   目的地用户@主机:目的地路径/名称

但是我们在这里为了方便写了一个shell脚本以便于虚拟机进行同步数据

#!/bin/bash
#1.判断参数个数
if [ $# -lt 1 ]
then
        echo Not Enough Arguement!
	exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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

可以在~目录下创建一个bin的文件夹,以便于我们后期写的shell脚本的存储位置

创建一个文件写入脚本sxync,然后输入

chmod 999 sxync

使得脚本生效

7.ssh无密登录

生成公钥和私钥:

[lzw@hadoop102 .ssh]$ pwd
/home/atguigu/.ssh
[lzw@hadoop102 .ssh]$ ssh-keygen -t rsa
三次回车就会出现公钥(id_rsa)和私钥(id_rsa.pub)

将公钥拷贝到要免登录的目标机器上:

[lzw@hadoop102 .ssh]$ ssh-copy-id hadoop102
[lzw@hadoop102 .ssh]$ ssh-copy-id hadoop103
[lzw@hadoop102 .ssh]$ ssh-copy-id hadoop104

ssh无密登录的原理图奉上:

 8.配置集群

1.核心配置文件

cd $HADOOP_HOME/etc/hadoop

vim core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <!-- 指定 NameNode 的地址 -->
 <property>
 <name>fs.defaultFS</name>
 <value>hdfs://hadoop102:8020</value>
 </property>
 <!-- 指定 hadoop 数据的存储目录 -->
 <property>
 <name>hadoop.tmp.dir</name>
 <value>/opt/module/hadoop-3.1.3/data</value>
 </property>
 <!-- 配置 HDFS 网页登录使用的静态用户为 lzw-->
 <property>
 <name>hadoop.http.staticuser.user</name>
 <value>lzw</value>
 </property>
</configuration>

2.hdfs配置文件

vim hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- nn web 端访问地址-->
<property>
 <name>dfs.namenode.http-address</name>
 <value>hadoop102:9870</value>
 </property>
<!-- 2nn web 端访问地址-->
 <property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>hadoop104:9868</value>
 </property>
</configuration>

3.Yarn配置文件

vim yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <!-- 指定 MR 走 shuffle -->
 <property>
 <name>yarn.nodemanager.aux-services</name>
 <value>mapreduce_shuffle</value>
 </property>
 <!-- 指定 ResourceManager 的地址-->
 <property>
 <name>yarn.resourcemanager.hostname</name>
 <value>hadoop103</value>
 </property>
 <!-- 环境变量的继承 -->
 <property>
 <name>yarn.nodemanager.env-whitelist</name>
 
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
 </property>
</configuration>

4.MapReduce配置文件

vim mapred-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
 <property>
 <name>mapreduce.framework.name</name>
 <value>yarn</value>
 </property>
</configuration>

将配置好的Hadoop文件分发给其他虚拟机

sxync /opt/module/hadoop-3.1.3/etc/hadoop/

9.配置works

vim /opt/module/hadoop-3.1.3/etc/hadoop/workers

 添加以下内容,注意在添加的时候千万不能出现空格、空行

hadoop102
hadoop103
hadoop104

同步所有节点的配置文件

xsync /opt/module/hadoop-3.1.3/etc

10.启动集群

进入到hadoop-3.1.3的目录下:

//对hdfs进行初始化
hdfs namenode -format
//启动dfs
sbin/start-dfs.sh
//启动yarn
sbin/start-yarn.sh
Web 端查看 HDFS NameNode      浏览器中输入: http://hadoop102:9870
Web 端查看 YARN ResourceManager   浏览器中输入: http://hadoop103:8088
如果NameNode启动失败的话:
1.启动集群时如果碰到Attempting to operate on hdfs namenode as root错误:

第一种方法:输入如下命令,在环境变量中添加下面的配置

vi /etc/profile

然后向里面加入如下的内容

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

第二种方法:

将start-dfs.sh,stop-dfs.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

HDFS_DATANODE_USER=root

HADOOP_SECURE_DN_USER=hdfs

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

将start-yarn.sh,stop-yarn.sh(在hadoop安装目录的sbin里)两个文件顶部添加以下参数

YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

报错先暂停,然后再清理原数据,再进行初始化

如果Yarn启动失败的话:

2.ERROR: Attempting to operate on yarn resourcemanager as root ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.出现以上报错信息需要到 sbin 目录下 更改 start-yarn.sh 和 stop-yarn.sh 信息,在两个配置文件的第一行添加:

YARN_RESOURCEMANAGER_USER=root

HADOOP_SECURE_DN_USER=yarn

YARN_NODEMANAGER_USER=root

 制作不易,恳请关注!!!

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

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

相关文章

蜘蛛池搭建需要多少域名?全面解析!

蜘蛛池是指为搜索引擎爬虫提供优质、可靠的页面&#xff0c;从而提高网站的收录和排名。在蜘蛛池搭建过程中&#xff0c;域名数量是一个非常重要的问题。那么&#xff0c;蜘蛛池搭建需要多少域名呢&#xff1f;本文将对这个问题进行全面解析。 首先&#xff0c;我们需要了解什么…

SQL教程

1、基础 演示数据库&#xff0c;下面是选自 “Websites” 表的数据&#xff1a; SELECT 语句用于从数据库中选取数据。 SELECT name,country FROM Websites;SELECT DISTINCT 语句用于返回唯一不同的值。 SELECT DISTINCT country FROM Websites;WHERE 子句用于提取那些满足…

二十三种设计模式第五篇--原型模式

原型模式&#xff08;Prototype Pattern&#xff09;是用于创建重复的对象&#xff0c;同时又能保证性能。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式是实现了一个原型接口&#xff0c;该接口用于创建当前对象的克隆。当直接创建…

Linux网络——Shell编程之循环

Linux网络——Shell编程之循环 一、循环1.循环与遍历2.循环的优势 二、for 循环语句1.for 语句的结构2.for语句应用示例 三、while 循环语句1.while 语句的结构2.while语句应用示例 四、until 循环五、跳出循环1.break2.continue3.exit 六、死循环 一、循环 定义&#xff1a;循…

2023年适合营销公司使用的十大「社交媒体管理」工具

在遍地都是数字营销公司的时代&#xff0c;对品牌来说&#xff0c;拥有强大的社交媒体影响力以保持竞争力从未如此重要。 而对于管理一个或多个品牌的数字营销公司来说&#xff0c;从内容创作到执行报告&#xff0c;使用正确的工具可以帮助你做到这一点。从规划、管理和跟踪社…

idb使用教程(一)

概述 iOS开发桥&#xff08;idb&#xff09;是一个多功能的工具&#xff0c;用于自动化iOS模拟器和设备。它在一个一致的、对人友好的界面中暴露了很多分布在苹果工具中的功能。 安装 idb由两个部分组成&#xff0c;每个部分都需要单独安装。 idb伴侣 每个目标&#xff08…

《花雕学AI》ChatMind:与AI对话,轻松梳理思路并创建思维导图

引言&#xff1a; 思维导图是一种有效的思维工具&#xff0c;可以帮助用户整理和表达自己的思路&#xff0c;提高学习和工作的效率和质量。然而&#xff0c;传统的思维导图工具往往需要用户花费大量的时间和精力&#xff0c;学习和操作复杂的界面和功能&#xff0c;而且很难根据…

医院智能导诊系统,医院导航解决方案

随着现代医院规模不断扩大&#xff0c;功能区域越来越细化&#xff0c;面对复杂的楼宇结构&#xff0c;集中的就诊人流&#xff0c;患者在就诊中经常会面临找不到目的地的困境&#xff0c;就诊体验变差。针对这个问题&#xff0c;一些面积和规模都比较大的医院&#xff0c;已经…

html实现经典打方块小游戏

文章目录 1.设计来源1.1 主界面1.2 游戏界面1.3 游戏结束界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/130581985 html实现经典打方块小游戏源码 html实现经典打方块…

自主可控不走捷径,中国长城做难且正确的事

2020-2022年是中国信创产业的重要推广期&#xff0c;在国家战略的支持下&#xff0c;自主可控领域诸多相关企业均获得绝佳发展良机。 但信创产业“完成替代”不是终点&#xff0c;“实现领先”方是目标。如今势已启、路尚远&#xff0c;前景广阔的市场并不意味着自主可控相关企…

运营商三要素验证原理,这篇文章就够了!

引言 运营商三要素验证 API 是一种基于手机号码、身份证号码和姓名等三种信息的验证服务&#xff0c;主要用于验证用户身份信息的真实性和一致性&#xff0c;以及查询手机号码所属的运营商信息。 运营商三要素 API 的验证原理 1. 身份验证的原理 身份信息验证是运营商三要素…

入门级的家用洗地机怎么样?入门级洗地机推荐

洗地机的功能有很多&#xff0c;比如除菌、洗地机清洁地面的确是一把好手。但是&#xff01;清洁完之后还要手动清洗洗地机&#xff0c;是一件麻烦事啊&#xff01;现在市面上大部分洗地机都有自清洁这个功能&#xff0c;但是很多洗地机的自清洁并不算真正的自清洁&#xff0c;…

从月薪3000到月薪20000,自动化测试应该这样学...

绝大多数测试工程师都是从功能测试做起的&#xff0c;工作忙忙碌碌&#xff0c;每天在各种业务需求学习和点点中度过&#xff0c;过了好多年发现自己还只是一个功能测试工程师。 随着移动互联网的发展&#xff0c;从业人员能力的整体进步&#xff0c;软件测试需要具备的能力要…

倒转时空,颠覆传统:探究逆置链表的三种思路

本篇博客会讲解力扣“206. 反转链表”的解题思路&#xff0c;这是题目链接。 老规矩&#xff0c;先来审题&#xff1a; 示例如下&#xff1a; 提示和进阶&#xff1a; 本题的思路非常多&#xff0c;我讲解一下常见的思路。 思路1 最容易想到的方法&#xff0c;是直接使…

macOS本地python环境/vscode/导入python包/设置python解释器

查看macbook本地是否有python环境 输入python或者python3&#xff0c;退出python环境使用exit()&#xff0c;别忘了括号 没有的话去官网安装https://www.python.org/ 2. 安装vscode 官网https://code.visualstudio.com/ 3. 安装插件 点击左边的“插件”按钮&#xff0c;安装…

springcloud-gateway集成knife4j(swagger3)

springcloud-gateway集成knife4j&#xff08;swagger3&#xff09; springcloud-gateway集成knife4j&#xff08;swagger3&#xff09; 环境信息准备工作微服务集成knife4j 第一步&#xff1a;编写Knife4jApiInfoProperties第二步&#xff1a;编写配置类Knife4jConfig第三步&a…

5月9号软件资讯更新合集......

Linux 嵌入式系统构建工具 Yocto 发布 4.2 版本 基于 Linux 基金会的 Yocto 项目发布了 4.2 版本。Yocto 提供模板、工具和方法&#xff0c;帮助开发者创建基于 Linux 的定制版物联网 / 嵌入式操作系统&#xff0c;而无需关心硬件体系。 4.2 中的新功能 / 增强功能 Linux 内核…

106.(cesium篇)cesium椎体旋转

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en"> <

【简单入门】ChatGPT prompt engineering (中文版)笔记 |吴恩达ChatGPT 提示工程

目录 思维导图一、资料二、 指南环境配置两个基本原则&#xff08;最重要!!!!&#xff09;原则一&#xff1a;编写清晰、具体的指令**策略一&#xff1a;使用分隔符清晰地表示输入的不同部分**&#xff0c;**分隔符可以是&#xff1a;&#xff0c;""&#xff0c;<…

camunda的Java委托如何使用

一、camunda的Java委托有什么用途 在Camunda中&#xff0c;Java委托是一种用于在流程执行期间执行自定义逻辑的Java类。使用Java委托&#xff0c;您可以在流程执行期间通过Java代码实现各种复杂的业务逻辑。 以下是一些使用Java委托的常见用途&#xff1a; 1、计算值&#x…