保姆级教学——集群环境搭建及创建集群

2023-11-13

保姆级教学——集群环境搭建及创建集群

新建虚拟机

一些默认,加载镜像开启虚拟机,在安装位置选择自己目录,然后建立分区,首先添加 挂载点,类型标准分区,文件系统ext4
手动分区
加载分区,期望给2G,
设置挂载点
类型标准分区,swap默认
缓冲

然后剩下47G给/就可以
其他分区

网络打开,把kudmp对勾去掉
kudmp

安装完成重新启动

查看自己的ip地址ip addr,我的是192.168.153.129
在这里插入图片描述

安装必要的环境:sudo yum install -y epel-release
在这里插入图片描述

第二个环境:sudo yum install -y psmisc nc net-tools rsync vim lrzsz ntp libzstd openssl-static tree iotop git
在这里插入图片描述

关闭防火墙(三台)

临时关闭防火墙:sudo systemctl stop firewalld
关闭防火墙自启动:sudo systemctl disable firewalld
在这里插入图片描述

创建用户设置密码
useradd ysm
passwd ysm
在这里插入图片描述

配置ysm用户具有root权限(三台)

sudo vim /etc/sudoers
找到如下添加

Allow root to run any commands anywhere

root ALL=(ALL) ALL
ysm ALL=(ALL) NOPASSWD: ALL
在这里插入图片描述

Wq!退出,小写wq
在/opt目录下创建子目录(三台)
创建package、software目录
sudo mkdir -p /opt/package
sudo mkdir -p /opt/soft
在这里插入图片描述

修改package、software文件夹的所有者
sudo chown ysm:ysm /opt/package /opt/soft
在这里插入图片描述

修改静态IP(三台)

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

IPADDR=“192.168.241.100” # 设置的静态IP地址
NETMASK=“255.255.255.0” # 子网掩码
GATEWAY=“192.168.241.2” # 网关地址
DNS1=“192.168.241.2” # DNS服务器
在这里插入图片描述

注意:静态static
Yes
添加的要跟自己的一致,我的ip是192.168.153.129,注意改成自己的
修改主机名(三台)
sudo hostnamectl --static set-hostname hadoop1
在这里插入图片描述

配置主机名称映射(三台)

vim /etc/hosts
格式:
ip 主机名
如下:
192.168.153.129 hadoop1
192.168.153.130 hadoop2
192.168.153,131 hadoop3
在这里插入图片描述

安装JDK(主节点)

删除linux自带的JDK
rpm -qa | grep -i java | xargs -n1 sudo rpm -e --nodeps
上传JDK到 /opt/package 目录,利用xftp将jdk上传到/opt/package中
在这里插入图片描述

解压到 /opt/soft 目录
tar -zxvf jdk-8u212-linux-x64.tar.gz -C /opt/soft/
在这里插入图片描述

配置JDK环境变量**(主节点)

新建/etc/profile.d/my_env.sh文件
sudo vim /etc/profile.d/my_env.sh
添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/soft/jdk1.8.0_212
export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
在这里插入图片描述

注意: 配置完毕后重启xshell窗口,让环境变量生效!
测试 java -version 出现如下内容,则成功安装配置!
在这里插入图片描述
接下来克隆虚拟机,创建hadoop1的完整克隆
克隆完毕后修改克隆后的虚拟机的静态ip,修改主机名、
比如hadoop2,ip地址改为192.168.153.130 hadoop2
主机名设置为hostnamectl --static set-hostname hadoop2

接下来安装hadoop

安装Hadoop(主节点)

将hadoop-3.1.3.tar.gz导入到 /opt/package 目录
切换到 /opt/package
解压hadoop-3.1.3.tar.gz 到soft目录
tar -zxvf hadoop-3.1.3.tar.gz -C /opt/soft
在这里插入图片描述

添加hadoop的环境变量
sudo vim /etc/profile.d/my_env.sh
添加内容如下:
#HADOOP_HOME
export HADOOP_HOME=/opt/soft/hadoop-3.1.3
export PATH= P A T H : PATH: PATH:HADOOP_HOME/bin
export PATH= P A T H : PATH: PATH:HADOOP_HOME/sbin
断开连接重新连接
检查是否安装成功(出现版本号视为成功)
hadoop version
在这里插入图片描述

