Hadoop集群部署【一】HDFS详细介绍以及HDFS集群环境部署【hadoop组件HDFS笔记】(图片均为学习时截取的)

news2024/11/18 21:38:06

 HDFS详细介绍

HDFS是什么

 HDFS是Hadoop三大组件(HDFS、MapReduce、YARN)之一 全称是:Hadoop Distributed File System(Hadoop分布式文件系统);是Hadoop技术栈内提供的分布式数据存储解决方案 可以在多台服务器上构建存储集群,存储海量的数据。

了解为什么海量数据需要使用分布式存储技术

答:1、太大,单台服务器无法承担。

        2、靠数量取胜 多台服务器组合,才能Hold住。

        3、分布式不仅仅是解决了能存的问题, 多台服务器协同工作 带来的也是性能的横向扩展。(网络传输、磁盘读写、CPU、内存等各方面的综合提升)——分布式的性能提升。

        

 HDFS的基础架构

 

 

 一个典型的HDFS集群,就是由1个DataNode加若干(至少一个)DataNode组成。 

 

 HDFS各个组件介绍
 NameNode:

HDFS系统的主角色,是一个独立的进程 负责管理HDFS整个文件系统 负责管理DataNode。

 SecondaryNameNode:

NameNode的辅助,是一个独立进程 主要帮助NameNode完成元数据整理工作(打杂)。

 DataNode:

HDFS系统的从角色,是一个独立进程 主要负责数据的存储,即存入数据和取出数据。

HDFS集群环境部署

注意:请完成集群前置准备工作:

配置多台虚拟机:http://t.csdnimg.cn/hGqMzicon-default.png?t=N7T8http://t.csdnimg.cn/hGqMz
ip固定http://t.csdnimg.cn/4IqRcicon-default.png?t=N7T8http://t.csdnimg.cn/4IqRc
主机映射:http://t.csdnimg.cn/1C15xicon-default.png?t=N7T8http://t.csdnimg.cn/1C15x
ssh免密登录(以root用户为例,其他用户创建后一样):http://t.csdnimg.cn/dEITyicon-default.png?t=N7T8http://t.csdnimg.cn/dEITy
Jdk:http://t.csdnimg.cn/zKRC7icon-default.png?t=N7T8http://t.csdnimg.cn/zKRC7
关闭防火墙以及SELinux关闭:http://t.csdnimg.cn/K19d7icon-default.png?t=N7T8http://t.csdnimg.cn/K19d7

为了系统的安全和稳定,建议使用自建的用户来管理大数据相关的软件,这里使用hadoop用户为HDFS最高权限用户。

下载

官方网址:https://hadoop.apache.org,课程使用当前最新的发行版:3.3.4版。

 上传 & 解压(我的Hadoop版本为3.3.4)

注意标红位置,改写为自己想放的路径,我的软件通常都放在/export/server!!!!!!!!!

 1. 上传Hadoop安装包到node1节点中。

自己选择弄

2. 解压缩安装包到/export/server/中

tar -zxvf hadoop-3.3.4.tar.gz  -C /export/server

3. 构建软链接

ln -s /export/server/hadoop-3.3.4 hadoop

4. 进入hadoop安装包内

cd hadoop

5. 各个文件夹含义如下 

bin,存放Hadoop的各类程序(命令)

etc,存放Hadoop的配置文件 include,C语言的一些头文件

ib,存放Linux系统的动态链接库(.so文件)

libexec,存放配置Hadoop系统的脚本文件(.sh和.cmd)

licenses-binary,存放许可证文件 sbin,管理员程序(super bin)

share,存放二进制源码(Java jar包) 

 修改配置文件,应用自定义设置

1.  配置HDFS集群,我们主要涉及到如下文件的修改:

workers:        配置从节点(DataNode)有哪些

hadoop-env.sh:        配置Hadoop的相关环境变量

core-site.xml:        Hadoop核心配置文件

hdfs-site.xml:        HDFS核心配置文件

这些文件均存在与$HADOOP_HOME/etc/hadoop文件夹中。

2.  配置workers文件

进入配置文件目录

cd etc/hadoop

编辑workers文件

vim workers

填入如下内容

