学习Hadoop(一)——搭建hadoop集群

news2024/11/25 10:28:07

最近开始学习大数据的相关知识,要学习大数据就不得不提到Hadoop。
一般来说学习一门新的知识,很多都是先理论再实践
在这里插入图片描述
我则不然,先实践,再了解理论
在这里插入图片描述

目录

  • 一、VM网络设置
  • 二、安装Centos7
    • 2.1 网络配置
    • 2.2 设置主机名
    • 2.3 hosts设置
    • 2.4 安装JDK
    • 2.5 关闭防火墙
    • 2.6 同步时间
    • 2.7 克隆服务器
    • 2.8 免密钥登陆
  • 三、安装hadoop
    • 3.1 下载hadoop
    • 3.2 解压
    • 3.3 环境变量配置
    • 3.4 检查
  • 四、部署hadoop
    • 4.1 集群部署规划
    • 4.2 环境配置
      • 4.2.1 hadoop-env.sh
      • 4.2.1 core-site.xml
      • 4.2.2 hdfs-site.xml
      • 4.2.3 yarn-site.xml
      • 4.2.4 mapred-site.xml
      • 4.2.5 workers
    • 4.3 复制hadoop
  • 五、启动集群
    • 5.1 格式化NameNode
    • 5.2 启动HDFS
    • 5.3 启动YARN
    • 5.4 启动历史服务器
    • 5.5 查看集群状态
  • 六、Web端查看
    • 6.1 HDFS
    • 6.2 YARN
    • 6.3 历史服务器

一、VM网络设置

打开控制面板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下配置
在这里插入图片描述
设置虚拟机虚拟网络编辑器
在这里插入图片描述
在这里插入图片描述

二、安装Centos7

基于centos环境进行搭建,所以需要安装centos7的虚拟机。

分别搭建三台虚拟机:masterslave0slave1
后面两台都是基于第一台进行克隆。
硬件配置为:

设备
硬盘20GB
内存2GB
处理器2

具体操作参考安装Centos7

2.1 网络配置

先对master服务器进行配置静态ip。
另外两台等后面克隆后进行设置

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

BOOTPROTO设置为static

BOOTPROTO="static"

添加ip信息

IPADDR="192.168.216.128"
NETMASK="255.255.255.0"
GATEWAY="192.168.216.2"
DNS1="8.8.8.8"
DNS2="8.8.8.4"

在这里插入图片描述
重启网路

service network restart

在这里插入图片描述
这个说明重启成功
当前服务器的ip为:192.168.216.128
后续两台克隆出来的服务器依照上面的步骤设置ip:

slave0:192.168.216.129
slave1:192.168.216.130

2.2 设置主机名

先对master服务器进行配置主机名。
另外两台等后面克隆后进行设置

vi /etc/sysconfig/network

修改为:

# Created by anaconda
NETWORKING=yes
HOSTNAME=master

修改主机名

vi /etc/hostname

填写名称(对应服务器修改各自名称)

master

在这里插入图片描述
重新启动该主机,就会发现主机名被修改了。
两台克隆的服务器后续也重复上面的操作进行修改。

2.3 hosts设置

修改/etc/hosts文件,配置主机和ip的映射
在原有的内容下面添加以下内容:

192.168.216.128   master
192.168.216.129   slave0
192.168.216.130   slave1

服务器都一样的内容,只需要修改master,两台克隆的服务器通过克隆即可。

2.4 安装JDK

先卸载自带的openjdk

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

下载jdk,我这里装的是jdk1.8。
进入官网:https://www.oracle.com/java/technologies/downloads
在这里插入图片描述
将下载后的文件放到/usr/local/java

cd /usr/local/java
tar zxvf 下载包的包名
mv 解压后的包名 jdk1.8

配置环境变量
在/etc/profile文件中末尾加上

export JAVA_HOME=/usr/local/java/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib

刷新环境变量

source /etc/profile

查看java版本

java -version

显示java版本,安装成功
在这里插入图片描述

2.5 关闭防火墙

查看防火墙状态

systemctl status firewalld.service

如下标识防火墙处于开启状态
在这里插入图片描述
关闭防火墙

systemctl stop firewalld.service

防止服务器重启时防火墙启动

systemctl disable firewalld.service

2.6 同步时间

编辑虚拟机设置
在这里插入图片描述
选项,VMware Tools勾选“将客户机时间与主机同步
在这里插入图片描述

2.7 克隆服务器

从上面配置出来的服务器进行克隆。

注意:克隆前需要关闭被克隆的服务器

鼠标右键点击服务器
管理→克隆
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
设置克隆机的服务器名称和存放位置
在这里插入图片描述
点击完成,克隆完毕。
依此克隆出slave0和slave1

