Hadoop的概述与安装

news2024/11/18 5:59:07

Hadoop的概述与安装

  • 一、Hadoop内部的三个核心组件
    • 1、HDFS:分布式文件存储系统
    • 2、YARN:分布式资源调度系统
    • 3、MapReduce:分布式离线计算框架
    • 4、Hadoop Common(了解即可)
  • 二、Hadoop技术诞生的一个生态圈
    • 数据采集存储
    • 数据清洗预处理
    • 数据统计分析
    • 数据迁移
    • 数据可视化
    • zookeeper
  • 三、主要围绕Apache的Hadoop发行版本来学习
  • 四、Hadoop的安装的四种模式
  • 五、Hadoop的伪分布安装流程
  • 六、格式化HDFS集群
  • 七、启动HDFS和YARN
  • 八、Hadoop的完全分布式安装
    • 1、克隆虚拟机
    • 2、安装JDK
    • 3、安装Hadoop完全分布式
    • 4、格式化HDFS
    • 5、启动HDFS和YARN

Hadoop技术 —— 脱自于Google的三篇论文(大数据软件一般都要求7*24小时不宕机)

把大数据中遇到的两个核心问题(海量数据的存储问题和海量数据的计算问题)全部解决了

一、Hadoop内部的三个核心组件

1、HDFS:分布式文件存储系统

分布式思想解决了海量数据的分布式存储问题

三个核心组件组成

  • NameNode:主节点
    • 存储整个HDFS集群的元数据(目录结构)
    • 管理整个HDFS集群
  • DataNode:数据节点/从节点
    • 存储数据的,DataNode以Block块的形式进行文件存储
  • SecondaryNameNode:小秘书
    • 帮助NameNode合并日志数据的(元数据)

2、YARN:分布式资源调度系统

解决分布式计算程序的资源分配以及任务监控问题

Mesos:分布式资源管理系统(YARN的替代品)

两个核心组件组成

  • ResourceManager:主节点
    • 管理整个YARN集群的,同时负责整体的资源分配
  • NodeManager:从节点
    • 真正负责进行资源提供的

3、MapReduce:分布式离线计算框架

分布式思想解决了海量数据的分布式计算问题

4、Hadoop Common(了解即可)

二、Hadoop技术诞生的一个生态圈

数据采集存储

flume、Kafka、hbase、hdfs

数据清洗预处理

MapReduce、Spark

数据统计分析

Hive、Pig

数据迁移

sqoop

数据可视化

ercharts

zookeeper

三、主要围绕Apache的Hadoop发行版本来学习

官网:https://hadoop.apache.org

apache hadoop发行版本

  • hadoop1.x
  • hadoop2.x
  • hadoop3.x
    • hadoop3.1.4

四、Hadoop的安装的四种模式

hadoop软件中HDFS和YARN是一个系统,而且是一个分布式的系统,同时他们还是一种主从架构的软件。

第一种:本地安装模式:只能使用MapReduce,HDFS、YARN均无法使用 —— 基本不用

第二种:伪分布安装模式:hdfs和yarn的主从架构软件全部安装到同一个节点上

第三种:完全分布式安装模式:hdfs和yarn的主从架构组件安装到不同的节点上

第四种:HA高可用安装模式:hdfs和yarn的主从架构组件安装到不同节点上,同时还需要把他们的主节点多安装两三个,但是在同一时刻只能有一个主节点对外提供服务 —— 借助Zookeeper软件才能实现

修改配置文件:hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-env.sh、mapred-site.xml、yarn-site.xml、yarn-env.sh、workers、log4j.properties、capacity-scheduler.xml、dfs.hosts、dfs.hosts.exclude

五、Hadoop的伪分布安装流程

1、需要在Linux上先安装JDK,Hadoop底层是基于Java开发的

  • 环境变量的配置主要有两个地方可以配置
/etc/profile:系统环境变量
~/.bash_profile:用户环境变量
环境变量配置完成必须重新加载配置文件
source  环境变量文件路径

2、配置当前主机的主机映射以及ssh免密登录

3、安装本地版本的Hadoop

  • 上传 —— 使用xftp将Windows下载好的hadoop-3.1.4.tar.gz传输到/opt/software目录下
  • 解压 —— tar -zxvf hadoop-3.1.4.tar.gz -C /opt/app
  • 配置环境变量
    • vim /etc/profile
    • export HADOOP_HOME=/opt/app/hadoop-3.1.4
      export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    • source /etc/profile

4、安装伪分布式版本的Hadoop

修改各种各样的hadoop配置文件即可

  • hadoop-env.sh 配置Java的路径
