ubuntu虚拟机搭建hadoop完全分布式集群

2023-11-04

一、需要的工具

需要的工具我已经完成分享,需要的可以直接在网盘中下载。
VMware15 Workstation Pro 提取码:pp12
ubuntu16 18 19 镜像 提取码:yfj0
Xshell+Xftp 提取码:6ao9
jdk1.8 提取码:rzpy
hadoop 提取码:5hpm

二、搭建单机伪分布式集群

  1. 说明: 搭建完全分布式集群的时候我们可以先从伪分布式集群搭建起,后面从机的java hadoop环境我们可以直接从主机上复制即可,不需要两台从机都要重新配置环境,所以我们从伪分布式集群搭建开始。搭建伪分布式集群可以参考我前面的博客
    阿里云服务器搭建hadoop2.7伪分布式环境
    不过前面搭建的是基于阿里云centos7.6环境搭建的,其实大致上差不多,但是为了完整性,决定演示一下ubuntu虚拟机上的完整搭建步骤。

  2. 修改主机名字为master
    在这里插入图片描述
    然后重启主机生效 : sudo reboot

  3. 修改host文件

vim /etc/hostname

在这里插入图片描述

  1. 安装SSH
sudo apt-get install openssh-server

在这里插入图片描述
测试ssh是否安装成功。

ssh  master

在这里插入图片描述

  1. 配置SSH免key登陆 (必须配置)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

然后用ssh连接主机,此时不需要密码即可 ssh master
在这里插入图片描述

  1. 安装jdk,hadoop
    直接链接下载会很慢,我们直接在windows上下载好所需要的jdk,hadoop安装包,然后通过共享文件夹传到虚拟机。
    关于共享文件夹如何设置百度一下即可。然后通过软连接建立一下连接即可
    安装VMware Tools、与Windows共享文件夹、建立软连接在这里插入图片描述然后将jdk,hadoop压缩包全部复制到/usr/local目录下面

    cp  *****   -r   /usr/local    ***是你的安装包
    

在这里插入图片描述

  1. 分别解压两个压缩包
sudo  tar -zxvf hadoop-2.7.7.tar.gz
sudo  tar -zxvf jdk1.8.0_20.tar.gz

在这里插入图片描述

  1. 配置java环境
sudo vim /etc/profile

在后面添加以下

export JAVA_HOME=/usr/local/jdk1.8.0_20
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

注意你自己jdk的目录

在这里插入图片描述
然后 source /etc/profile 使环境生效
在这里插入图片描述

  1. 配置hadoop环境
    修改配置文件,设置环境变量
vim  ~/.bashrc

在结尾添加以下:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

注意自己hadoop的路径
在这里插入图片描述
使得配置文件生效 source ~/.bashrc

  1. vim /etc/profile
    结尾添加以下,注意自己的hadoop路径
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

在这里插入图片描述

  1. 修改hadoop-env.sh
cd /usr/local/hadoop/etc/hadoop
sudo vim hadoop-env.sh

在这里插入图片描述
首先修改java_home路径
在这里插入图片描述
然后在结尾添加以下:

export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"

在这里插入图片描述

  1. 修改core-site.xml
    在结尾添加以下:
<configuration>    
    <property>        
        <name>hadoop.tmp.dir</name>        
        <value>file:/usr/local/hadoop/tmp</value>        
        <description>location to store temporary files</description>    
    </property>    
    <property>        
        <name>fs.defaultFS</name>        
        <value>hdfs://master:9000</value>    
    </property>
</configuration>

其中我们需要在hadoop目录下新建一些文件夹。
tmp文件夹:/usr/local/hadoop/tmp
然后在tmp下面新建dfs
然后在dfs下面分别新建两个文件夹 name data
注意各个目录之间的结构是什么。
在这里插入图片描述

  1. 修改hdfs-site.xml
