Hadoop

家电修理 2023-07-16 19:17www.caominkang.com电器维修

目录

初识

分布式与集群

HDFS YARN MapReduce

HDFS集群  YARN集群

分布式存储系统

安装部署

下载 编译

集群角色规划

服务器基础环境配置

安装包结构

修改配置文件同步安装包与环境变量

format初始化操作

 集群启停命令

手动逐个进程启停

shell脚本一键启停

进程状态日志查看(网页)

体验

HDFS

初识

shell命令行

文件系统协议

shell命令行常用操作

HDFS工作流程机制

HDFS集群角色与职责

HDFS写数据流程(上传文件)pipeline

 MapReduce

初识

数据类型

特点

实例进程

阶段组成

Hadoop MapReduce官方示例

示例文件

评估圆周率的值

ordcount单词词频统计

Map阶段执行流程

 reduce阶段执行流程

shuffle机制

YARN

初识

简介

架构图 角色

程序提交YARN交换流程

YARN资源调度器Scheduler

三种调度器

 FIFO Scheduler(先进先出调度器)

 Capacity Schedulere容量调度

 Fair Scheduler(公平调度器)


初识

分布式与集群

分布式多台机器,每台机器上部署不同组件

集群多台,每台机器部署相同组件

hadoop集群分两个HDFS集群 YARN集群

HDFS YARN MapReduce

HDFS:分布式文件存储系统

YARN集群资源管理和任务带哦都框架,解决资源任务调度

MapReduce分布式计算框架解决海量数据计算

HDFS集群  YARN集群

HDFS主NameNode  从DateNode 主辅SecondaryNameNode

YARN主ResourceManager 从NodeManager

 (每个框都是进程java)

分布式存储系统

文件系统数据  元数据(文件大小、修改时间、用户等信息)

属性分布式存储(横向延申) 元数据记录(记录了每个文件在那个机器上)分块存储(针对性高) 副本机制

安装部署

下载 编译

下载hadoop-3.3.0-......

(编译好的) 

集群角色规划

(上图)

服务器基础环境配置

主机名

cat /etc/hostname

hosts映射

vim /etc/hosts

关闭防火墙

systemctl s firealld.service

systemctl disable firealld.service

ssh免密登陆

(100上)ssh-keyen(生成公钥、私钥)

ssh-copy-id 主机1、2、3 (复制到其他机器)

 时间同步(所有机器执行)

yum -yinstall ntpdate

ntpdate ntp4.aliyun. 

创建统一工作目录(所有机器执行)

mkdir -p /export/server/(软件安装路径)

mkdir -p /export/date/(数据存储路径)

mkdir -p /export/softare(安装包存储路径)

安装JDK(所有机器)

安装到/export/server/下(文件安装包在D盘easy)

tar -zxvf jdk-8u241-linux(解压)

可rm原安装包

配置环境变量

vim /etc/profile

加上

export JAVA_HOME=/export/server/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 source /etc/profile(重新加载)

java -version(验证是否安装成功)

scp -r /export/server/jdk1.8.0_241/ 用户名@ip:/export/server/(拷贝,剩下机器都操作)

scp /etc/profile 用户@ip:/etc/(拷贝环境变量)

source /etc/profile(所有机器)

java -version(验证是否安装成功 所有)

安装包结构

hadoop上传解压

cd /export/server/

上传文件

tar -zxvf hadoop......(解压)

rm安装包    cd进去

安装包结构

bin:Hadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管
理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop

etcHadoop配置文件所在的目录

sbinHadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/
关闭脚本

shareHadoop各个模块编译后的jar包所在的目录,官方自带示例

修改配置文件同步安装包与环境变量

cd  /export/server/hadoop-3.3.0/etc/hadoop(所有配置文件都在)

hadoop-env.sh

 #文件添加
 #指定java路径
 export JAVA_HOME=/export/server/jdk1.8.0_241
 
 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 
 #指定各个进程运行的用户名

core-site.xml(核心配置文件)

