启动 AWS Academy Learner Lab【教学】(Hadoop实验)

🔥博客主页: A_SHOWY
🎥系列专栏:力扣刷题总结录 数据结构  云计算 

第一部分  创建实例过程

     首先,需要创建3台EC2,一台作主节点 (master node),两台作从节点 (slaves node)。

1.镜像选择

EC2(弹性计算云):是AWS提供的最基本的云计算产品:虚拟专用服务器。这些“实例”可以运行大多数操作系统。

2.选择实例类型

实例类型这里我选择的t2.medium,虽然选择t2.micro或者t2.small可能便宜一些,但是性能和CPU运行速率相差较大,运用Hadoop会显得比较吃力。

3.配置存储信息并设置实例数量

本次实验需要安装的文件大于8GiB,将默认的8GiB改成15GiB,由于需要创建3台EC2,一台作主节点 (master node),两台作从节点 (slaves node)。所以实例数量设置为3。

4.创建密钥对

密钥对名臣设置为hadoop,密钥对类型设置为RSA,私钥文件格式选择.pem(其实可以选择.ppk),由于面对EC2的操作我是用PuTTY来做的,所以将下载好的私钥还需通过PuTTYgen转换为.ppk格式。

成功创建SSH密钥对后:阿里云会保存SSH密钥对的公钥部分。自己需要下载并妥善保管私钥。当实例用公钥发送一段用于验证身份的密文,我们本地的SSH客户端便使用私钥将密文进行解密。

    5.启动实例

实例创建成功

6.对三个实例进行重命名

一台作主节点 (master node),两台作从节点 (slaves node)。为了后续操作清晰进行,故三个实例分别命名为master、slave01、slave02。

第二部分  实例配置连接过程

1.配置PuTTY

启动实例后,需要对EC2实例进行环境配置,需要使用SSH软件来完成远程连接,可以使用tabby、Xshell、electerm,在这里我使用的是Putty,这款工具是款老牌工具,体积小,使用方便,功能强大。

下面我仅仅展示master的连接过程图,slave01和slave02的连接过程同master完全一致。

  • 点击勾选master实例,从下方查看master实例的共有IPv4地址并复制。
  • 打开PuTTY,在将复制的master的共有IPv4粘贴到Host Name一栏,并在Saved Sessions一栏中将名称改为master,点击load进行连接,然后点击save(这样可以保证在下次启动实例时可以点击名称直接连接相应的IPv4,当然重启实验,以及过了0点会让共有IPv4地址改变,此时需要从写在Host Name中重新粘贴新的IPv4地址并连接保存)
  • 在PuTTYgen中将保存的.pem格式私密转为.ppk格式保存。
  • 在Connection——SSH——Auth路径下,点击Browse,选择保存的私钥路径。

  • 已经成功连接。

2.创建 hadoop 用户

  • sudo useradd -m hadoop -s /bin/bash//创建hadoop用户
  • sudo passwd Hadoop//设置 hadoop 用户的密码,需要输入两遍
  • sudo adduser hadoop sudo//为 hadoop 用户添加权限
  • sudo nano /etc/sudoers//打开权限相关文件
  • 在root下面添加一条属于hadoop的权限

第三部分 安装JDK

  • su hadoop//切换到 hadoop 用户
  • sudo yum updateinfo//安装 updateinfo
  • sudo yum install java-1.8.0-openjdk-devel.x86_64//指定安装版本
  • 如果看到complete信息,则表明JDK安装成功
  • java -version//查看java安装的版本

由于master、slave01、slave02的配置方法是一样的,故上述只以master为例。

第四部分 网络配置

如果要想实现通过主机名进行通信,不需要记录对应的IP地址,需要将主机名和IP地址为组存入hosts中。这样的操作就可以避免了通多较为麻烦的局域网内的本地IP进行通信。从三个实例中找到三个实例的私有IP地址

1.sudo nano /etc/hosts//修改hosts文件内容

(slave01,slave02内容修改),可以看到将3个主机名和对应的IP地址都输入到了hosts文件内容中。

2.重启实例

 

3.设置安全组,使三台主机的通信不被拦截

  • 选择实例,选择安全,后选择安全组,选择编辑入站规则
  • 编辑安全组类型选择所有流量,源选择任何位置的IPv4,保存规则

  • 通过ping操作,测试主机之间的连通性