vim hadoop-env.sh
#第54行
export JAVA_HOME=/opt/app/jdk1.8.0_371
#第58行
export HADOOP_HOME=/opt/app/hadoop-3.1.4
#第68行
export HADOOP_CONF_DIR=/opt/app/hadoop-3.1.4/etc/hadoop
#最后一行
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

image-20230718210944383

  • core-site.xml 配置HDFS和YARN的一些共同的配置项
    • 配置HDFS的NameNode路径
    • 配置HDFS集群存储的文件路径
vim core-site.xml
<!--在configuration标签中增加如下配置-->
<configuration>
        <!-- 指定HDFS中NameNode的地址 -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://single:9000</value>
        </property>
        <!-- 指定hadoop运行时产生文件的存储目录  HDFS相关文件存放地址-->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/opt/app/hadoop-3.1.4/metaData</value>
        </property>
        <!-- 整合hive 用户代理设置 -->
        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>

</configuration>

image-20230822161902347

  • hdfs-site.xml 配置HDFS的相关组件
    • 配置NameNode的web访问路径、DN的web访问网站,SNN的web访问路径等等
vim hdfs-site.xml
<configuration>
        <!-- 指定HDFS副本的数量 -->
        <property>
                <name>dfs.replication</name>
            	<!-- hdfs的dn存储的block的备份数-->
                <value>1</value>
        </property>
    <!--hdfs取消用户权限校验-->
       <property>
          <name>dfs.permissions.enabled</name>
          <value>false</value>
      </property>
        <property>
                <name>dfs.namenode.http-address</name>
                <value>0.0.0.0:9870</value>
<!-- 50070,9870--> 
        </property>
        <property>
                <name>dfs.datanode.http-address</name>
                <value>0.0.0.0:9864</value>
<!-- 50075,9864--> 
        </property>
        <property>
                <name>dfs.secondary.http-address</name>
                <value>0.0.0.0:9868</value>
<!-- 50090,9868--> 
        </property>
    <!--用于指定NameNode的元数据存储目录-->
    	<property>
                <name>dfs.namenode.name.dir</name>
                <value>/opt/app/hadoop-3.1.4/metaData/dfs/name1,/opt/app/hadoop-3.1.4/metaData/dfs/name2</value>
        </property>
</configuration>

image-20230822192047054

  • mapred-env.sh 配置MR程序运行时的关联的软件(Java YARN)路径
vim mapred-env.sh
#最后一行
export JAVA_HOME=/opt/app/jdk1.8.0_371

image-20230718212027604

  • mapred-site.xml 配置MR程序运行环境
    • 配置将MR程序在YARN上运行
vim mapred-site.xml
<!-- 指定mr运行在yarn上 -->
  <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
  </property>

  <!-- 指定MR APP Master需要用的环境变量  hadoop3.x版本必须指定-->
  <property>
      <name>yarn.app.mapreduce.am.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <!-- 指定MR 程序 map阶段需要用的环境变量 hadoop3.x版本必须指定-->
  <property>
      <name>mapreduce.map.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
  <!-- 指定MR程序 reduce阶段需要用的环境变量 hadoop3.x版本必须指定-->
  <property>
      <name>mapreduce.reduce.env</name>
      <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
  </property>
<property>
      <name>mapreduce.map.memory.mb</name>
       <value>250</value>
</property>
<property>
      <name>mapreduce.map.java.opts</name>
       <value>-Xmx250M</value>
</property>
<property>
      <name>mapreduce.reduce.memory.mb</name>
       <value>300</value>
</property>
<property>
      <name>mapreduce.reduce.java.opts</name>
       <value>-Xmx300M</value>
</property>
  <property>
      <name>mapreduce.jobhistory.address</name>
       <value>single:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>single:19888</value>
</property>

image-20230718212347926

image-20230822192150660

  • yarn-env.sh 配置YARN关联的组件路径
vim  yarn-env.sh
#最后一行
export JAVA_HOME=/opt/app/jdk1.8.0_371

image-20230718212518831

  • yarn-site.xml 配置YARN的相关组件
    • 配置RM、NM的web访问路径等等