两个(config.....中间)


 
  fs.defaultFS
  hdfs://node1:8020
 
 
 
 
  hadoop.tmp.dir
  /export/data/hadoop-3.3.0
 
 
 
 
  hadoop.http.staticuser.user
  root
 
 
 
 
  hadoop.proxyuser.root.hosts
  
 
 
 
  hadoop.proxyuser.root.groups
  
 
 
 
 
  fs.trash.interval
  1440
 

hdfs-site.xml(hdfs文件系统模块配置)
两个(config.....中间)

 
 
  dfs.namenode.secondary.http-address
  node2:9868
 

 mapred-site.xml(MapReduce模块配置)


 
   mapreduce.frameork.name
   yarn
 
 
 
 
   mapreduce.jobhistory.address
   node1:10020
 
  
 
 
   mapreduce.jobhistory.ebapp.address
   node1:19888
 
 
 
   yarn.app.mapreduce.am.env
   HADOOP_MAPRED_HOME=${HADOOP_HOME}
 
 
 
   mapreduce.map.env
   HADOOP_MAPRED_HOME=${HADOOP_HOME}
 
 
 
   mapreduce.reduce.env
   HADOOP_MAPRED_HOME=${HADOOP_HOME}
 

同上

yarn-site.xml(yarn模块配置)


 
 	yarn.resourcemanager.hostname
 	node1
 
 
 
  yarn.nodemanager.aux-services
  mapreduce_shuffle
 
 
 
 
  yarn.nodemanager.pmem-check-enabled
  false
 
 
 
 
  yarn.nodemanager.vmem-check-enabled
  false
 
 
 
 
   yarn.log-aggregation-enable
   true
 
 
 
 
  yarn.log.server.url
  http://node1:19888/jobhistory/logs
 
 
 
 
   yarn.log-aggregation.retain-seconds
   604800
 

(同上,删除两个中间的注释)

vim orkers

node1.itcast.
node2.itcast.
node3.itcast.

替换原内容

分发同步hadoop安装包
cd /export/server
 scp -r hadoop-3.3.0 root@ip:$PWD

 scp -r hadoop-3.3.0 root@ip:$PWD

将hadoop添加到环境变量(3台机器)

  vim /etc/profile

export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

  source /etc/profile

scp /etc/profile 主机名:/etc/

source /etc/profile(所有机器)

hadoop(所有,验证)

format初始化操作

格式化 (初始化只能一此不能多次)

hdfs namenode -format

验证(出现这句话成功)

成功

 集群启停命令

手动逐个进程启停

可以精准控制每个进程启停

HDFS

hadoop2.0版本

hadoop-daemon.sh start|s namenode|datanode|secondarynamenode

hadoop3.0版本

hdfs --daemon start|s name|datanode|secondarynamenode

YARN集群

hadoop2.0版本

yarn-daemon.sh start|s resourcemanager|nodemanager

hadoop3.0版本

yarn --daemon start|s resourcemanager|nodemanager

shell脚本一键启停

(前提配置好机器间的 SSH免密 和orkers文件)

HDFS集群

start-dfs.sh

s-dfs.sh

YARN集群

start-yarn.sh

s-yarn.sh

Hadoop集群(全的)

start-all.sh

s-all.sh

(启动一下  用jps命令验证是否成功(验证所有))

进程状态日志查看(网页)

启动完毕后可以用

jps命令查看

Hadoop启动日志路径/export/server/hadoop-3.3.0/logs/

官方提供的eb页面

HDFS

地址http://namenode_host:9870 (最常用上面绿框Utilities  Brose)(主机名9870)

输入的是node1:9870(第一台机器)

YARN

resourcemanager_host:8088(主机名8088)

node1:8088

体验

(HDFS)

hadoop fs -ls /

hadoop fs -mkdir /itcast(到9870上查看Brose可观察目录详细信息)

hadoop fs -put 本地文件 路径(上传文件到集群)

也可在eb页面上进行操作

 创建新目录

上传indos文件 

 (MapReduce)

cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce/

hadoop jar hadoop-mapreduce-examples-3.3.0 jar pi 2 2(用官方示例计算圆周率)

8088刷新

家目录下创建文件随便输入内容(统计单词出现次数)

hadoop fs -mkdir -p /ordcount/input

hadoop fs -put 文件 /ordcount/input

cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce

hadoop jar hadoop-mapreduce-examples-3.3.0 jar ordcount /ordcount/input /ordcount/output

