个人主页:💗wei_shuo的个人主页
🏀 Hello World !🏀
Hadoop3.0-Hdfs
大数据特点(5V特征):
Volume(数据体量大)
采集数据量大
储存数据量大
计算数据量大
TB、PB级别起步
Variety(种类多元多样化)
种类:结构化、半结构化、非结构化
来源:日志文本、图片、音频、视频
value(低价值密度)
信息海量但是价值密度低
深度复杂的挖掘分析需要机器学习参与
Velocity(速度快)
数据增长速度快
获取数据速度快
数据处理速度快
Veracity(数据的质量)
数据的准确性
数据的可信赖度
分布式技术
分布式系统的概述
分布式系统是一个硬件或软件组件分布在不同的网络计算机上
彼此之间仅仅通过消息传递进行通信和协调的系统
一群相互独立的计算机集合共同对外提供服务
对于系统的用户来说,就像一台计算机提供服务一样
分布式、集群
分布式:多台机器、每台机器上部署不同组件
集群:多台机器、每台机器上部署相同组件
负载均衡(解决一个处理不了多个处理)
- 将负载(工作任务)进行平衡、分摊到多个操作单元上来进行运行
- 解决了单个无法处理所有任务,多个一起处理的问题
故障转移(解决单点故障 容忍错误发生 业务连续)
- 当活动的服务或应用意外终止时,快速启动冗余或备份的服务器、系统、硬件或者网络接替他们工作
- 故障转移系统也称之为容错系统,所谓容错指的是可以容许错误的发生
- 故障转移的核心是设置备份 出现故障时 准备切换
- 故障转移的前提是数据状态保持一致
伸缩性(动态扩容缩容)
- 伸缩性也叫做弹性,可扩展性
- 指系统可以根据需求动态的扩容、缩容
- 比如双十一业务高峰期,增加服务器;业务低峰期,减少服务器
Apache Hadoop概述
- 狭义上的Hadoop指软件 广义上的Hadoop指生态圈
- Hadoop之父Doug Cutting
- Hadoop起源于Nutch项目
- 受Google3篇论文启发
- 2008年开源给Apache软件基金会
Hadoop介绍
- 狭义上Hadoop指的是Apache的一款开源软件。
用java语言实现开源软件框架
允许使用简单的编程模块跨计算机集群对大型数据及进行分布式处理
- Hadoop核心组件
Hadoop HDFS(分布式文件储存系统):解决海量数据储存
Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度
Hadoop MapReduce(分布式计算框架):解决海量数据计算
Hadoop特性优点
扩容能力
Hadoop是在可用的计算机集群间分配数据并完成计算任务这些集群可以方便的扩展到数以千记得节点中
成本低
Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低
效率高
通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速读非常快
可靠性
能自动维护数据的多份复制,并且在任务失败后能自动的重新部署计算任务。所以Hadoop的按位储存和处理数据的能力值得人们信赖
Hadoop集群搭建
Hadoop集群简介
- Hadoop集群包括两个集群:HDFS集群、YARN集群
- 两个集群逻辑、通用物理上在一起
- 两个集群都是标准的主从架构集群
HDFS集群(分布式储存)
主角色:NameNode
从角色:DataNode
主角色辅助角色:SecondaryName
YARN集群(资源管理调度)
主角色:ResourceManager
从角色:NodeManager
Hadoop部署模式
- 单机模式
1个机器运行1个java进程,所有角色在一个进程中运行,主要用于调试
- 伪分布式
一个机器运行多个进程,每个角色一个进程,主要用于调试
- 集群模式
集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。
- HA高可用
在集群模式的基础上为单点故障部署备份角色,形成准备架构,实现容错
HDFS分布式文件系统
如何模拟实现分布式文件储存
- 如何解决海量数据下的——分布式储
- 如何解决海量数据文件查询便捷——元数据记录
- 如何解决大文件传输效率慢——分块储存
- 如何解决硬件故障数据丢失——副本机制
- 如何解决用户查询视角统一规整——抽象目录树结构
HDFS应用场景
适合场景:大文件 数据流式访问 一次写入多次读取 低成本部署,廉价CP 高容错
不适合场景:小文件 数据交互式访问 频繁任意修改 低延迟处理
HDFS重要特性
- 主从架构
- 分块存储
- 副本机制
- namespace
- 元数据管理(由NameNode管理)
数据元具有两种类型:
- 文件自身属性信息:文件名称、权限、修改时间、文件大小、复制因子、数据块大小
- 文件快位置映射信息:记录文件块和NameNode之间的映射信息,即哪个块位于哪个节点上
- 数据块存储(由DataNode节点承担)
HDFS Java 客户端 API
客户端核心类
- Configuration 配置对象类,用于加载或设置参数属性
- FileSystem文件系统对象基类。针对不同文件系统有不同具体体现。该类封装了文件系统的相关操作方法。
构建开发环境
- 创建Maven项目
- 添加依赖和编译打包插件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.itcast.hadoop</groupId>
<artifactId>example-hdfs</artifactId>
<version>1.0</version>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>