<configuration>    
    //设置HDFS文件副本数    
    <property>        
        <name>dfs.replication</name>        
        <value>1</value>    
    </property>    
    <property>         
        <name>dfs.client.use.datanode.hostname</name>        
        <value>true</value>    
    </property>    
    <property>                    
        <name>dfs.datanode.use.datanode.hostname</name>         
        <value>true</value>    
    </property>    
    //设置HDFS元数据文件存放路径    
    <property>        
        <name>dfs.namenode.name.dir</name>        
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>    
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>       
    //设置其他用户执行操作是会提醒没有权限的问题        
    <property>               
        <name>dfs.permissions</name>        
        <value>false</value>    
    </property>
</configuration>

在这里插入图片描述

  1. 修改mapred-site.xml
    将/usr/local/hadoop/etc/hadoop/mapred-site.xml.template的后缀.template去掉。然后
vim /usr/local/hadoop/etc/hadoop/mapred-site.xml

在结尾添加以下:

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

在这里插入图片描述
15. yarn-site.xml
在结尾添加以下:

<configuration>
    <!-- Site specific YARN configuration properties -->    
    <property>        
        <name>yarn.resourcemanager.hostname</name>        
        <value>master</value>    
    </property>    
    <property>        
        <name>yarn.nodemanager.aux-services</name>        
        <value>mapreduce_shuffle</value>    
    </property>
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

在这里插入图片描述
16. 修改slaves文件
将localhost直接改成主机名(这里为master),然后再添加节点主机名:我这里为Slave1 Slave2
这里截图只截了一半,master后面还有Slave1 Slave2
这里必须要三个都写,不然后面克隆的时候另外的两台节点主机还要回来重新配置slave文件。
在这里插入图片描述

三、克隆master搭建完全分布式

  1. 右键master–>管理–>克隆–>虚拟机中当前状态–>创建完整的克隆
    如下图所示,克隆了两台分别为Slave1 Slave2在这里插入图片描述
  2. 重命名主机
    启动三台虚拟主机,分别对两台节点主机命名为Slave1 Slave2
sudo  vim /etc/hostname

然后分别查看虚拟机的ip

ifconfig

我的ip分别为
192.168.31.31
192.168.31.14
192.168.31.163
前三段必须要相同,不然无法搭建,只要在相同的环境即可。
然后分别在Xshell上连接三台虚拟主机。这样做的目的是防止直接在虚拟机上操作造成卡顿。
在这里插入图片描述
在这里插入图片描述

  1. 验证三台主机之间能否ping通
    由于之前的master主机上我们已经配置了ssh免密登陆了,所以克隆出来的两台节点主机理论上也是可以的。
    我们在master主机上
ssh  Slave1
ssh Slave2

然后在一台节点主机上的操作以此类推,如果三台主机之间都可以相互连接即可。
由于电脑太卡,就不在这里截图了。

四、将mater的java hadoop环境变量复制到节点主机上

  1. 格式化master主机hadoop环境
/usr/local/hadoop/bin/hdfs namenode -format

注意:只能格式化一次,再次格式化的时候需要将tmp文件夹恢复到初始状态。
在这里插入图片描述

  1. 克隆环境
sudo scp -r /usr/local  mjx@Slave1:/usr/local/jdk1.8
sudo scp -r /usr/local  mjx@Slave2:/usr/local/jdk1.8
sudo scp -r /usr/local  mjx@Slave1:/usr/local/hadoop
sudo scp -r /usr/local  mjx@Slave2:/usr/local/jdk1.8

其中的参数说明:
/usr/local 是节点主机上jdk 和 hadoop的安装目录,/usr/local/jdk1.8是master主机的jdk1.8目录
/usr/local/hadoop是master主机的hadoop目录。
mjx是用户名,三台主机的用户名都是mjx。