测试可知,Master主机ping Master是通的

测试可知,Master主机ping Slave01 是通的

测试可知,Master主机ping Slave02 是通的

同理,在Slave01主机和Slave02主机上分别ping包括自己的3台z主机都是通的

4.安装 SSH Server

切换到 Master 主机对应的 putty 界面,首先查看 ssh 目录是否存在,如果不存在就创建该目录。

  • cd ~/.ssh/

mkdir ~/.ssh

  • cd ~/.ssh/ //进入ssh目录

  • 将密钥加入授权

cat ./id_rsa.pub >> ./authorized_keys

  • 接下来切换到 Slave01 对应的 putty 界面
  • cd ~/.ssh/

mkdir ~/.ssh

  • cd ~ //返回用户主目录
  • touch id_rsa.pub//创建 id_rsa.pub 文件

sudo nano id_rsa.pub//输入内容

  • 打开 Master 对应的 putty 界面

cd ~/.ssh/ //进入 ssh 目录。

sudo vim id_rsa.pub //打开 id_rsa.pub 文件

  • 复制其中的内容并粘贴到Slave01 对应的 putty 界面
  • 在Slave2中完成相同的操作

  • 在 Slave01 对应的 putty 界面中和 Slave02 对应的 putty 界面中分别输入:

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

  • 切换到 Master 主机对应的 putty 界面中输入

sudo vim /etc/ssh/sshd_config //打开文件

  • 将 PasswordAuthentication no 改为 PasswordAuthentication yes

  • 重新启动 sshd,检查是否能实现用户之间的切换,测试 ssh 是否配置成功。若能够完成用户之间的切换,表明配置成功,否则表明配置失败。

以下两图可以看出Master用户成功转换为Slave01,接着转换为Slave02,表面配置成功。

第五部分 安装Hadoop 

1.下载并安装Hadoop:出现以下提示表明下载成功。

2.进入用户主目录,查看下载好的文件,并将其解压到/usr/lib,之后将文件夹名改为 hadoop,并修改 hadoop 用户对其的文件权限

  • cd ~
    ls
  • sudo tar -zxf /home/hadoop/hadoop-2.8.4.tar.gz -C /usr/lib

cd /usr/lib
sudo mv ./hadoop-2.8.4/ ./hadoop
sudo chown -R hadoop ./hadoop

3.修改环境变量文件

sudo nano ~/.bashrc //打开文件的原始内容

在文件中的末尾加上export PATH=$PATH:/usr/lib/hadoop/bin:/usr/lib/hadoop/sbin

  • 配置文件使其生效

source ~/.bashrc

  • 进入 hadoop 文件目录

cd /usr/lib/hadoop/etc/Hadoop

4.修改 hadoop-env.sh 文件

sudo nano hadoop-env.sh

  • 此时,可以通过java-bose找到自己的路径将这个路径设置到JAVA_Home中

根据查到的地址在文件中进行修改。

5.修改slaves文件

sudo nano slaves

修改后的内容如下

6.修改 core-site.xml 文件

sudo nano core-site.xml

替换成以下内容

<configuration>
<property>

<name>fs.defaultFS</name>
<value>hdfs://Master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/lib/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>

7.修改 hdfs-site.xml 文件

sudo nano hdfs-site.xml

将内容替换为

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>Master:50090</value>
</property>

<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/lib/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/lib/hadoop/tmp/dfs/data</value>
</property>
</configuration>

8.将mapred-site.xml.template改名为 mapred-site.xml并进行修改。

内容替换成

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>Master:10020</value>
</property>
<property>

<name>mapreduce.jobhistory.webapp.address</name>

<value>Master:19888</value>
</property>
</configuration>

9.修改 yarn-site.xml 文件

sudo nano yarn-site.xml

将其修改为

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>Master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

10.将改好的文件部署到从节点

  • 把修改后的文件内容压缩成压缩包

cd /usr/lib
tar -zcf ~/hadoop.master.tar.gz ./hadoop

  • 使用 scp 命令进行传输,将修改好的文件传输到 Slave01 和 Slave02的用户文件夹下。

scp -r ~/hadoop.master.tar.gz Slave01:/home/hadoop