现在只有Hadoop1有hadoop了,23还没有,现在编写 zlcp 集群间数据分发脚本
在 /home/ysm 下创建 zlcp
vim zlcp
复制如下内容
注意: 循环中我使用的主机名是 ( hadoop1 hadoop2 hadoop3 ), 如不一样,自行修改为自己的主机
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo “no parameter!”
exit;
fi

#2. 遍历集群所有机器
for host in hadoop1 hadoop2 hadoop3
do
echo ==================== $host ====================
#3. 遍历所有目录,挨个发送
for file in $@
do
#4 判断文件是否存在
if [ -e KaTeX parse error: Expected 'EOF', got '#' at position 23: … then #̲5. 获取父目录 …(cd -P $(dirname KaTeX parse error: Expected 'EOF', got '#' at position 19: …e); pwd) #̲6. 获取当前文件的名称 …(basename $file)
ssh $host “mkdir -p $pdir”
rsync -av p d i r / pdir/ pdir/fname h o s t : host: host:pdir
else
echo $file does not exists!
fi
done
done
修改脚本 zlcp 具有执行权限chmod +x zlcp
将脚本移动到/bin中,以便全局调用sudo mv zlcp /bin/
在这里插入图片描述

SSH免密登录

我们已经掌握如何使用ssh登录远程服务器了,但是每次登录都要输入密码,比较麻烦。ssh提供一种免密登录的方式:公钥登录

  1. 在客户端hadoop1的家目录下使用 ssh-keygen -t rsa 生成一对密钥:公钥+私钥
    注意:这地方要敲三次回车!
    在/home/ysm/.ssh 下生成两个文件
    id_rsa 私钥
    id_rsa.pub 公钥
    在这里插入图片描述

注意: .ssh 是一个隐藏文件,使用 ls -a查看
2. 将公钥拷贝到要免密登录的目标机器上
ssh-copy-id hadoop1
ssh-copy-id hadoop2
ssh-copy-id hadoop3
在这里插入图片描述

  1. 如果想三台机器之间互相都可以实现免密登录,可以将 整个 .ssh分发到各个机器
    注意:回到家目录下ls-a 查看如果有.ssh再执行
    [ysm@hadoop1 ~]$ zlcp .ssh/
    zlcp 等下面配置为就可以使用了
    .ssh 下功能说明
    known_hosts 记录ssh访问过计算机的公钥(public key)
    id_rsa 生成的私钥
    id_rsa.pub 生成的公钥
    authorized_keys 存放授权过的无密登录服务器公钥

接下来配置集群文件

配置 core-site.xml

注意:需要进入下面路径下,别错了
cd /opt/soft/hadoop-3.1.3/etc/hadoop/
执行:vim core-site.xml
添加如下内容在 configuration标签内

注意:以下所有的环境变量配置都在与之间添加

fs.defaultFS hdfs://hadoop1:8020 hadoop.data.dir /opt/soft/hadoop-3.1.3/data hadoop.proxyuser.ysm.hosts * hadoop.proxyuser.ysm.groups * hadoop.http.staticuser.user ysm ![在这里插入图片描述](https://img-blog.csdnimg.cn/068242d8a73e486faa7b9ed747ef6402.png)

配置hdfs-site.xml

vim hdfs-site.xml
添加如下内容

dfs.namenode.name.dir
file:// h a d o o p . d a t a . d i r / n a m e < / v a l u e > < / p r o p e r t y > < p r o p e r t y > < n a m e > d f s . d a t a n o d e . n a m e . d i r < / n a m e > < v a l u e > f i l e : / / {hadoop.data.dir}/name</value> </property> <property> <name>dfs.datanode.name.dir</name> <value>file:// hadoop.data.dir/name</value></property><property><name>dfs.datanode.name.dir</name><value>file://{hadoop.data.dir}/data


dfs.namenode.checkpoint.dir
file://${hadoop.data.dir}/namesecondary


dfs.client.datanode-restart.timeout
30


dfs.namenode.secondary.http-address
hadoop3:9868

在这里插入图片描述

配置yarn-site.xml

vim yarn-site.xml
添加如下内容:

yarn.nodemanager.aux-services
mapreduce_shuffle


yarn.resourcemanager.hostname
hadoop2


yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME

在这里插入图片描述

配置mapred-site.xml

vim mapred-site.xml
添加如下:

mapreduce.framework.name
yarn

在这里插入图片描述

配置workers

vim workers
删除localhost
添加如下主机名
hadoop1
hadoop2
hadoop3
在这里插入图片描述

接下来分发hadoop将安装好hadoop 分发给其他2台机器
在soft目录下执行
zlcp hadoop-3.1.3
接着分发 my_env.sh
注意:需要在 /etc/profile.d/ 下执行
sudo zlcp my_env.sh
分发完毕后: 在三台机器下都测试
hadoop version
在这里插入图片描述

启动集群

如果集群是第一次启动,需要在 hadoop1 节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)
执行格式化namenoden代码
注意:一定要在第一台机器上运行,因为我的namemode在第一台机器上
hdfs namenode -format
在这里插入图片描述

