Handoop教程
3.0中有hdfs、yarn、mapreduce三部分,合为hadoop。
介绍
现状分析(现在)、实时分析(流式处理,秒级别、毫秒级别)
原因分析(过去)、离线分析(批处理)
预测分析(机器学习)
数据分析的基本步骤:(采集、处理、分析、应用)
明确分析目的和思路(分析框架体系化)
数据收集
数据(预)处理(变成干净规整的结构化数据)
数据分析
数据展现
报告撰写
大数据5V特征:
Volume,数据体量大
Variety,种类、来源多样化
Value,低价值密度
Velocity,速度快
Veracity,数据的质量
分布式:多台机器,每台机器上部署不同组件。
集群:多台机器,每台机器部署相同组件。
环境
安装,部署,配置文件,format初始化
手动启停命令
jps查看进程是否启动成功,因为hadoop是用java写的。
hadoop启动日志路径:/export/server/hadoop-3.3.0/logs,注意前面的是安装路径。
hdfs集群
访问地址:http://namenode_host:9870
其中namenode_host是namenode运行机器的主机名或者ip。
yarn集群
访问地址:http://namenode_host:8088
里面可以有hadoop,spark,flink等等。
hdfs命令
1 | hadoop fs -mkdir -p /wordcount/input |
yarn+mapreduce
程序先找resourcemanager(yearn,资源),然后两个阶段,先map阶段再reduce阶段。
1 | cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce/ #安装包下的share文件夹下面会有一些mapreduce示例 |
三个问题:
1、执行mapreduce的时候,为什么现请求yarn
2、mapreduce看上去好像是两个阶段?先map,再reduce?
3、处理小数据的时候,mapreduce速度快吗?
HDFS分布式文件系统基础知识
分布式体现在哪里呢?
文件系统:存储,组织数据,实现了数据的存储、分级组织、访问、获取等操作。用户只需要关注逻辑,不用去管物理层面。
传统的文件系统,基本上是指单机的文件系统,底层不会横跨多台机器。
数据
存储的内容本身,比如文件图片等。数据底层最终存储在磁盘等存储介质上,一般用户无需关心,只需要给予目录树进行增删改啥,针对数据的操作由文件系统完成。
元数据
元数据又称之为解释性数据,记录数据的数据;
文件大小、最后修改时间、底层存储位置、属性、所属用户、权限等信息。
传统的文件系统,在海量数据下,有哪些挑战?
数据量大,单机纵向扩展,存储不下。 所以使用多机横向扩展。
成本高、后期维护、升级扩容成本高。
无法支撑高效率的计算分析。传统的存储是存储,计算是计算,当需要处理数据的时候,把数据移动过来。程序和数据存储属于不同的技术厂商实现,无法有机统一整合在一起。
性能低,单一节点I/O性能瓶颈无法逾越,难以支撑海量数据的高并发高吞吐两场景。
可扩展性差,无法实现快速部署和弹性扩展,动态扩容、缩容成本高,技术实现难度大。
分布式存储系统核心属性
- 分布式存储。数据量大,单机纵向扩展,存储不下。 所以使用多机横向扩展。
- 元数据记录。文件分布在不同机器上不利于寻找,所以元数据记录下文件及其存储位置信息(文件名、大小、存储机器IP),快速定位文件位置。
- 分块存储。文件过大导致单机存储不下,上传下载效率低。所以文件分块存储在不同机器,针对块并行操作提高效率。
- 副本机制。硬件故障难以避免,数据容易丢失。所以不同机器之间设置备份,冗余存储,保障数据安全。
HDFS(Hadoop DIstributed FIle System)简介
Hadoop是Apache Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在,也可以说大数据首先要解决的问题就是海量数据的存储问题。
HDFS使用多台计算机存储文件,并且提供统一的访问接口。
HDFS重要特性
1、主从架构:一个Namenode,五个从结构datanode。这五个从角色位于两个机架,rack指的是机架,绿色的指块,这六个会有抽象统一的目录树结构。
2、分块存储:物理上分块存储,默认大小是128M,不足128M就是一块。块的大小配置参数决定,参数位于hdfs-default.xml中:dfs.blocksize。
3、副本机制:由参数dfs.replication控制,默认值是3,就是额外复制2份,连同本身总共3份副本。
4、元数据管理(Namenode管理):两种类型,1、文件自身属性信息:文件名称、权限、修改时间、文件大小、复制因子、数据块大小。2、文件块位置映射信息:记录文件块和DateNode之间的映射信息,即哪个块位于哪个节点上。
5、抽象统一的目录树结构(namespace):支持传统的层次性文件组织结构。用户只需要在客户端上面通过统一的抽象目录树进行管理。
6、数据块存储:文件的各个block具体存储管理由DataNode节点承担。每一个block都可以在多个DataNode上存储。
HDFS Shell CLI命令行使用
hadoop fs [generic options]
HDFS Shell CLI 支持操作多种文件系统,包括你本地文件系统(file:///)、分布式文件系统(hdfs://nn:8020)
具体操作什么文件系统取决于命令中文件路径URL的前缀协议
如果没有置顶前缀,将会读取环境变量中的fs.defaultFS属性
1 | cat /export/server/hadoop-3.3.0/etc/hadoop/core-site.xml |
1 | hadoop dfs |
常用操作
1 | hadoop fs -mkdir [-p] [<path> ...] # 递归创建 |
角色
主角色:NameNode
Hadoop分布式文件系统的核心,架构中的主角色。
维护和管理文件系统元数据,包括名称空间目录树结构、文件和块的位置信息、访问权限等信息。
NameNode成为了访问HDFS的唯一入口。
namenode内部通过 内存 和 磁盘文件 两种方式管理元数据,定时合并持久化等等。
其中磁盘上的元数据文件包括Fsimage内存元数据镜像文件和edits log(Journal)编辑日志。
从角色:DataNode
HDFS中的从角色,负责具体的数据块存储。
DataNode的数量决定了HDFS集群的的整体数据存储呢你。通过和NameNode配合维护着数据块。
主角色辅助角色:SecondaryNameNode
充当NameNode的辅助节点,当不能替代NameNode。
主要帮助主角色进行元数据文件的合并动作,可以通俗的理解为主角色的”秘书“。
写数据完整流程(上传)
Pipeline管道。
HDFS在上传文件写数据过程中采用的一种数据传输方式。
客户端将数据块写入第一个数据节点,第一个数据节点保存数据之后再将块复制到第二个数据节点,后者保存后将其复制到第三个数据节点。(使用pipeline线性传输,而不是拓扑式传输,能够充分利用每个机器的带宽,避免网络瓶颈和高延迟时的连接,最小化推送所有数据的延时。)
在线性推送模式下,每台机器所有的出口宽带都用于以最快的速度传输数据,而不是在多个接受者之间分配宽带。
ACK应答响应
在HDFS pipeline管道传输数据的过程中,传输的反方向会进行ACK校验,确保数据传输安全。
默认3副本存储策略
默认副本存储策略是由BlockPlacementPolicyDefault指定。
第一块副本:优先客户端本地,否则就近随机。
第二块副本:不同于第一块副本的不同机架。
第三块副本:第二块副本相同机架不同机器。
整个上传流程
就是一股股水流流动,达到64k一股水流流动,默认三副本存储
Hadoop MapReduce
分而治之思想、设计构思、官方示例、执行流程
Hadoop YARN
介绍、架构组件、程序提交交互流程、调度器
MapReduce思想
先分再和,分而治之。
把一个复杂的问题,按照一定的分解方法,分为等价的规模较小的若干部分,然后逐个解决,分别找出各个部分的结果,然后把各个部分的结果组成整个问题的最终结果。
Map表示第一阶段,拆分。拆分为若干个“简单子任务”来并行处理,可以拆分的前提是这些小任务可以并行计算,彼此之间没有依赖关系。
Reduce表示第二阶段,合并。挤兑map阶段的结果进行全局汇总。
这两个阶段合起来正是MapReduce思想的体现。
Author: Jcwang
Permalink: http://example.com/2022/11/29/handoop/