对克隆服务器进行配置,依照上面步骤:

2.1 网络配置
2.2 设置主机名

2.8 免密钥登陆

在master服务器输入下面命令

ssh-keygen -t rsa

进入ssh文件夹

cd ~/.ssh

把公钥文件发送到自己和其它服务器。
以发给自己为例

ssh-copy-id -i id_rsa.pub root@master

输入yes,然后输入目标服务器的root密码
成功后,输入以下命令

ssh root@master

依此,也设置master免密登录slave0、slave1

三、安装hadoop

3.1 下载hadoop

通过http://archive.apache.org/dist/hadoop/common/
下载自己需要的hadoop版本。
我用的是3.1.3版本
在这里插入图片描述
将文件下载并放在master服务器的目录下(自己指定,我存在的是/usr/local)

3.2 解压

进入对应文件夹

cd /usr/local

解压文件

tar -zxvf hadoop-3.1.3.tar.gz

重命名文件

mv hadoop-3.1.3 hadoop

3.3 环境变量配置

配置环境变量
在/etc/profile文件中末尾加上

export HADOOP_HOME=/usr/local/hadoop/
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

刷新环境变量

source /etc/profile

3.4 检查

检查版本

hadoop version

在这里插入图片描述

四、部署hadoop

4.1 集群部署规划

masterslave0slave1
HDFSNameNode
DataNode
DataNodeSecondaryNameNode
DataNode
YARNNodeManagerResourceManager
NodeManager
NodeManager

注意:NameNode、SecondaryNameNode、ResourceManager这三个要分开不要配置在同一台虚拟机上

4.2 环境配置

配置文件位于hadoop安装目录下的/etc/hadoop目录
主要需要修改的文件为以下四个:

hadoop-env.sh
core-site.xml
hdfs-site.xml
yarn-site.xml
mapred-site.xml
workers

4.2.1 hadoop-env.sh

hadoop运行中所需要的环境变量,例如JAVA_HOME

export JAVA_HOME=/usr/local/java/jdk1.8

4.2.1 core-site.xml

  • 配置hdfs对应的主机和端口
  • 对那个hadopp数据的存放目录

创建存放hadoop数据目录

mkdir /opt/hadoopdata

在<configuration></configuration>标签内填充以下内容

	<property>
	     <name>fs.defaultFS</name>
	     <value>hdfs://master:9000</value>
	     <!-- 以上ip地址或主机名要按实际情况修改 -->
	</property>
	<property>
	    <name>hadoop.tmp.dir</name>
	    <value>/opt/hadoopdata</value>
	</property>

4.2.2 hdfs-site.xml

配置namenode和SecondaryNameNode

在<configuration></configuration>标签内填充以下内容

	<property>
	    <name>dfs.namenode.http-address</name>
	    <value>master:9870</value>
	</property>
	<property>
	    <name>dfs.namenode.secondary.http-address</name>
	    <value>slave1:9868</value>
	</property>

4.2.3 yarn-site.xml

在<configuration></configuration>标签内填充以下内容

	<!-- 指定MR走shuffle -->
	<property>
	    <name>yarn.nodemanager.aux-services</name>
	    <value>mapreduce_shuffle</value>
	</property>
	
	<!-- 指定ResourceManager的地址-->
	<property>
	    <name>yarn.resourcemanager.hostname</name>
	    <value>slave0</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>
	
	<!-- 如果要程序的运行日志信息上传到HDFS系统上,可配置日志聚集(选择配置) -->
	
	<!-- 开启日志聚集功能 -->
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
	</property>
	<!-- 设置日志聚集服务器地址 -->
	<property>  
		<name>yarn.log.server.url</name>  
		<value>http://master:19888/jobhistory/logs</value>
	</property>
	<!-- 设置日志保留时间为7天 -->
	<property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>604800</value>
	</property>

4.2.4 mapred-site.xml

在<configuration></configuration>标签内填充以下内容

    <!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
 
	<!-- 如果要看程序的历史运行情况,可以配置历史服务器(选择配置) -->
	 
	<!-- 历史服务器端地址 -->
	<property>
	    <name>mapreduce.jobhistory.address</name>
	    <value>master:10020</value>
	</property>
	 
	<!-- 历史服务器web端地址 -->
	<property>
	    <name>mapreduce.jobhistory.webapp.address</name>
	    <value>master:19888</value>
	</property>

在配置了

4.2.5 workers

删除原内容,填写集群服务器主机名称

master
slave0
slave1

注意:添加该文件时,内容上下不允许有空行,前后不允许有空格

4.3 复制hadoop

将master的hadoop远程发送给slave0和slave1两台服务器