启动HDFS

在namenode节点(hadoop1)上执行
start-dfs.sh
验证输入jps如果hadoop1出现这三个说明成功了
在这里插入图片描述

Hadoop2输入jps出现这两个说明成功
在这里插入图片描述

在hadoop3中出现这样说明成功了
在这里插入图片描述

启动 yarn

在配置了ResourceManager的节点(hadoop2)
start-yarn.sh
在这里插入图片描述

web测试访问namenode

在浏览器地址栏输入 namenode主节点ip:9870
例如
http://192.168.153.129:9870/

接下来配置时间同步

将三太机器都切换到root用户下
在每台机器都执行这两行命令
关闭时间:systemctl stop ntpd
关闭时间自启动:systemctl disable ntpd
1.修改ntp配置文件 (只在Hadoop1做配置)
vim /etc/ntp.conf
在这里插入图片描述

2.添加下面2行
将restrict 192.168.134.0改成自己的ip
下面四行注释掉添加
server 127.127.1.0
fudge 127.127.1.0 stratum 10
3 . 修改/etc/sysconfig/ntpd 文件
vim /etc/sysconfig/ntpd
添加如下内容
SYNC_HWCLOCK=yes
4 . 重新启动ntpd服务,设置开机自启动
systemctl start ntpd
systemctl enable ntpd
5 . 其他台机器配置(Hadoop2 和 Hadoop 3)
在其他机器配置10分钟与时间服务器同步一次
crontab -e
添加
*/10 * * * * /usr/sbin/ntpdate hadoop1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