node1

node2

node3

 表明集群记录了三个从节点(DataNode)

3. 配置hadoop-env.sh文件

export JAVA_HOME=/export/server/jdk

export HADOOP_HOME=/export/server/hadoop

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export HADOOP_LOG_DIR=$HADOOP_HOME/logs

变量解释: 

JAVA_HOME,指明JDK环境的位置在哪

HADOOP_HOME,指明Hadoop安装位置

HADOOP_CONF_DIR,指明Hadoop配置文件目录位置

HADOOP_LOG_DIR,指明Hadoop运行日志目录位置

通过记录这些环境变量, 来指明上述运行时的重要信息 

 4.配置core-site.xml文件

 在文件内部填入如下内容

<configuration>  

        <property>    

                <name>fs.defaultFS</name>    

                <value>hdfs://node1:8020</value>  

        </property>  

        <property>    

                <name>io.file.buffer.size</name>    

                <value>131072</value>  

        </property>

</configuration>

 name:fs.defaultFS

含义:HDFS文件系统的网络通讯路径

value:hdfs://node1:8020

协议为hdfs://

namenode为node1

namenode通讯端口为8020

name:io.file.buffer.size

含义:io操作文件缓冲区大小

value:131072 bit

hdfs://node1:8020为整个HDFS内部的通讯地址,应用协议为hdfs://(Hadoop内置协议) 表明DataNode将和node1的8020端口通讯,node1是NameNode所在机器 此配置固定了node1必须启动NameNode进程

 5. 配置hdfs-site.xml文件

在文件内部填入如下内容

<configuration>  

        <property>    

                <name>dfs.datanode.data.dir.perm</name>    

                <value>700</value>  

        </property>  

        <property>    

                <name>dfs.namenode.name.dir</name>    

                <value>/data/nn</value>  

        </property>  

        <property>    

                <name>dfs.namenode.hosts</name>    

                <value>node1,node2,node3</value>  

        </property>

        <property>    

                <name>dfs.blocksize</name>    

                <value>268435456</value>  

        </property>  

        <property>    

                <name>dfs.namenode.handler.count</name>    

                <value>100</value>  

        </property>  

        <property>    

                <name>dfs.datanode.data.dir</name>    

                <value>/data/dn</value>  

        </property>

</configuration>

 解释

根据

namenode数据存放node1的/data/nn

datanode数据存放node1、node2、node3的/data/dn

所以应该 在node1节点:

mkdir -p /data/nn

mkdir /data/dn

在node2和node3节点:

mkdir -p /data/dn

 从node1将hadoop安装文件夹远程复制到node2、node3

 分发
 node1执行如下命令

cd /export/server

scp -r hadoop-3.3.4 node2:`pwd`/

scp -r hadoop-3.3.4 node3:`pwd`/

 在node2执行,为hadoop配置软链接

ln -s /export/server/hadoop-3.3.4 /export/server/hadoop

 在node3执行,为hadoop配置软链接

 ln -s /export/server/hadoop-3.3.4 /export/server/hadoop

 配置系统的环境变量

所有机器

vim /etc/profile

export HADOOP_HOME=/export/server/hadoop

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

 授权为hadoop用户

 hadoop部署的准备工作基本完成

为了确保安全,hadoop系统不以root用户启动,我们以普通用户hadoop来启动整个Hadoop服务 所以,现在需要对文件权限进行授权。

 注意:请确保已经提前创建好了hadoop用户,并配置好了hadoop用户之间的免密登录!!!!

以root身份,在node1、node2、node3(所有机器)三台服务器上均执行如下命令 

chown -R hadoop:hadoop /data

chown -R hadoop:hadoop /export

 格式化整个文件系统

格式化namenode

 确保以hadoop用户执行(否则会出问题,能解决,但请自行寻找解决办法)

su - hadoop

格式化namenode

hadoop namenode -format

 启动

 # 一键启动hdfs集群

start-dfs.sh

# 一键关闭hdfs集群

stop-dfs.sh

# 如果遇到命令未找到的错误,表明环境变量未配置好,可以以绝对路径执行 /export/server/hadoop/sbin/start-dfs.sh