在这里插入图片描述

  1. 进入到master 启动hadoop集群
    只需要在master中启动即可。
    在这里插入图片描述
    然后分别查看三台虚拟机的启动状态。
    在这里插入图片描述
    在这里插入图片描述
    可以看到master和两台节点主机都正常启动。

    1. 浏览器可视化管理Hadoop集群
      在这里插入图片描述
      在这里插入图片描述
      到此完毕!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu虚拟机搭建hadoop完全分布式集群 的相关文章

  • SQLAlchemy 闭包表关系定义

    我最近开始使用 SQL Alchemy 开展一个涉及攀岩区域和路线的项目 区域是分层的 因为单个区域可以包含多个区域 而多个区域又可以包含其他区域 路线直接与单个区域关联 但也与该区域的父区域关联 等等 为了实现这一点 我选择使用Bill
  • pandas 使用查询功能检查列是否为空

    我有 pandas 数据框 我想在它的查询函数上执行 isnull 或 not isnull 条件 如下所示 In 67 df data pd DataFrame a 1 20 None 40 50 In 68 df data Out 68
  • Pythonic方式逐行读取文件?

    以下两种方法中逐行读取文件的 Pythonic 方法是什么 with open file r as f for line in f print line or with open file r as f for line in f read
  • Python - 重写 print()

    我正在使用 mod wsgi 想知道是否可以覆盖 print 命令 因为它没用 这样做是行不通的 print myPrintFunction 因为这是一个语法错误 Print 不是 Python 2 x 中的函数 因此这不能直接实现 但是
  • Keras 中的 Tensorflow 自定义损失函数 - 张量循环

    我正在尝试在 Keras 中编写自定义损失函数 如下所示 Keras 中的自定义损失函数 https stackoverflow com questions 43818584 custom loss function in keras 我的
  • 如何在Python中打印出字母表中的第n个字母?

    ASCII 数学似乎在 Python 中不起作用 一 5 不起作用 如果没有字母数组 如何快速打印出字母表中的第 n 个字母 我天真的解决方案是这样的 letters A B C D E F G H I J K L M N O P Q R
  • 如何以编程方式关闭wx.DirDialog?

    我有 wxpython 应用程序 可以在单击按钮时打开 wx DirDialog dlg wx DirDialog self Choose a directory style wx DD DEFAULT STYLE if dlg ShowM
  • Django 1.7.1 需要字段的默认值 - 但数据库中没有条目。为什么?

    我遇到了一个奇怪的问题 我在 Mac OS X Yosemite 上使用 Django 1 7 1 并且配置了本地 MySQL 数据库 通常 我创建一个模型 如果我想添加另一个字段 我只需做一个 manage py migrateDjang
  • Flask 无法识别两个 URL 参数

    我正在尝试将两个参数发送到使用 Flask 路由的 URL If I do curl i http 127 0 0 1 5000 api journeys count startStationName Hansard 20Mews 20Sh
  • 在pycharm中使用多处理时如何调试

    我正在 pycharm 社区版中使用 anaconda2 调试多进程程序 它有几个后台工作进程 工作进程将检查输入队列以检索任务 而不会休眠 直到收到任务 事实上 我只对主要流程感兴趣 但是pycharm调试器总是单步进入子进程 看起来主进
  • 如何在 Django 中创建多选框?

    我正在尝试创建多选框字段来自姜戈选择 2 https github com applegrew django select2库如下图所示 我使用了下一个代码 但它返回简单的选择多个小部件 我想我忘了补充一些东西 我的错误在哪里 有人可以告诉
  • PySide2/QML 填充 Gridview 模型/委托并为其设置动画

    我是 QML 的新手 正在寻求以下几点帮助 如何基于 TextField 输入 如 Regex 通过 PySide2 过滤 Gridview 模型中的 QAbstractListModel 数据 标题 如何在鼠标悬停时为 Gridview
  • 如何在这个可嵌套的 For 循环中实现 Robot Framework 风格的变量?

    我在 Robot Framework 中见过很多 嵌套 For 循环 主要是创建一个内部带有 For 循环的关键字 然后在另一个 For 循环中调用该关键字 我使用 Python 2 7 13 制作了一个可嵌套的 For 循环 但因为它主要
  • 为什么 Python 的 argparse 对 SystemExit 使用错误代码 2?

    当我给 Python 的 argparse 输入它不喜欢的输入时 它会引发一个代码为 2 的 SystemExit 其中似乎意味着 没有这样的文件或目录 https docs python org 2 library errno html
  • 当前异常上下文掩盖了先前的错误

    以下是我在 Doug Hellman 网站上名为 masking exceptions catch py 的文件中找到的示例 我暂时无法找到链接 throws 中引发的异常将被丢弃 而 cleanup 中引发的异常将被报告 道格在他的文章中
  • 第 100 次避免循环导入

    Summary 我继续有一个ImportError在一个复杂的项目中 我已经将其蒸馏到仍然会出现错误的最低限度 Example 巫师有装有绿色和棕色药水的容器 这些可以添加在一起 产生同样是绿色或棕色的新药水 我们有一个PotionABC
  • 捕获 CommandOnCooldown 错误

    我正在制作一个有冷却时间的不和谐机器人 并且我正在尝试制作一个事件 当CommandOnCooldown发生错误时 机器人会通过私信告诉他们需要等待多长时间 这是我的代码 看起来一切正常 但它不知道 retry after 意味着什么 bo
  • 在 matplotlib 中添加新的导航模式

    我正在编写一个 wx matplotlib 应用程序 并且在向 matplotlib 导航工具栏添加新工具时遇到相当大的困难 基本上我想添加选择工具 选取框 套索等 以切换受控子图的鼠标模式 到目前为止 我还没有找到任何功能可以让我轻松地做
  • Python二进制数据读取

    urllib2 请求接收二进制响应 如下所示 00 00 00 01 00 04 41 4D 54 44 00 00 00 00 02 41 97 33 33 41 99 5C 29 41 90 3D 71 41 91 D7 0A 47 0
  • Django migrate:不创建表

    经过一些错误后 我删除了数据库 删除了所有迁移文件 我留下了init py 现在 当我跑步时 python migrate py makemigrations It creates migrations correctly python m