scp -r ~/hadoop.master.tar.gz Slave02:/home/hadoop

11.在从节点解压刚刚传输来的文件

在两个子节点分别输入

sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/lib
sudo chown -R hadoop /usr/lib/hadoop

12.在Master节点执行 NameNode 的格式化

hdfs namenode -format

出现Exiting with status 0表明格式化成功

  1. 启动Hadoop程序

当完成初始化后,要进行启动服务

  • 首先先看看目前有什么服务,发现仅有一个服务
  • 在 Master 中启动 dfs

start-dfs.sh

可以看到有三个服务

  • 查看 Slave01 和Slave02服务是否开启成功,可以看到均有两个服务,开启成功。
  • 启动Yarn程序
  • start-yarn.sh

  • 查看 Master 服务是否开启成功

可以看到有4个服务,说明启动成功

  • 切换到 Slave01和Slave02 对应的 putty 界面,查看服务是否开启成功。

均有3个启动起来的服务,说明Slave01和Slave02均开启成功。

13.在Master主机开启 historyserver 服务

mr-jobhistory-daemon.sh start historyserver,可以看到有5个服务,说明启动成功。

14.通过 hdfs dfsadmin -report 查看集群状态

hdfs dfsadmin -report

其中 Live datanodes (2) 表明两个从节点都已正常启动,启动成功。

15.通过web查看集群的一些信息

将复制的公有 IPv4 地址复制到浏览器地址栏后加上:50070打开此页面

将复制的公有 IPv4 地址复制到浏览器地址栏后加上 :8088打开此页面

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

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

相关文章

如何基于Akamai IoT边缘平台打造一个无服务器的位置分享应用

与地理位置有关的应用相信大家都很熟悉了&#xff0c;无论是IM软件里的位置共享或是电商、外卖应用中的配送地址匹配&#xff0c;我们几乎每天都在使用类似的功能与服务。不过你有没有想过&#xff0c;如何在自己开发的应用中嵌入类似的功能&#xff1f; 本文Akamai将为大家提…

梯度上升和随机梯度上升

目录 梯度上升算法&#xff1a; 代码&#xff1a; 随机梯度上升算法&#xff1a; 代码&#xff1a; 实验&#xff1a; 做图代码&#xff1a; 疑问&#xff1a; 1.梯度上升算法不适应大的数据集&#xff0c;改用随机梯度上升更合适。 2.改进过的随机梯度算法&#xff0…

Android Edittext进阶版(Textfieids)

一、Text fieids 允许用户在 UI 中输入文本&#xff0c;TextInputLayout TextInputEditText。 在 Text fieids 没出来(我不知道)前&#xff0c;想实现这个功能就需要自己自定义控件来实现这个功能。 几年前做个上面这种样式(filled 填充型)。需要多个控件组合 动画才能实现&a…

游戏开发增笑-扣扣死-Editor的脚本属性自定义定制-还写的挺详细的,旧版本反而更好

2012年在官方论坛注册的一个号&#xff0c;居然被禁言了&#xff0c;不知道官方现在是什么辣鸡&#xff0c;算了&#xff0c;大人不记狗子过 ”后来提交问题给CEO了&#xff0c;结果CEO百忙之中居然回复了&#xff0c;也是很低调的一个人&#xff0c;毕竟做技术的有什么坏心思呢…

基于SSM的老年公寓信息管理的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

如何使用cpolar内网穿透工具实现公网SSH远程访问Deepin

文章目录 前言1. 开启SSH服务2. Deppin安装Cpolar3. 配置ssh公网地址4. 公网远程SSH连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 前言 Deepin操作系统是一个基于Debian的Linux操作系统&#xff0c;专注于使用者对日常办公、学习、生活和娱乐的操作体验的极致&#xff0…

【C语言】深入理解指针(1)

目录 前言 &#xff08;一&#xff09;内存与地址 从实际生活出发 地址 内存 内存与地址关系密切 &#xff08;二&#xff09;指针变量 指针变量与取地址操作符 指针变量与解引用操作符 指针的大小 指针的运算 指针 - 整数 指针-指针 指针的关系运算 指针的类型的…

C++ 数组