保姆级教学——集群环境搭建及创建集群 的相关文章

  • 如何在不使用 IDE 的情况下在 Linux 上运行 Java 项目

    我是 Java 新手 基本上 我开发了一个java项目 其中包含Eclipse中的多个Java包 该项目在我安装了 redhat Linux 的桌面上运行正常 然而 我需要在一个更强大的没有安装X11的Linux服务器 redhat ent
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • 在内核代码中查找函数的最佳方法[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我开始浏览内核代码 遇到的一件事是如何跟踪函数调用 结构定义等 有没有一种好的方法可以快速跳转到函数定义并退出 我尝试过 Source N
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • Hadoop 作业:任务在 601 秒内无法报告状态

    在伪节点上运行 hadoop 作业时 任务失败并被杀死 错误 任务尝试 在 601 秒内无法报告状态 但同一个程序正在通过 Eclipse 运行 本地作业 任务 大约有 25K 个关键字 输出将是所有可能的组合 一次两个 即大约 25K 2
  • Hadoop fs 查找块大小?

    在 Hadoop fs 中如何查找特定文件的块大小 我主要对命令行感兴趣 例如 hadoop fs hdfs fs1 data 但看起来这并不存在 有Java解决方案吗 The fsck其他答案中的命令列出了块并允许您查看块的数量 但是 要
  • linux下无法创建僵尸进程

    嗯 我有一个奇怪的问题 我无法在我的项目中创建僵尸进程 但我可以在其他文件中创建僵尸进程 有简单的说明 int main if fork 0 printf Some instructions n else sleep 10 wait 0 r
  • 如何为 Linux 桌面条目文件指定带有相对路径的图标?

    对于我的一个 Linux 应用程序 我有应用程序二进制文件 一个 launcher sh 脚本 针对 LD LIBRARY PATH 和一个 desktop 文件 所有这些都位于同一文件夹中 我想使用图标的相对路径而不是绝对路径 我试过了
  • 就分页分段内存而言的程序寿命

    我对 x86 Linux 机器中的分段和分页过程有一个令人困惑的概念 如果有人能澄清从开始到结束所涉及的所有步骤 我们将很高兴 x86 使用分页分段内存技术进行内存管理 任何人都可以解释一下从可执行的 elf 格式文件从硬盘加载到主内存到它
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • Linux 上的 Pervasive ODBC 错误 [01000][unixODBC][驱动程序管理器]无法打开 lib '/usr/local/psql/lib/odbcci.so':找不到文件

    我正在尝试让 Pervasive v10 客户端 ODBC 在 Centos 6 上运行 据我所知 没有 64 位 ODBC 客户端 因此我必须使用 32 位客户端 我终于成功安装了它 但尝试使用时出现以下错误 isql v mydsn 0
  • 如何在linux中以编程方式获取dir的大小?

    我想通过 C 程序获取 linux 中特定目录的确切大小 我尝试使用 statfs path struct statfs 但它没有给出确切的大小 我也尝试过 stat 但它返回任何目录的大小为 4096 请建议我如何获取 dir 的确切大小
  • 无需超级用户即可在 Linux 中打开 RAW 套接字

    我必须编写一个在 Linux 上运行的 ping 函数 语言是 C 所以 C 也可以 在网上搜索并查看源代码ping命令 事实证明我应该创建一个原始套接字 icmp sock socket AF INET SOCK RAW IPPROTO
  • GMail 421 4.7.0 稍后重试,关闭连接

    我试图找出为什么它无法使用 GMail 从我的服务器发送邮件 为此 我使用 SwiftMailer 但我可以将问题包含在以下独立代码中
  • 并行运行 shell 脚本

    我有一个 shell 脚本 打乱大型文本文件 600 万行和 6 列 根据第一列对文件进行排序 输出 1000 个文件 所以伪代码看起来像这样 file1 sh bin bash for i in seq 1 1000 do Generat
  • 从 Xlib 转换为 xcb

    我目前正在将我的一个应用程序从 Xlib 移植到 libxcb 但在查找有关我有时使用的 XInput2 扩展的信息时遇到了一些麻烦 libxcb 中有 XInput2 实现吗 如果是的话 在哪里可以找到文档 目前我在使用此功能时遇到问题
  • 使用 Hive 计算文本变量的单词频率

    我有一个变量 每一行都是一个句子 例子 Row1 Hey how are you Rwo2 Hey Who is there 我希望输出是按单词分组的计数 Example Hey 2 How 1 are 1 我正在使用 split a bi
  • 与 pthread 的进程间互斥

    我想使用一个互斥体 它将用于同步对两个不同进程共享的内存中驻留的某些变量的访问 我怎样才能做到这一点 执行该操作的代码示例将非常感激 以下示例演示了 Pthread 进程间互斥体的创建 使用和销毁 将示例推广到多个进程作为读者的练习 inc
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输

随机推荐

  • 当绘图遇上Caché之元数据代理

    很久以前到沈阳实习的时候还一个个问度娘C 画图 画了电路图绘制软件的毕业设计 雪花屏保等等 搞LIS软件后绘制各种仪器图 对C 画笔 画字符串 画线 画圆等等耳熟能详 然而却碰到一个问题 我们的仪器大部分是盒子用数据库M连接的 如果盒子仪器
  • micropython RX8025T 驱动简单演示

    我就知道可能八百年会有一位大哥来找这个驱动 让我来猜猜为啥用这个 嫌一般的RTC不够精准是吧 想用个带温度补偿的试试 代码拿去 其实巨简单的 没啥好说的 而且只有基本功能 from micropython import const impo
  • 容器的docker-compose怎样写agent.jar配置

    在 Docker Compose 文件中配置 Java Agent 例如 agent jar 的方式与之前的环境变量类似 您可以使用 environment 字段来设置 Java 环境变量 包括 javaagent 参数来指定 Java A
  • 【C++】string使用

    文章目录 1 为什么要学习string类 2 标准库中的string类 2 1了解string类 2 2string类常用的接口 2 2 1 构造和析构相关 2 2 2 迭代器 2 2 3 容量相关 2 2 4 元素访问 元素遍历 元素访问
  • 生命在于学习——未授权访问漏洞

    声明 本篇文章只是用于记载学习笔记 学习交流 不可用作其他违规用途 一 简介 未授权访问可以理解为需要安全配置或权限认证的地址 授权页面存在缺陷 导致其他用户可以直接访问 从而引发重要权限可被操作 数据库 网站目录等敏感信息泄露 目前主要存
  • 静态对象(全局+局部+静态对象成员)

    所有的静态对象 全局对象都于静态存储区分配 关于全局对象 是在main 函数执行前就分配好了的 其实 在main 函数中的显示代码执行之前 会调用一个由编译器生成的 main 函数 而 main 函数会进行所有全局对象的的构造及初始化工作
  • C++ auto遍历无法直接修改map的数据

    对于std map 当使用for auto it myMap 这种范围循环形式时 实际上是使用了const迭代器进行遍历 这意味着你无法通过该迭代器直接修改std map中的值 范围循环使用的是容器的begin 和end 函数返回的迭代器
  • 【数据结构--链表】反转链表

    题目描述 代码实现 Definition for singly linked list struct ListNode int val struct ListNode next struct ListNode reverseList str
  • JavaScript如何调用摄像头

    如何使用浏览器调用摄像头 在JavaScript中使用浏览器调用摄像头会使用到以下方法 navigator getUserMedia video true audio false success error 参数1 是一个对象包含摄像头和麦
  • 二叉树的重构

    二叉树的重构是指给定二叉树的先序遍历 中序遍历 后序遍历中的任意两者 要求恢复二叉树的结构 其中 除非二叉树是真二叉树 即任一节点要么具有两个子节点 要么没有子节点 否则 必须要有中序遍历才能恢复二叉树的结构 先序遍历 中序遍历 后序遍历
  • 寒假培训——简单搜索

    A 捉迷藏1 dfs bfs简单搜索 题目 Title A 捉迷藏1 Time Limit 1s Description 王吉吉和袁坑坑在一个n m大小的房间里捉迷藏 王吉吉躲起来了 现在袁坑坑要去抓他 地图中 W 代表王吉吉 Y 代表袁坑
  • STM32速成笔记—DMA

    文章目录 一 什么是DMA 二 DMA有什么作用 三 STM32的DMA 3 1 DMA请求 3 2 DMA通道 3 3 仲裁器 四 DMA配置 4 1 DMA配置步骤 4 2 DMA结构体成员 五 DMA配置程序 5 1 ADC1初始化程
  • 4行代码计算9999的阶乘

    转载自 http blog csdn net liangbch article details 3230428 本文来源于csdn2001年的一个帖子 题目是有谁可以用四行代码求出1000000的阶乘 见 http topic csdn n
  • MySQL数据库增删改查及安全值守操作

    我在本篇文章中整理了一些MySQL数据库 表 字段的增删改查和安全值守操作的常用语句 以便同学们保存和快捷查询 详细如下 1 用户的查看 创建 删除 以username为Superman password为123123为例 用户的创建cre
  • python模拟登录京东网页

    目标网站 京东网首页登录 目标网址 https www jd com 任务要求 1 导入selenium库 并使用该库驱动Chrom浏览器 完成请求 2 驱动浏览器对象 找到登录按钮 点击 3 在新页面中选择账号登录 4 找到用户名和密码输
  • Ubuntu 安装 Mysql【详细步骤】

    文章目录 主要内容 安装并设置 mysql 安装 mysql 设置 mysql 首次登录数据库 配置远程访问 修改配置文件 mysql 授予权限 重启 mysql 测试远程访问 建立访问连接 workbench 访问 workbench 增
  • [Springboot+Logback]已定义日志路径但仍生成了LOG_PATH_IS_UNDEFIEND文件夹之解决办法

    目录 1 问题描述 2 分析过程 3 解决办法 4 其他 1 问题描述 自己写练习项目的时候 在application yml中定义了logging file path logging file path logs 也在logback sp
  • 松下GF9使用心得

    文章目录 规格参数 关键特征 USB接口充电功能 旋转显示屏 WiFi直连 4K拍摄和后对焦模式 快速指南 机身按键及功能 拍摄模式 屏显信息 拍摄时 回放时 菜单列表 拍摄菜单 动态影像菜单 自定义菜单 设置菜单 回放菜单 核心功能 拍摄
  • Python之struct简介

    一 struct简介 看到struct这么英文单词 大家应该并不陌生 因为c c 中就有struct 在那里struct叫做结构体 在Python中也使用struct 这充分说明了这个struct应该和c c 中的struct有很深的渊源
  • 保姆级教学——集群环境搭建及创建集群

    保姆级教学 集群环境搭建及创建集群 新建虚拟机 一些默认 加载镜像开启虚拟机 在安装位置选择自己目录 然后建立分区 首先添加 挂载点 类型标准分区 文件系统ext4 加载分区 期望给2G 类型标准分区 swap默认 然后剩下47G给 就可以