/export/server/hadoop/sbin/stop-dfs.sh

 查看HDFS WEBUI

 启动完成后,可以在浏览器打开: http://node1:9870,即可查看到hdfs文件系统的管理网页。

注意:没有配置windows系统的主机映射,将node1改为主机node1的ip!!!!!!!!

 ip固定http://t.csdnimg.cn/4IqRcicon-default.png?t=N7T8http://t.csdnimg.cn/4IqRc

 

在Windows挂载HDFS文件系统

NFSicon-default.png?t=N7T8http://t.csdnimg.cn/hq3CU

 配置hadoop组件yarn:http://t.csdnimg.cn/ZiHLe

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

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

相关文章

对秒杀的思考

一、秒杀的目的 特价商品&#xff0c;数量有限&#xff0c;先到先得&#xff0c;售完为止 二、优惠券的秒杀 和特价商品的秒杀是一样的&#xff0c;只不过秒杀的商品是优惠券 三、秒杀的需求 秒杀前&#xff1a;提前将秒杀商品&#xff0c;存放到Redis秒杀中&#xff1a;使…

小红书“心愿单“薅羊毛活动,亲测有效!不是长期!!

大家好&#xff01;不知道你们有没有发现&#xff0c;最近小红书的"心愿单"活动在朋友圈都快刷频了&#xff0c;我也好奇点进去看了以下&#xff0c;还真有人通过这个活动以极低的价格甚至免费获得了商品。我也去测试了以下&#xff0c;方法没问题&#xff0c;就是一…

HTTPS数字证书验证论述

1 概述 网络请求方式通常分为两种&#xff0c;分别是HTTP请求和HTTPS请求&#xff0c;其中HTTP的传输属于明文传输&#xff0c;在传输的过程中容易被人截取并且偷窥其中的内容&#xff0c;而HTTPS是一种在HTTP的基础上加了SSL/TLS层&#xff08;安全套接层&#xff09;的安全的…

技术周总结 2024.06.24~06.30(Python并发执行shell并发执行 Spring Bean)

文章目录 一、 06.26 周三1.1&#xff09;问题01&#xff1a;怎么在mysql的命令行中查询出来 python能使用的元祖结果集1.2&#xff09;问题02&#xff1a;python中 set()是什么&#xff0c;怎么使用 二、06.27 周四2.1&#xff09;问题01&#xff1a;shell 并发执行2.2&#x…

【ARMv8/v9 GIC 系列 5 -- GIC GICD_CTRL 使用详细介绍】

文章目录 GICD_CTRLGICD_CTLR 寄存器结构RWP&#xff08;Register Write Pending&#xff09;E1NWF&#xff08;Enable 1 of N Wakeup Functionality&#xff09;DS&#xff08;Disable Security&#xff09; 亲和性路由&#xff08;Affinity Routing&#xff09;ARE_NSARE_S 中…

【分布式数据仓库Hive】常见问题及解决办法

目录 一、启动hive时发现log4j版本和hadoop的版本有冲突 解决办法&#xff1a;删除hive下高版本的slf4j 二、启动hive报错 Exception in thread "main" java.lang.NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava/lang/Object;)V …

web自动化(三)鼠标操作键盘

selenuim 键盘操作 import timefrom selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait from selen…

ElementUI中的el-table解决宽度问题 - 根据内容自动撑开

在使用element-ui中&#xff0c;会发现表格组件el-table在未指定宽度情况下&#xff0c;会自动计算并给表格宽度赋值。但实际开发中&#xff0c;有时需要根据内容实际长度自动撑开显示&#xff0c;由内容的多少而决定表格的宽度&#xff0c;而不是默认宽度为100%。在默认情况下…

【Linux】线程——线程的概念、线程的特点、线程的优点和缺点、线程和进程、线程函数的使用

文章目录 Linux线程1. 线程的概念1.1 什么是线程 2. 线程的特点2.1 线程的优点2.2 线程的缺点2.4 线程和进程 3. 线程函数的使用pthread_create() 创建线程pthread_self() 获取线程IDpthread_exit() 线程终止pthread_cancel() 线程取消pthread_join() 线程等待pthread_detach()…