scp -r /usr/local/hadoop root@slave0:/usr/local
scp -r /usr/local/hadoop root@slave1:/usr/local

给两台服务器的环境变量加上hadoop
参考 3.3 环境变量配置

五、启动集群

5.1 格式化NameNode

第一次启动需要在master节点先格式化NameNode

hdfs namenode -format

在这里插入图片描述

5.2 启动HDFS

NameNode节点(master)上添加环境变量

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

启动

/usr/local/hadoop/sbin/start-dfs.sh 

在这里插入图片描述

5.3 启动YARN

ResourceManager节点(slave0)上添加环境变量

export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

启动

/usr/local/hadoop//sbin/start-yarn.sh 

在这里插入图片描述

5.4 启动历史服务器

只有配置了才进行启动。
(mapred-site.xml中配置)

mapred --daemon start historyserver

5.5 查看集群状态

在各个节点上输入以下命令查看

jps

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

六、Web端查看

浏览器通过端口可以查看对应启动的服务

6.1 HDFS

访问
http://master:9870
在这里插入图片描述
这里显示在这个位置可以执行一系列操作

6.2 YARN

访问
http://slave0:8088
在这里插入图片描述
这里会显示集群的执行任务

6.3 历史服务器

访问
http://master:19888/jobhistory
在这里插入图片描述
可在该页面查看历史日志

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

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

相关文章

【在SpringBoot项目中使用Validation框架检查数据格式】

目录 1. 添加依赖 2. 检查POJO类型的请求参数 3. 关于响应的消息文本 4. 快速失败 5. 检查未封装的请求参数 1. 添加依赖 在pom.xml中添加spring-boot-starter-validation依赖项&#xff1a; <!-- Spring Boot Validation框架&#xff0c;用于检查数据格式 --> &…

ctfshow 月饼杯

寒假打算认真学习一下&#xff0c;就先从半个月的刷题开始。 文章目录web1_此夜圆web2_故人心web3_莫负婵娟web1_此夜圆 题目给的有附件&#xff0c;一看就是php反序列化字符串逃逸(应该是签到题)。 源码&#xff1a; <?php error_reporting(0);class a {public $uname;…

负载均衡组件Ribbon核心-@LoadBalanced-下

引言 书接上篇 负载均衡组件Ribbon核心-LoadBalanced-上 我们讲完了理解LoadBalanced注解的知识准备&#xff0c;接下来就是LoadBalanced注解详解。 LoadBalancerAutoConfiguration 激活 LoadBalanced 注解功能起点来至LoadBalancerAutoConfiguration自动配置类&#xff0c;S…

uni-app 超详细教程(三)(从菜鸟到大佬)

本文中内容为&#xff1a; 1. 支付功能&#xff08;微信支付&#xff0c;支付宝支付&#xff09; 2. 项目打包&#xff1a;&#xff08;APP打包&#xff0c;H5打包&#xff0c;微信小程序打包&#xff09; 一&#xff0c;uni - app 的支付功能 一、微信支付 1、登录微信开…

如何在Ubuntu20.04上安装RDP远程

计算机最有意思的事情&#xff0c;就是你可以用任何方式去实现跨设备连接。例如google通过webrtc实现远程桌面&#xff0c;Linux则是常用ssh等。在远程桌面上一般分为windows的RDP和Unix/Linux的VNC。 常规在windows上winr输入mstsc,我们通过微软的RDP技术去远程计算机。RDP和…

C#Lambda让代码变得更加简洁而优雅

Using a lambda expression&#xff0c;we can make the code more compact and elegant。   在使用lambda表达式时&#xff0c;可以使代码更加简洁和优雅。 Lambda&#xff0c;希腊字母λ&#xff0c;在C#编程语言中&#xff0c;被引入为Lambda表达式&#xff0c;表示为匿名…

使用[阿里问题定位神器]Arthas入门

目录 注意 安装 在线安装 离线安装 目前我接触到的实用命令 dashboard heapdump thread jad stack trace 注意 arthas本身有一定的性能消耗&#xff0c;所以生产环境小心使用 arthas本身有一定的性能消耗&#xff0c;所以生产环境小心使用 arthas本身有一定的性能…

【Linux】万字总结Linux 基本指令,绝对详细!!!

文章目录 Linux 基本指令 ls 指令 alias 指令 cd指令 pwd 指令 clear指令 touch 指令 mkdir 指令&#xff08;重要&#xff09; rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a; man指令&#xff08;重要&#xff09; cp指令&#xff08;重…

闭关三个月,腾讯大咖手写Framework最新源码笔记,从基础到进阶直接封神