随机推荐

  • autojs获取最近创建的媒体文件,获取本机音频视频图片文件脚本源码,翻译自java

    说明 本文提供的代码仅供参考 不建议用于生产环境 可能有些地方在最新版本的Auto js上面需要做修改 才能运行 Auto js简介 Auto js是利用安卓系统的 辅助功能 实现类似于按键精灵一样 可以通过代码模拟一系列界面动作的辅助工作
  • 宋人千首绝句【全十卷】

    千首宋人绝句 是清代严长明编辑的书籍 全书共十卷 分七言 五言 六言三部分 其中七言七卷 五言两卷 六言一卷 且按帝王 后妃 宫掖 宗室 降王 宋臣 闺媛等分类 收录有王安石 苏轼 黄庭坚 秦观 陆游 杨万里 范成大等著名诗人的六言绝句 编
  • 看了一次strongswan ipsec的设置.

    看了一次strongswan ipsec的设置 这次的设置要求是 Linux 中 strongwans与hillstone防火墙 stoneOS 建立ipsec连接 network network进行通信 要求Linux可以同时与多台防火墙
  • 从2018年以太坊统计数据看区块链发展趋势

    今年6月 我们发布了 以太坊网络状态 重点介绍了整个网络的一些关键数据和统计数据 六个月后 即将在2018年结束时 我们处于长期 加密货币冬天 的尾声 2017年末至今的市场波动已经引起了区块链行业的普遍关注 然而 仔细研究这些数字可以发现
  • Python实现根据磁盘剩余空间对磁盘多次写入和擦除

    实现根据磁盘剩余容量 对剩余容量 预留了1GB 进行多次的写入和删除数据 次数为变量counts 每次写入1GB的数据 即变量data 多次操作 以实现上述功能 通过更改taskTimes变量可以多次写入和删除 from datetime
  • 基于STM32的智能电子秤设计

    硬件设计 本设计是一款基于STM32单片机的电子秤系统 随着科学技术的不断发展 传统的机械秤逐渐被电子秤所取代 相比于计量不精确 费时费力的机械秤 电子秤采用在方便快捷的同时 又保证了结果的准确性 本次设计采用STM32单片机作为处理器 控
  • 03智慧安防

    一张图读懂一个产业之智慧安防 自2015年起 安防行业逐渐引入人工智能技术 智慧安防 一词开始进入大众视野 伴随着政府 平安城市 天网工程 雪亮工程 等项目不断推出 智慧安防快速成为智慧城市应用中落地情况较好 技术与服务相对成熟的领域之一
  • java 实现部门树_Java实现部门模块开发

    一 新增部门接口开发 1 1 DeptParam java 1 2 LevelUtils java 1 4 1 导入 commons lang3 依赖包 1 2 2 实现LevelUtils开发 1 3 在 com yuluomoshang
  • 物联网设备获取北京时间、年月日、星期几,GMT格林威治标准时间转换为北京时间,授时api Fiddler抓包调试

    1 获取北京时间 年月日 授时api 苏宁获取北京时间的api不要太方便 http quan suning com getSysTime do 使用 Fiddler抓包调试 查看HTTP返回报文 双击左侧抓取到的HTTP返回报文 使用 Sy
  • 同步异步BUCK研究

    目录 一 同步时钟 二 异步BUCK电路 1 基本公式推导 2 电感选型计算 三 同步BUCK电路 四 同步异步BUCK电路对比 前言 在硬件设计中 电源模块基本都会接触到 DC DC拓扑电路又是最常见的 所以深入理解DC DC电路至关重要
  • 轻松成为设计高手

    目录 2 Verilog语言基础 2 1 三种描述方法 2 Verilog语言基础 2 1 三种描述方法 1 数据流描述 assign连续赋值语句 2 行为描述 过程赋值语句 always和initial过程块 3 结构化描述 实例化已有的
  • 微服务(SpringCloud)

    1 什么是微服务 将一个大项目中各个业务代码进行拆分 拆分成多个互不相干小项目 每个项目完成自己特有的功能 而且可以通过调用别的项目完成整体功能 2 SpringCloud 是由Spring提供的一套能够快速搭建微服务框架程序的框架集 也被
  • WEB漏洞测试(二)——HTML注入 & XSS攻击

    上一篇介绍了我们安装BWAPP来完成我们的漏洞测试 在BWAPP中 将HTML Injection和XSS做了非常详细的分类 那么为什么要将两个一起讲呢 归根结底 我觉得这两个分明是一个玩意 充其量是攻击的方式不一样 我们先来介绍一下这两种
  • Electron入门应用打包exe(windows)

    最近在学习nodejs 得知Electron是通过将Chromium和Node js合并到同一个运行时环境中 用HTML CSS和JavaScript来构建跨平台桌面应用程序的一门技术 对于之前一直从事flash AIR桌面应用开发的我迫不
  • 【网络】交换机 VLAN 网关 路由器

    网关 含义 网间连接器 协议转换器 在传输层上实现网络互连 PS 二层交换机在链路层 路由 三层交换机在网络层 集线器 中继器在物理层 是最复杂的网络互联设备 仅用于两个高层协议不同的网络互连 网关有很多种 最常用的是TCP IP协议里的网
  • DDoS攻击原理及防御

    转自 微点阅读 https www weidianyuedu com 随着网络时代的到来 网络安全变得越来越重要 在互联网的安全领域 DDoS Distributed DenialofService 攻击技术因为它的隐蔽性 高效性一直是网络
  • matlab自回归模型AIC,时间序列笔记-自回归模型(二)

    笔记说明 在datacamp网站上学习 Time Series with R track Introduction to Time Series Analysis 课程 做的对应笔记 学识有限 错误难免 还请不吝赐教 如无特殊说明 笔记中所
  • gcc常见编译参数介绍

    1 常见编译参数介绍 gcc可以说是个伟大的编译器集合 支持c c object c java fortran pascal ada等一大堆语言 同时支持几乎所有32位以上的cpu和部分16位 8位cpu 因此几乎所有开源操作系统 商业un
  • uniapp微信小程序 ios端部分机型屏幕可左右滑动原因即处理

    1 原因 因为部分元素超过了屏幕尺寸大小 2 处理 在超出屏幕尺寸的元素上一级使用 width 100 overflow x hidden 如果是图片导致的 则需要把多余的裁剪掉
  • ubuntu虚拟机搭建hadoop完全分布式集群

    一 需要的工具 需要的工具我已经完成分享 需要的可以直接在网盘中下载 VMware15 Workstation Pro 提取码 pp12 ubuntu16 18 19 镜像 提取码 yfj0 Xshell Xftp 提取码 6ao9 jdk