HDFS 初识

HDFS(hadoop distributed file system)hadoop分布式文件系统

解决海量数据存储

 特性:主从架构(一个NameNode主节点 多个DataNode从节点(一个集群))

分块存储 (块大小默认128mb 如果文件小于128不分块 本身一块)(块大小 hdfs-default.xml 文件中调dfs.blocksize参数可调整)

副本机制(所有块都有副本,由参数dfs.replication控制,默认3(额外复制两份))

元数据记录(Namenode管理的元数据分为两类 1文件自身属性(名字、权限~)2文件块位置映射(那个块位于哪个节点上))

抽象统一的目录数结构(namespace)

shell命令行

文件系统协议

操作什么文件系统取决于URL的前缀协议

hadoop fs -ls file:///(操作本地文件系统)(linux虚拟机上的)

hadoop fs -ls hdfs://node1:8020/(操作HDFS分布式文件系统)(与9870对应)

hadoop fs -ls/(直接根目录,没有指定协议,将直接加载读取fs.defaultFS值)(默认为HDFS文件系统 可/hadoop-3.3.0/etc/hadoop/core-site.xml中修改)

hadoop文件系统shell命令行客户端

hadoop fs [ ]

hdfs dfs []只能hdfs系统

shell命令行常用操作

大多数与linux相似 例子

hadoop fs -mkdir [ ] path

                 -ls [ ] path(参数-h :人性化查看文件size)

                  -cat  

                   -tail 

                   -cp [-f(覆盖目标文件)] /本地 /HDFS

                   -mv ...  

put上传文件

-put [-f] (本地(你操作的机器)文件系统)...< dst>(目标文件系统) 

-f覆盖目标文件

-p保留访问和修改时间

例hadoop fs -put file:///etc/profile hdfs://node1:8020/itcase

简写hadoop fs -put /etc/profile /itcase

-get下载文件

hadoop fs -get [ ] (HDfs)...(本地)

-f覆盖目标文件

-p保留访问和修改时间 

同put

追加数据到HDFS

hadoop fs -appendToFile ...

本地文件追加到给定dst文件(文件不存在创建)

例子hadoop fs -appendToFile 1.txt 2.txt /3.txt

HDFS工作流程机制

HDFS集群角色与职责

主角色namenode 

维护管理文件系统元数据(空间目录树结构、文件和块的位置信息、访问权限)

大量内存

文件系统入口

从角色:datanode

负责具体的数据块存储

大量内存

主角色辅助角色secondraynamenode

是namenode的辅助节点,帮助主角色进行元数据文件的合并

HDFS写数据流程(上传文件)pipeline

pipeline管道上传文件时的一种数据传输方式、

三个副本

ACK 应答响应(确保数据传输安全)

 

默认三副本存储策略

第一个副本优先客户端本地,否则随机

二不同于第一块的不同机架

三二相同机架不同机器

 

 MapReduce 初识

分布式计算框架

分而治之

Map拆分成可以计算的小任务(任务之间不能有依赖关系)

Reduce对map结果进行全局汇总

数据类型

MapReduce处理的数据类型是键值对

map: (k1;v1) --->(k2;v2)

reduce:(k2;[v2])-->(k3;v3)

特点

统一架构,隐藏底层细节

易于编程 ,良好的拓展性

实时计算性差 不能进行流式计算

实例进程

MRAppMaster负责整个MR程序的过程调度及状态协调

MapTask负责map阶段的整个数据处理流程

ReduceTask负责reduce阶段的整个数据处理流程

阶段组成

一个MapReduce编程模型只能保护一个Map或Reduce

Map完必须是Reducer

Hadoop MapReduce官方示例

一个完整的MR程序用户自己编写的代码+Hadoop自己实现的代码

示例文件

示例程序路径/export/server/hadoop-3.3.0/share/hadoop/mapreduce/

实例程序hadoop-mapreduce-examples-3.3.0.jar

MapReduce程序提交命令[hadoop jar|yarn jar]hadoop-mapreduce-examples-3.3.0.jar(文件路径) arg(参数)

提交到YARN上运行

评估圆周率的值

jps看集群是否启动

