hadoop基础知识

    科技2025-07-08  7

    一、大数据 1.含义 大数据指在一定时间范围内使用常规的软件无法处理的数据集合!

    2.特点 ①海量 ②高增长率 ③多样性 ④低价值密度

    二、Hadoop 1.含义 狭义: Hadoop只代表hadoop框架本身! 广义: hadoop代表整个hadoop体系,由hadoop框架和其他依赖于hadoop的其他框架共同组成!

    2.hadoop的组成 2.x版本

    HDFS: 负责大数据存储的一个分布式文件系统! YARN: 负责为大数据计算程序提供资源申请,管理和调度的框架!

    MapReduce: 编程框架 Common: 常用的工具包

    2.x版本和1.x版本的区别: 在1.x版本,MR既负责运行MR程序还负责为MR程序申请资源!Hadoop集群只能为自身的MR程序提供服务! 在2.x版本,MR只负责MR程序的计算,资源的调度和管理由YARN负责!Hadoop集群,不仅能为自身的MR程序提供服务! 还可以为第三方计算引擎,例如TeZ,Spark,Flink等提供计算资源的调度服务!

    三、HDFS中的核心进程

    1.核心进程 Namenode(1个): 负责HDFS上所有文件元数据的管理! 元数据: 文件的属性(文件名,大小,创建时间,所属主,由哪些块组成)

    职责: ①负责接受客户端的所有请求 ②负责接受DN上报的块信息 ③负责向DN分配任务,例如维护文件的副本数等 Datanode(N个): 负责HDFS上所有文件数据的存储! SecondaryNamenode(N个): 负责协助Namenode工作!

    四、YARN中的核心进程

    1.核心进程 ResourceManager(1个): 负责整个集群所有资源的管理和调度! 职责: ①负责接受客户端的所有请求 ②负责接受NM上报的块信息 ③负责向NM分配任务,例如检查NM是否健康,是否在线等

    NodeManager(N个): 负责当前机器所有资源的管理和调度!

    五、MapReduce中的核心进程

    1.MapReduce是一个编程模型!这个模型由两个阶段组成,一个称为Map阶段,另一个称为Reduce阶段! 在Map阶段和Reduce阶段分别启动若干进程负责运算!这些进程称为Task!

    在Map阶段启动的Task称为MapTask! 在Reduce阶段启动的Task称为ReduceTask! 将一个MapReduce程序称为一个Job! 一个Job中会启动若干个Task! 在Job启动时,Job会先创建一个MRAppMaster进程,由这个进程和RM进行通信,为Job中的每个Task申请 计算所需要的资源! Task的请求,会被RM缓存到一个调度队列中,由NM领取Task,领取后NM会根据Task要求,提供计算资源! 提供后,为了避免计算资源在当前Task使用时被其他的task抢占,NM会将资源封装到一个Container中! Container可以对计算资源进行隔离!

    六、安装 1.环境要求 必须保证已经安装了JDK,有JAVA_HOME环境变量!

    2.安装 解压在linux下编译的Hadoop!

    建议将HADOOP_HOME提升为全局变量! 后续的HADOOP体系中的所有的框架,都通过HADOOP_HOME找到hadoop的安装目录! 将bin,sbin目录配置到PATH中!

    4.目录结构 bin: 常用的工具hadoop所在的目录 sbin: 提供对集群的管理功能,例如启动和停止进程! etc: 默认的配置文件目录

    七、使用

    配置文件 hadoop有4个默认我配置文件,这4个文件会随着Hadoop启动时,自动加载!

    如果希望对这4个文件加载的默认属性进行覆盖!用户需要自定义配置文件! 文件格式: core-site.xml----->core-default.xml hdfs-site.xml----->hdfs-default.xml yarn-site.xml----->yarn-default.xml mapred-site.xml----->mapred-default.xml 配置文件的位置: 自定义位置: hadoop --confdir 配置文件的目录 默认配置文件目录: $HADOOP_HOME/etc/hadoop

    2.HDFS的运行模式

    ①本地模式: 使用当前计算机的文件系统作为HDFS的文件系统! fs.defaultFS=file:///(默认) ②分布式文件系统: 通过运行NN,DN等进程,由这些进程组成一个分布式的系统,进行文件的读写! fs.defaultFS=hdfs://NN所在的主机名:9000

    3.启动一个分布式文件系统 ①在 H A D O O P H O M E / e t c / h a d o o p , 配 置 c o r e − s i t e . x m l f s . d e f a u l t F S = h d f s : / / N N 所 在 的 主 机 名 : 9000 ② 配 置 H a d o o p 默 认 的 工 作 目 录 , 在 HADOOP_HOME/etc/hadoop,配置core-site.xml fs.defaultFS=hdfs://NN所在的主机名:9000 ②配置Hadoop默认的工作目录,在 HADOOPHOME/etc/hadoopcoresite.xmlfs.defaultFS=hdfs://NN:9000HadoopHADOOP_HOME/etc/hadoop,配置core-site.xml hadoop.tmp.dir=配置一个当前用户有写权限的非tmp目录 ③格式化NN hadoop namenode -format 目的: ①生成NN的工作目录 ②在工作目录下生成NN所要使用的特殊的文件,例如VERSION,fsiamge000000 注意: 一个集群搭建完成后,只需要格式化一次!

    ④启动 hadoop-daemon.sh start namenode|datanode

    ⑤查看 jps http://NN所运行的主机名:50070

    4.MR的运行模式 本地模式: 在本机使用多线程的方式模拟多个Task的运行! mapreduce.framework.name=local(默认) 分布式模式: 在YARN上运行! mapreduce.framework.name=yarn(默认)

    5.配置MR在yarn上运行 ①在 H A D O O P H O M E / e t c / h a d o o p , 配 置 m a p r e d − s i t e . x m l m a p r e d u c e . f r a m e w o r k . n a m e = y a r n ② 配 置 Y A R N 在 HADOOP_HOME/etc/hadoop,配置mapred-site.xml mapreduce.framework.name=yarn ②配置YARN 在 HADOOPHOME/etc/hadoopmapredsite.xmlmapreduce.framework.name=yarnYARNHADOOP_HOME/etc/hadoop,配置yarn-site.xml 配置yarn.resourcemanager.hostname=RM运行的主机名 yarn.xxxx-auxservice=mapreduce_shuffle ③启动YARN yarn-daemon.sh start resourcemanager | nodemanager

    ④查看 jps http://rm所运行的主机名:8088

    ⑤提交作业 hadoop jar xxx.jar 主类名 输入目录… 输出目录

    要去: 输出目录必须不存在 输入目录中必须全部是文件
    Processed: 0.009, SQL: 8