Hadoop
目录
初识
分布式与集群
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]
-f覆盖目标文件
-p保留访问和修改时间
例hadoop fs -put file:///etc/profile hdfs://node1:8020/itcase
简写hadoop fs -put /etc/profile /itcase
-get下载文件
hadoop fs -get [ ]
-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中分一半
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工