vim yarn-site.xml
<!-- reducer获取数据的方式 -->
  <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
  </property>

  <!-- 指定YARN的ResourceManager的地址 -->
  <property>
        <name>yarn.resourcemanager.hostname</name>
      	<!-- 指定yarn的RM组件安装到哪个主机上-->
        <value>single</value>
  </property>
  <property>
      <name>yarn.application.classpath</name>
      <!-- 指定yarn软件在运行时需要的一些环境路径-->
      <value>
      /opt/app/hadoop-3.1.4/etc/hadoop,
      /opt/app/hadoop-3.1.4/share/hadoop/common/*,
      /opt/app/hadoop-3.1.4/share/hadoop/common/lib/*,
      /opt/app/hadoop-3.1.4/share/hadoop/hdfs/*,
      /opt/app/hadoop-3.1.4/share/hadoop/hdfs/lib/*,
      /opt/app/hadoop-3.1.4/share/hadoop/mapreduce/*,
      /opt/app/hadoop-3.1.4/share/hadoop/mapreduce/lib/*,
      /opt/app/hadoop-3.1.4/share/hadoop/yarn/*,
      /opt/app/hadoop-3.1.4/share/hadoop/yarn/lib/*
      </value>
  </property>
<!-- yarn.resourcemanager.webapp.address:指的是RM的web访问路径-->
<!-- 日志聚集功能启动 -->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
</property>

<property>
       <name>yarn.log.server.url</name>
       <value>http://single:19888/jobhistory/logs</value>
</property>
<!--关闭yarn对虚拟内存的限制检查 -->
<property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
</property>

image-20230718212909109

image-20230822192349611

  • workers/slaves 配置HDFS和YARN的从节点的主机
    • 配置DN和NM在哪些节点上需要安装
vim workers
<!-- 将localhost改为single -->
single

image-20230718213001560

  • log4j.properties —— 配置Hadoop运行过程中日志输出目录
vim log4j.properties
#第19行
hadoop.log.dir=/opt/app/hadoop-3.1.4/logs 
#指定Hadoop运行过程中日志输出目录

image-20230719092759757

六、格式化HDFS集群

hdfs namenode -format

七、启动HDFS和YARN

  • HDFS

    • start-dfs.sh

    报错

    image-20230718213604928

    解决方案:

    vim /etc/profile
    #在最后一行加入以下内容
    # HADOOP 3.X版本还需要增加如下配置
    export HDFS_NAMENODE_USER=root
    export HDFS_DATANODE_USER=root
    export HDFS_SECONDARYNAMENODE_USER=root
    export YARN_RESOURCEMANAGER_USER=root
    export YARN_NODEMANAGER_USER=root
    #然后使配置文件生效
    source /etc/profile
    

    image-20230718213809936

    image-20230718214052308

    • stop-dfs.sh
    • 提供了一个web访问网站,可以监控整个HDFS集群的状态信息
      http://ip:9870 hadoop3.x
      ip:50070 hadoop2.x
  • yarn

    • start-yarn.sh

    image-20230718214130649

    • stop-yarn.sh
    • 提供了一个web网站,可以监控整个YARN集群的状态:
      http://ip:8088

八、Hadoop的完全分布式安装

1、克隆虚拟机

三台虚拟机需要配置IP、主机名、主机IP映射、ssh免密登录、时间服务器的安装同步、yum数据仓库更换为国内镜像源

image-20230719095947238

image-20230719095813819

image-20230719100610519

image-20230719101920020

时间服务器chrony的安装同步

yum install -y chrony

image-20230719103934985

先配置主服务器

vim /etc/chrony.conf

在第7行添加allow 192.168.31.0/24

image-20230719104240688

再配置两台从服务器

vim /etc/chrony.conf

就将3 - 6行的server删除后,添加一行server node1 iburst

image-20230719104606877

开启服务

image-20230719104959143

2、安装JDK

此处省略,如需请查看之前博客

3、安装Hadoop完全分布式

  • hdfs.site.xml
<configuration>
      <property>
          <name>dfs.replication</name>
          <value>3</value>
      </property>
      <!--secondary namenode地址-->
      <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>node3:9868</value>
      </property>
      <!--hdfs取消用户权限校验-->
       <property>
          <name>dfs.permissions.enabled</name>
          <value>false</value>      </property>
      <property>
          <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
          <value>true</value>
      </property>
</configuration>

image-20230719112153586

  • yarn.site.xml
<configuration>
<!-- reducer获取数据的方式 -->
      <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
      </property>
      <!-- 指定YARN的ResourceManager的地址 -->
      <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>node2</value>
      </property>
      <property>
          <name>yarn.application.classpath</name>
          <value>
          /opt/app/hadoop-3.1.4/etc/hadoop,
          /opt/app/hadoop-3.1.4/share/hadoop/common/*,
          /opt/app/hadoop-3.1.4/share/hadoop/common/lib/*,
          /opt/app/hadoop-3.1.4/share/hadoop/hdfs/*,
          /opt/app/hadoop-3.1.4/share/hadoop/hdfs/lib/*,
          /opt/app/hadoop-3.1.4/share/hadoop/mapreduce/*,
          /opt/app/hadoop-3.1.4/share/hadoop/mapreduce/lib/*,
          /opt/app/hadoop-3.1.4/share/hadoop/yarn/*,
          /opt/app/hadoop-3.1.4/share/hadoop/yarn/lib/*
          </value>
      </property>
</configuration>

image-20230719112649613

  • mapred-site.xml
 <!-- 指定mr运行在yarn上 -->
      <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
      </property>
      <property>
          <name>yarn.app.mapreduce.am.env</name>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
      </property>
      <property>
          <name>mapreduce.map.env</name>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
      </property>
      <property>
          <name>mapreduce.reduce.env</name>
          <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
      </property>

image-20230719112903402

共需配置九个相关文件

image-20230719113122255

然后将node1上的/opt/app发送到node2和node3节点上的/opt上

scp -r /opt/app root@node2:/opt

4、格式化HDFS

namenode所在节点格式化

hdfs namenode -format

5、启动HDFS和YARN

1、 HDFS是在namenode所在节点启动(node1)

2、YARN是在RM所在节点启动(node2)

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

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

相关文章

Ext Direct 全解密

Ext Direct 相关的类 Ext Direct旨在通过提供单一接口来简化客户端和服务器之间的通信,从而减少验证数据和处理返回数据包(读取数据、错误条件等)通常需要的公共代码量。 Ext Direct 相关的类基本位于 Ext.direct 包中, 除此之外, 还有Direct类型的数据代码 Ext.data.pr…

linux复习笔记01(小滴课堂)

1.安装CentOs7系统 点击下一步在自定义硬件中&#xff1a; 我们可以删除我们不使用的&#xff0c;后续如果需要再加上即可。 然后我们就可以开启这台虚拟机了。 我们可以进行下载cetos7. 这里选择简体中文就可以。 时间的设置。 可以开启下网络。 在这里选择设置root密码&#…

MybatisPlus 核心功能 条件构造器 自定义SQL Service接口 静态工具

MybatisPlus 快速入门 常见注解 配置_软工菜鸡的博客-CSDN博客 2.核心功能 刚才的案例中都是以id为条件的简单CRUD&#xff0c;一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外&#xff0c;修改、删除、查询的SQL语句都需要指定where条件。因此…

Nginx启动时提示nginx: [emerg] still could not bind()

启动Nginx报这个nginx: [emerg] still could not bind()。 问题原因 nginx启动要使用的端口被占用了 解决方法&#xff1a; 1、根据Nginx配置文件查看配置的端口默认的是80端口&#xff0c;然后我们输出指令查看端口占用情况。 输入命令&#xff1a; netstat -ntlp|grep 8…

Milvus以及Web UI 安装

向量数据库懂的都懂 版本数据 [rootiZ7xv7q4im4c48qen2do2bZ project]# cat /etc/redhat-release CentOS Stream release 9 [rootiZ7xv7q4im4c48qen2do2bZ project]# docker version Client: Docker Engine - CommunityVersion: 24.0.5API version: 1.43Go v…

使用Puppeteer进行游戏数据可视化

导语 Puppeteer是一个基于Node.js的库&#xff0c;可以用来控制Chrome或Chromium浏览器&#xff0c;实现网页操作、截图、测试、爬虫等功能。本文将介绍如何使用Puppeteer进行游戏数据的爬取和可视化&#xff0c;以《英雄联盟》为例。 概述 《英雄联盟》是一款由Riot Games开…

Axure RP PC电商平台Web端交互原型模板

Axure RP PC电商平台Web端交互原型模板。原型图内容齐全&#xff0c;包含了用户中心、会员中心、优惠券、积分、互动社区、运营推广、内容推荐、商品展示、订单流程、订单管理、售后及服务等完整的电商体系功能架构和业务流程。 在设计尺寸方面&#xff0c;本套模板按照主流的…

Qt中布局管理使用总结

目录 1. 五大布局 1.1 QVBoxLayout垂直布局 1.2 QHBoxLayout水平布局 1.3 QGridLayout网格布局 1.4 QFormLayout表单布局 1.5 QStackedLayout分组布局 1.6 五大布局综合应用 2. 分割窗口 3. 滚动区域 4. 停靠区域 1. 五大布局 1.1 QVBoxLayout垂直布局 #include <…

关于el-input和el-select宽度不一致问题解决

1. 情景一 单列布局 对于上图这种情况&#xff0c;只需要给el-select加上style"width: 100%"即可&#xff0c;如下&#xff1a; <el-select v-model"fjForm.region" placeholder"请选择阀门类型" style"width: 100%"><el-o…

Ubuntu 20.04 网卡命名规则

Ubuntu 系统中网卡的命名规则是&#xff1a;Consistent Network Device Naming&#xff08;一致网络设备命名&#xff09;规范。这个规范的原理是根据固件、拓扑和位置信息分配固定名称。其中&#xff0c;设备类型 en 代表 Ethernet (以太网)&#xff0c;wl 代表 WLAN&#xff…

FPGA实现电机转速PID控制

通过纯RTL实现电机转速PID控制&#xff0c;包括电机编码器值读取&#xff0c;电机速度、正反转控制&#xff0c;PID算法&#xff0c;卡尔曼滤波&#xff0c;最终实现对电机速度进行控制&#xff0c;使其能够渐近设定的编码器目标值。 一、设计思路 前面通过SOPC之NIOS Ⅱ实现电…

Python 快速输出接下来几个月的月末日期

# pip install arrow 安装库&#xff08;若已安装 可忽略&#xff09; import arrowEnd_of_month_date [] # 月末日期 for i in range(100):if arrow.now().shift(daysi).format(YYYY-MM-DD)[-2:] 01: # 若日期为 1 号 则返回前一天的日期End_of_month_date.append(arrow.now…

C# winform控件和对象双向数据绑定

实现目的&#xff1a; 控件和对象双向数据绑定 实现结果&#xff1a; 1. 对象值 -> 控件值 2. 控件值 -> 对象值 using System; using System.Windows.Forms;namespace ControlDataBind {public partial class MainForm : Form{People people new People();public Mai…

尚硅谷大数据项目《在线教育之离线数仓》笔记006

视频地址&#xff1a;尚硅谷大数据项目《在线教育之离线数仓》_哔哩哔哩_bilibili 目录 第11章 数仓开发之ADS层 P087 P088 P089 P090 P091 P092 P093 P094 P095 P096 P097 P098 P099 P100 P101 P102 P103 P104 P105 P106 P107 P108 P109 P110 P111 …

RK开发板的USB连接(Ubuntu)

一、安装连接工具 sudo apt-get install putty 二、启动putty工具 sudo putty 三、连接usb&#xff0c;并查看相关的信息 # 查看接入的是否有usb ls /dev/tty* 显示如下&#xff1a;&#xff08;含有usb接口&#xff1a; /dev/ttyUSB0&#xff09; /dev/tty /dev/tty23 /d…

浏览器跨标签通信

写在前面 今天说一下跨标签通信的一种实现方式&#xff0c;首先跨标签指的是同一个浏览器中不同标签之间进行数据通信&#xff0c;也就是说比如在第一个标签写了一个数据&#xff0c;在另一个标签里面进行数据的使用&#xff0c;而且是实时的 先说现象 当我点击发送消息给标签二…

深度学习:基于循环神经网络RNN实现语句生成

目录 1 循环神经网络介绍 1.1 什么是循环神经网络 1.2 RNN的网络结构 1.3 RNN的工作原理 ​编辑 1.4 RNN的应用场景 2 基于RNN实现语句生成 2.1 句子生成介绍 2.2 基于pytorch实现语句生成 2.3 完整代码 2.4 该模型的局限 3 总结 1 循环神经网络介绍 1.1 什么是循环…

【rar密码】rar压缩包密码忘记了,如何解密?

Rar压缩包设置了加密&#xff0c;在解压、修改密码等操作时都需要输入正确的密码。忘记了密码就很麻烦了&#xff0c;如果真的忘记密码&#xff0c;唯一的方法就是找回密码了。 我们自己想要找回密码&#xff0c;最直接简单的就是自己尝试密码。如果压缩包密码是自己设置的&am…

IDEA报错:Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

问题&#xff1a; 使用IDEA新建spring boot项目&#xff0c;报错如下&#xff1a; Plugin org.springframework.boot:spring-boot-maven-plugin: not found解决办法&#xff1a; 1.在本地maven仓库中找到spring-boot-maven-plugin的版本号 2.在pom.xml文件中添加对应的版本…

ubuntu 22.04安装cuda、cudnn、conda、pytorch

1、cuda 视频连接 https://www.bilibili.com/video/BV1bW4y197Mo/?spm_id_from333.999.0.0&vd_source3b42b36e44d271f58e90f86679d77db7cuda 11.8 https://developer.nvidia.com/cuda-toolkit-archive点击进入 https://developer.nvidia.com/cuda-11-8-0-download-arc…