hadoop jar hadoop-mapreduce-examples-3.3.0.jar(注意路径)pi  10 50

二三是撒点数(撒点法计算圆周率)

第一个参数pi计算圆周率

二指定map阶段运行的任务task次数,并发度

三每个map任务取样的个数

ordcount单词词频统计

实现思路

9870上传文件到input(自己创目录)

hadoop jar hadoop-mapreduce-examples-3.3.0.jar ordcount  /input /output

输出 输入路径

输出一个成功表示文件

Map阶段执行流程

(以ordcount为例)

第一阶段输入文件按标准逐个行逻辑切片 切片大小默认128m 每个切片由一个MapTask处理

二按行读数据 返回键值对 k是每一行起始偏移量 v值是文件内容

三处理数据 每读一个键值对 调用一次map方法

第四阶段按照一定的规则对Map输出的键值对进行分区partition。默认不分区,因为只有一个reducetask      分区的数量就是reducetask运行的数量

第五阶段Map输出数据写入内存缓冲区,达到比例溢出到磁盘上。溢出spill的时候根据key进行排序 sort     默认根据key字典序排序

 第六阶段对所有溢出文件进行最终的merge合并,成为一个文件

 reduce阶段执行流程

第一阶段ReduceTask会主动从MapTask复制拉取属于需要自己处理的数据

二数据进行合并,对合并后的数据排序

三对排序后的键值对调用reduce方法,键相等的调用一次reduce方法 把这些键值对写入HDFS文件中。

shuffle机制

46

YARN 初识

简介

YARN(yet another resource negotiator)另一种资源协调者 hadoop资源管理器

一个统用的资源管理器和调度平台

YARN可以理解为相当于一个分布式的操作系统平台,MapReduce等计算程序则相当于运行于操作
系统之上的应用程序,YARN为这些程序提供运算所需的资源。

架构图 角色

Container容器(资源的抽想)(容器之间隔离 保证一台机器多个程序运行)

YARN3大组件

ResourceManager NodeManager  集群物理层面

ApplicatioMaster(App Mstr) App层面

ResourceManager

YARN集群中的主角色,决定系统中所有应用程序之间资源分配的最终权限,即最终仲裁者。
接收用户的作业提交,并通过NM分配、管理各个机器上的计算资源。

NodeManager

YARN中的从角色,一台机器上一个,负责管理本机器上的计算资源,根据RM命令,启动Container容器、监视容器的资源使用情况。并且向RM主角色汇报资源使用情况。

ApplicationMaster

用户提交的每个应用程序均包含一个AM,应用程序内的“老大”,负责程序内部各阶段的资源申请,监督程序的执行情况。

程序提交YARN交换流程

 当用户向 YARN 中提交一个应用程序后, YARN将分两个阶段运行该应用程序 。
 第一个阶段是客户端申请资源启动运行本次程序的ApplicationMaster;
 第二个阶段是由ApplicationMaster根据本次程序内部具体情况,为它申请资源,并监控它的整个运行过程,直到运行完成。

只有RM能申请资源

49

YARN资源调度器Scheduler

在YARN中,负责给应用分配资源的就是Scheduler,它是ResourceManager的核心组件之一

三种调度器

FIFO Scheduler(先进先出调度器)

Capacity Scheduler(容量调度器)

Fair Scheduler(公平调度器)

Apache版本YARN默认使用Capacity Scheduler(可以在yarn-site.xml中的yarn.resourcemanager.scheduler.class进行修改 配置)

 FIFO Scheduler(先进先出调度器)

 FIFO Scheduler是一个先进先出的思想,先提交的应用先运行

FIFO Scheduler拥有一个控制全局的队列queue,默认queue名称为default,该调度器会获取当前集群上所有的资源信息作用于这个全局的queue

 Capacity Schedulere容量调度

允许多个组织共享整个集群资源 每个组织可以获得集群的一部分计算能力。

通过为每个组织分配专门的队列,然后再为每个队列分配一定的集群资源

 Fair Scheduler(公平调度器)

只有A 全给A

来了B 给B一半  B新增作业  B中分一半

Copyright © 2016-2025 www.caominkang.com 曹敏电脑维修网 版权所有 Power by