目录 一维数组 一维数组的创建 一维数组的初始化 一维数组的使用 一维数组在内存中的存储 二维数组 二维数组的创建 二维数组的初始化 二维数组的使用 二维数组在内存中的存储 数组越界 一维数组 数组是一组形同类型的集合。 一维数组的创建 数组的创建方式&…

❀dialog命令运用于linux❀

目录 ❀dialog命令运用于linux❀ msgbox部件&#xff08;消息框&#xff09; yesno部件&#xff08;yesno框&#xff09; inputbox部件&#xff08;输入文本框&#xff09; textbox部件&#xff08;文本框&#xff09; menu部件&#xff08;菜单框&#xff09; fselect部…

哈希与哈希表

哈希表的概念 哈希表又名散列表&#xff0c;官话一点讲就是&#xff1a; 散列表&#xff08;Hash table&#xff0c;也叫哈希表&#xff09;&#xff0c;是根据关键码值(Key value)而直接进行访问的数据结构。也就是说&#xff0c;它通过把关键码值映射到表中一个位置来访问记…

线程变量引发的session混乱问题

最近不是在救火&#xff0c;就是在救火的路上。 也没什么特别可写的&#xff0c;今天记录下最近遇到的一个问题&#xff0c;个人觉得挺有意思&#xff0c; 待有缘人阅读 言归正传&#xff0c;售后反馈&#xff1a; 营业查询中付款方式为第三方支付的几条银行缴费&#xff0c;创…

ai绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】&#xff1a; SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01;本系统使用NestjsVueTypescript框架技术&#xff0c;持续集成AI能力到…

成为AI产品经理——模型稳定性评估(PSI)

一、PSI作用 稳定性是指模型性能的稳定程度。 上线前需要进行模型的稳定性评估&#xff0c;是否达到上线标准。 上线后需要进行模型的稳定性的观测&#xff0c;判断模型是否需要迭代。 稳定度指标(population stability index ,PSI)。通过PSI指标&#xff0c;我们可以获得不…

Windows使用Redis

Windows使用Redis 前言一、安装wsl2&#xff08;Windows Subsystem for Linux&#xff09;二、在wsl中下载并安装Redis一主二仆哨兵模式 前言 主要是记录一下&#xff0c;免得自己忘了。 一、安装wsl2&#xff08;Windows Subsystem for Linux&#xff09; Redis官网中说&…

GitHub上1.5K标星的QA和软件测试学习路线图

​最近在GitHub上发现一个项目&#xff0c;项目描述了作为QA工程师&#xff0c;进行软件测试技能提升时的&#xff0c;建议的软件测试学习顺序图​。 虽然2021年起就不再更新了&#xff0c;但是居然有1.5K的​星。 整个项目有两个部分​&#xff1a; ​1.QA和软件测试学习顺序…

craco + webpack 4 升 5

craco webpack 4 升 5 更新包版本尝试build升级其他依赖库使用process插件打印进度信息到底需要多少内存分析构建产出添加 splitChunk总结记录一些好文章&#xff1a; 我的项目使用 craco react 开发 我的 package.json {// ......"dependencies": {"ant-desi…

沐风老师3DMAX拼图随机生成器Puzzle建模工具使用教程

3DMAX拼图随机生成器Puzzle建模工具使用教程 3DMAX拼图随机生成器Puzzle&#xff0c;是一款用MAXScript脚本语言开发的3dsMax小工具&#xff0c;可以随机创建可编辑多边形3D拼图对象。可批量生成阵列。 【适用版本】 3dMax2015-2024&#xff08;不仅限于此范围&#xff09; 【…

前端大文件上传webuploader(react + umi)

使用WebUploader还可以批量上传文件、支持缩略图等等众多参数选项可设置&#xff0c;以及多个事件方法可调用&#xff0c;你可以随心所欲的定制你要的上传组件。 分片上传 1.什么是分片上传 分片上传&#xff0c;就是将所要上传的文件&#xff0c;按照一定的大小&#xff0c;将…

Langchain-Chatchat的安装过程

参考&#xff1a;LLMs之RAG&#xff1a;LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs多款embe_一个处女座的程序猿的博客-CSDN博客 1、安装过程中出现了 GPU驱动版本 是11.8 而 python -c "…

探索人工智能领域——每日20个名词详解【day8】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…