什么是Android Framework 我们首先给出Android Framework的定义&#xff0c;然后再对该定义给出详细的解释。 Android Framework包含三个内容&#xff1a;服务端、客户端、linux驱动 服务端 Android Framework服务端包括两个很重要的类&#xff1a;WindowManagerService (W…

实验(六):定时器实验

一、实验目的与任务 实验目的&#xff1a; 1&#xff0e;掌握定时/计数器的中断法工作原理&#xff1b; 2&#xff0e;熟悉C51编程与调试方法。 任务&#xff1a; 1. 运行Keil开发环境&#xff0c;完成定时器软件编程&#xff1b; 2. 建立Proteus仿真模型&#xff1b; 3&#x…

day15_面向对象的三大特征之一(继承)

继承的概述 Java是对现实社会的模拟&#xff0c;现实中有儿子可以继承父亲的财产&#xff0c;因此有了富二代的。 java中多个类中存在相同属性和行为时&#xff0c;将这些内容抽取到单独一个类中&#xff0c;那么多个类中无需再定义这些属性和行为&#xff0c;只需要和抽取出来…

CSDNtop1全栈接口测试教程 jmeter接口测试,接口自动化测试

测试时优先对其进行结构化拆分&#xff0c;将测试整体拆分为各个场景 创建线程组&#xff0c;简单控制器&#xff0c;HTTP请求默认值&#xff0c;HTTP信息头管理器 将测试目标结构化&#xff0c;可以更好地管理测试框架和整合其他组件&#xff0c;有利于反馈工作 添加HTTP请求…

如何做好自动化测试?揭开测试项目团队的自动化实践过程……

稍具测试规模的项目团队皆想引进自动化测试&#xff0c;然而动手实现自动化测试的团队却不多&#xff0c;未能真正实施的原因多种多样&#xff0c;有扼杀在摇篮里的&#xff0c;有写了后弃之不用。那么是不是所有的业务都适合自动化测试呢&#xff1f;下面就介绍下自己在项目中…

超级好用的笔记工具------Typora 如何修改Typora 中图片保存的位置

用了这么多的笔记、最后还是选择了Typora。真的是很不错呐。一些私密的笔记、比如公司内部资料。放到网页多多少少是不安全的。还是放到本地安全的多。 1、使用Typora 做的小笔记 1.1 目录情况 这个可以按照自己的进度或者时间节点自行分级 1.2 某一个页面的具体设计 2、基本…

react18 通过redux 做一个简单的状态管理基站

我们打开react项目 在终端输入 npm install redux --saveredux就进来了 这里 我们引入了 redux 但其实 有一个 redux 和一个 react-redux 两者区别在于 redux 是一个js的状态管理容器 而react-redux 则提供了 更多便于react开发的状态管理方法 然后我们在项目的src目录下创…

4-FreeRTOS队列、互斥、信号量

1-队列 队列&#xff08;我对队列的理解就是上体育课&#xff0c;排队这种&#xff09;是任务之间通信的一种方式。队列可以用于任务和任务之间或者中断和任务之间消息的接收与发送。在多数情况下&#xff0c;他们消息缓冲是按照FIFO&#xff08;先进先出&#xff09;原则。也…

文本处理方式方法

概述 从今天开始&#xff0c;我们将开启一段自然语言处理的流程&#xff0c;自然语言可以让来处理、理解以及运用人类的语言&#xff0c;实现机器语言和人类语言之间的沟通桥梁。 文本处理 我们正在进行文本处理的时候&#xff0c;经常会用到文本长度不一致的情况&#xff0c…

Microsoft SQL Server 图书管理数据库的建立

文章目录题目描述创建数据库使用数据库创建三个表外码的表示形式结果展示题目描述 – 新建 “图书管理数据库" – 其中包含三个关系 – 图书&#xff08;编号&#xff0c;图书名&#xff0c;作者&#xff0c;出版社&#xff0c;类型&#xff0c;单价&#xff09; – 借阅…

ASP.NET Core 3.1系列(16)——Entity Framework Core之Code First

1、前言 前一篇博客介绍了EFCore中的DB First开发模式&#xff0c;该模式可以根据数据库生成实体类和数据库上下文&#xff0c;因此适用于数据库已经存在的场景。而与之相对应的&#xff0c;Code First主要是根据自定义的实体类和数据库上下文反向构建数据库&#xff0c;因此也…

操作系统02_进程管理_同步互斥信号量_PV操作_死锁---软考高级系统架构师007

存储管理可以分为固定存储管理和分页存储管理。 现在固定存储管理已经不用也不考,但要知道因为固定存储管理指的是整存整取 也就是把一整个程序,比如说10G的游戏全部都存到内存里 这样的话是非常占用内存的,这个固定存储管理现在已经不用了。 然后这里我们主要看分页存储管: …