使用Redis实现消息队列:List、Pub/Sub和Stream的实践

摘要 Redis是一个高性能的键值存储系统&#xff0c;它的多种数据结构使其成为实现消息队列的理想选择。本文将探讨如何使用Redis的List、Pub/Sub和Stream数据结构来实现一个高效的消息队列系统。 1. 消息队列的基本概念 消息队列是一种应用程序之间进行通信的机制&#xff0…

docker容器间网络仿真工具-pumba

docker-tc&pumba docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预&#xff0c;包括延迟&#xff0c;丢包&#xff0c;带宽限制等。 但是我在实际使用时&#xff0c;发现docker-tc这个工具在进行网络进行模…

Docker 部署 Minio 对象存储服务器

文章目录 Github官网文档简介dockerdocker-compose.ymlmc 客户端mc 基础命令Golang 示例创建 test 账号密钥文件上传示例 Github https://github.com/minio/minio 官网 https://min.io/https://www.minio.org.cn/ 文档 https://www.minio.org.cn/docs/minio/kubernetes/up…

摸爬滚打半年,我是如何从小白进阶到渗透测试工程师

前言 工作也好几年了&#xff0c;在这摸爬滚打中&#xff0c;遇到了服务器被黑&#xff0c;网站被人DDOS攻击&#xff0c;数据库被篡改等等。服务器也不是你说不让人上就不让人上的&#xff0c;所以IT安全这个话题还是比较沉重的&#xff0c;涉及的东西很多&#xff0c;只有你…

个人博客|PHP源码|支持多国语言切换

一. 前言 今天小编给大家带来了一款可学习&#xff0c;可商用的&#xff0c;支持多国语言的个人博客网站源码&#xff0c;支持二开&#xff0c;无加密。此博客相当简洁&#xff0c;也适合海外。详细界面和功能见下面视频演示。 如果您正好有此需求源码&#xff0c;请联系小编…

SSM学习4:spring整合mybatis、spring整合Junit

spring整合mybatis 之前的内容是有service层&#xff08;业务实现层&#xff09;、dao层&#xff08;操作数据库&#xff09;&#xff0c;现在新添加一个domain&#xff08;与业务相关的实体类&#xff09; 依赖配置 pom.xml <?xml version"1.0" encoding&quo…

一篇文章搞懂弹性云服务器和轻量云服务器的区别

前言 在众多的云服务器类型中&#xff0c;弹性云服务器和轻量云服务器因其各自的特点和优势&#xff0c;受到了广大用户的青睐。那么&#xff0c;这两者之间到底有哪些区别呢&#xff1f;本文将为您详细解析。 弹性云服务器&#xff1a;灵活多变的计算资源池 弹性云服务器&…

鸿蒙开发设备管理:【@ohos.sensor (传感器)】

传感器 说明&#xff1a; 本模块首批接口从API version 8开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import sensor from ohos.sensor;sensor.on ACCELEROMETER on(type: SensorType.SENSOR_TYPE_ID_ACCELEROMETER, callback: C…

04-ArcGIS For JavaScript的可视域分析功能

文章目录 综述代码实现代码解析结果 综述 在数字孪生或者实景三维的项目中&#xff0c;视频融合和可视域分析&#xff0c;一直都是热点问题。Cesium中&#xff0c;支持对阴影的后处理操作&#xff0c;通过重新编写GLSL代码就能实现视域和视频融合的功能。ArcGIS之前支持的可视…

Vue+Xterm.js+WebSocket+JSch实现Web Shell终端

一、需求 在系统中使用Web Shell连接集群的登录节点 二、实现 前端使用Vue&#xff0c;WebSocket实现前后端通信&#xff0c;后端使用JSch ssh通讯包。 1. 前端核心代码 <template><div class"shell-container"><div id"shell"/>&l…

day01-切片和索引

day01-切片和索引 ndarray对象的内容可以通过索引或切片来访问和修改&#xff0c;与 Python 中list 的切片操作一样。 ndarray数组可以基于0-n的下标进行索引 注意&#xff0c;数组切片并不像列表切片会重新开辟一片空间&#xff0c;而是地址引用&#xff0c;需要使用.copy()…