一.大数据概况
1.什么是大数据>>hadoop?
大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。
2.大数据的特征
- 4V+1O特征
Volume(大数据量):90% 的数据是过去两年产生
Velocity(速度快):处理速度,数据增长速度快,时效性高
Variety(多样化):数据种类和来源多样化(结构化数据、半结构化数据、非结构化数据)
Value(价值密度低):需挖掘获取数据价值
Online(数据在线):数据时永远在线的,区别于传统数据最大的特点 - 固有特征
Time-base:时效性
Immutable:不可变性(同一时间,数据是不可变的)
3.传统处理模式数据传输(通过提升服务器本身[CPU]的能力来提升处理能力)
- 处理前
Client–request–>Web Server–>Application Server–>database Server - 处理完后
Db Server–>Application Server–>Web Server–>Client(响应数据量不会太大)
4.新的分布式计算(云平台:传输快)
分布式数据存储
分布式计算
分开存储计算
5.谷歌三大论文(数据库)
2003 -->GFS(Google 文件系统)–>数据分布式存储
2004 -->Google MapReduce–>分布式计算(处理)
2005–>BigTable–>分布式数据存储系统
6.分布式计算(分布式计算将较大的数据分成小的部分进行处理)
\ | 传统分布式计算 | 新的分布式计算 - Hadoop |
---|---|---|
计算方式 | 将数据复制到计算节点 | 在不同数据节点并行计算 |
可处理数据量 | 小数据量 | 大数据量 |
CPU性能限制 | 受CPU限制较大 | 受单台设备限制小 |
提升计算能力 | 提升单台机器计算能力 | 扩展低成本服务器集群 |
注:
传统分布式计算读取有优势,最差的是一行一行的读取,而hadoop会将所有节点的block块全部遍历一遍
二、Hadoop
1.Hadoop是什么?
(1)Hadoop是一个开源分布式系统架构
- 分布式文件系统HDFS——解决大数据存储
- 分布式计算框架MapReduce——解决大数据计算
- 分布式资源管理系统YARN
(2)处理海量数据的架构首选
(3)非常快得完成大数据计算任务
(4)已发展成为一个Hadoop生态圈
(5) 容错处理(安全性)
2.Hadoop起源
Hadoop起源于搜索引擎Apache Nutch
创始人:Doug Cutting
3.使用Hadoop优势
- 高扩展性,可伸缩:scalable:通过增加节点提升存储空间,存储处理
- 高可靠性(多副本机制,容错高): Faulit Tolerant 容错处理()
- 低成本
- 无共享架构:Cost Effective(share nothing 每台节点不沟通不共享)
- 灵活,可存储任意类型数据 Flexible schema(格式)
- 开源,社区活跃
4.Hadoop与关系型数据库对比
\ | RDBMS | Hadoop |
---|---|---|
格式 | 写数据时要求 | 读数据时要求 |
速度 | 读数据速度快 | 写数据速度快 |
数据监管 | 标准结构化 | 任意结构数据 |
数据处理 | 有限的处理能力 | 强大的处理能力 |
数据类型 | 结构化数据 | 结构化,半结构化,非结构化 |
应用场景 | 交互式OLAP分析,ACID事务处理,企业业务系统 | 处理非结构化数据,海量数据存储计算 |
5.Hadoop生态圈
-
Core HadoopHadoop核心
*HDFS(存储)、MapReduce1.0(计算(处理)框架、应用程序)、YARN(资源管理) -
query数据查询分析
*Hive(基于mysql/其他数据库语言的MR程序,可用Spark,Tez)、Pig(脚本语言,过时被spark代替)、Impala(和Hive一样,但性能不行)、Presto(性能更好,局限性(数据量受限)) -
Hive下
*Spark、Tez (比MR更强大,但应用面窄)、MapReduce2.0 -
Coordination and Management协调管理
HCatalog(元数据管理(关于数据表的信息,数据质量的信息等))、Zookeeper(软件,解决集群管理)、Ambari(环境软件,可视化hadoop系统管理平台) -
Data piping数据迁移
Sqoop(RGB和hadoop互传)、Flume(数据传输实时数据为主,如日志分析处理) -
Machine learning 机器学习库
Mahout(被spark代替) -
NoSQL Datebase
Hbase(不写sql语句,非关系型(无格式)、列存储),Oozie(任务定时,定序系统管理) -
支持sql
Impala、Presto、Hive、Spark、Sqoop
6.Zookeeper
(1)是一个分布式应用程序协调服务,解决分布式集群中应用系统的一致性问题
(2)提供的功能:配置管理、命名服务、分布式同步、队列管理、集群管理等
(3)特性:
- 全局数据一致
- 可靠性、顺序性、实时性
- 数据更新原子性
(4)Zookeeper集群
- 角色:Leader、Follower、Observer
*7.Hadoop架构
- HDFS(Hadoop Distributed File System):分布式文件系统,解决分布式存储
- MapReduce:分布式计算(处理)框架
- YARN:分布式资源管理系统(在Hadoop 2.x中引入)[resoucemanager],可以理解为hadoop上的操作系统
- Common:支持所有其他模块的公共工具程序
hadoop1.0 HDFS+MapReduce(应用负责资源管理项目)
hadoop2.0 HDFS+YARN(分出资源管理)+(MapReduce+Other)[应用类型]
hadoop3.0 性能改进、增加Erasure code(纠删码保证数据的安全、高可靠性)
- 增强前:默认每个block块有3个备份;自动修复,备份; 确保在block块受损时动态增加备份
- 增强后:每个block块有1个备份,如果一个block块和其备份丢失,则通过纠错码进行计算初丢失的数据;
三.HDFS(分布式存储文件系统)
1.HDFS角色
(1)Client:客户端(Edge Node边节点是在集群外面的节点,不允许直接读取)---->负责数据存储、读取
(2)NameNode (NN):元数据节点---->存储到内存中
- 管理文件系统的Namespace(目录,块)/元数据
- 一个HDFS集群只有一个Active的NN
- Standby Node:高可用备用节点
- 2.0后会存在两个NN,其中一个运行,另一个(备用)处于休眠状态只有当运行的NN挂了才会启动
注:元数据,最小的数据单位
(3)DataNode (DN):数据节点---->存储到block块中
- 数据存储节点,保存和检索Block
- 一个集群可以有多个数据节点
- 数据存储与处理
(4)Secondary NameNode (SNN):从元数据节点
- 合并NameNode的edit logs到fsimage文件中(路径hadoop/tmp/dfs/name/current/)
- 辅助NN将内存中元数据信息持久化
- NameNode的助手
-
Clients---->Job Tracker (在NN上)<---->多个Task Tracker<----多个Task(每一个块)
Client请求---->namenode 生成任务跟踪器Job Tracker---->在对应datanode的block基础上生成tesk
shuffle负责管理哥哥task之间的关系,多个task之间的数据合并 -
MR2.0+yarn:
client请求---->NN调度RM(yarn负责)---->RM调度NM(每个节点不同,动态)---->app master(任务主负责节点)---->申请不同容器(resouece requirement) -
HDFS写文件
-
HDFS读文件
2.HDFS副本机
(1)Block:数据块 -
HDFS最基本的存储单元
-
默认块大小:128M(2.x)
(2)副本机制
- 作用:避免数据丢失
- block副本数默认为3
- 存放机制:
一个在本地机架节点
一个在同一个机架不同节点HDFS高可用(High Availability)
一个在不同机架的节点
3.HDFS高可用(High Availability)
(1)在1.x版本中
- 存在Namenode单点问题
(2)在2.x版本中 - 解决:HDFS Federation方式,共享DN资源
- Active Namenode (对外提供服务)
- Standby Namenode (是NameNode的备用节点,Active故障时可切换为Active)
4.HDFS文件格式
(1)HDFS支持以不同格式存储所有类型的文件
- 文本、二进制
- 未压缩、压缩(记录、块)
(2)为了最佳的Map-Reduce处理,文件需可分割 - SequenceFile
- Avro File
- RCFile&ORCFile
- Parquet File
5.HDFS(主从)架构
- 采用master/slave架构
master:NameNode
slave:DataNode
6.HDFS特点
(1)HDFS优点
- 支持处理超大文件
- 可运行在廉价机器上
- 高容错性
- 流式文件写入
(2)HDFS缺点
- 不适合低延时数据访问场景
- 不适合小文件存取场景
- 不适合并发写入,文件随机修改场景
7.HDFS CLI (命令行)
(1)基本格式(输入hdfs dfs可以查看)
hdfs dfs -cmd
hadoop fs -cmd(已过时)
- 命令和Linux相似
-ls 查看
-mkdir 创建目录
-mkdir -p 递归创建
-put 将本地文件传输到hdfs目录下
-rm [-skipTrash]删除
-rm -r -f [-skipTrash]递归删除
-rmdir删除文件夹
-du 统计目录下文件大小
-get 将hdfs文件copy到本地文件
-help 帮助
(2)hdfs dfsadmin 命令用于管理HDFS集群
命令 | 描述 |
---|---|
hdfs dfsadmin -report | 返回集群的状态信息 |
hdfs dfsadmin -safemode enter/leave | 进入和离开安全模式 |
hdfs dfsadmin -saveNamespace | 保存集群的名字空间 |
hdfs dfsadmin -rollEdits | 回滚编辑日志 |
hdfs dfsadmin -refreshNodes | 刷新节点 |
hdfs dfsadmin -getDatanodeInfo node1:8010 | 获取数据节点信息 |
hdfs dfsadmin -setQuota 10 /hdfs | 设置文件目录配额 |
外:
- sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。
- 输入hdfs查看有哪些命令同理hdfs dfs