大数据概况&Hadoop生态系统的描述

一、大数据介绍

1. 什么是大数据

大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。
身边的大数据:微信、qq、抖音都是大数据。

2. 大数据的特征

4V特征

  • Volume(大数据量): 90% 的数据是过去两年产生
  • Velocity(速度快): 数据增长速度快,时效性高
  • Variety(多样化): 数据种类和来源多样化
    结构化数据、半结构化数据、非结构化数据
  • Value(价值密度低): 需挖掘获取数据价值

固有特征

  • 时效性
  • 不可变性

3. 大数据分布式计算

介绍:大数据的分布式计算是将较大的数据分成小的部分进行处理。

传统分布式计算新的分布式计算 - Hadoop
计算方式将数据复制到计算节点在不同数据节点并行计算
可处理数据量小数据量大数据量
CPU性能限制受CPU限制较大受单台设备限制小
提升计算能力提升单台机器计算能力扩展低成本服务器集群

4.hadoop介绍

Hadoop是一个开源分布式系统架构

  • 分布式文件系统HDFS——解决大数据存储
  • 分布式计算框架MapReduce——解决大数据计算
  • 分布式资源管理系统YARN

处理海量数据的架构首选
非常快得完成大数据计算任务
已发展成为一个Hadoop生态圈

5.hadoop版本的介绍

Hadoop起源于搜索引擎Apache Nutch

  • 创始人:Doug Cutting
  • 2004年 - 最初版本实施
  • 2008年 - 成为Apache顶级项目

Hadoop发行版本

  • 社区版:Apache Hadoop
  • Cloudera发行版:CDH
  • Hortonworks发行版:HDP

6.Hadoop的优缺点

  • 高扩展性,可伸缩
  • 高可靠性
    • 多副本机制,容错高
  • 低成本
  • 无共享架构
  • 灵活,可存储任意类型数据
  • 开源,社区活跃

7.hadoop与传统关系型数据库的对比

RDBMShadoop
格式写数据时要求读数据时要求
速度读数据时速度快写数据时速度快
数据监管标准结构化任意结构数据
数据处理有限的处理能力强大的处理能力
数据类型结构化数据结构化、半结构化、非结构化
应用场景交互式OLAP分析ACID事务处理企业业务系统处理非结构化数据海量数据存储计算

二、hadoop生态系统

在这里插入图片描述

三、zookeeper简介

1. zookeeper介绍

zookeeper是一个分布式应用程序协调服务

  • 解决分布式集群中应用系统的一致性问题。

2.zookeeper提供的功能

配置管理、命名服务、分布式同步、队列管理、集群管理等

3.zookeeper性能

  • 全局数据一致
  • 可靠性、顺序性、实时性
  • 数据更新原子性

4.zookeeper集群

角色:Leader、Follower、Observer
**leader:**领导式集群 hadoop1
**Follower:**跟随者模式hadoop2.0
**Observer:**观察者模式(减少yarn向namenode汇报的次数)

四、hadoop架构

1. HDFS(Hadoop Distributed File System)

  • 分布式文件系统,解决分布式存储

2. MapReduce

  • 分布式计算框架

3. YARN

  • 分布式资源管理系统
  • 在Hadoop 2.x中引入

4. Common(不常用)

  • 支持所有其他模块的公共工具程序

五、HDFS

1. HDFS特点

HDFS优点
  • 支持处理超大文件
  • 可运行在廉价机器上
  • 高容错性
  • 流式文件写入(好处:并不要求文件一直在,也不要求文件读完了再删,但是没读完就删,可能会造成数据不全)
HDFS缺点
  • 不适合低延时数据访问场景
  • 不适合小文件存取场景(解决方案:1.用流的方式合并成大文件,2.用hbase)
  • 不适合并发写入(也是流的特性)(读可以并发),文件随机修改场景。

2. HDFS命令

基本格式
hdfs dfs -cmd<args>
hadoop fs -cmd<args>(已过时)
命令和Linux相似
-ls				查看
-mkdir			新建文件夹
-put			上传
-rm				删除
-help			帮助

六、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设置文件目录配额

七、使用HDFS shell处理移动通讯数据

  • 创建存放数据文件的目录
hdfs dfs -mkdir /hdfs/shell
hdfs dfs -ls /hdfs/shell
  • 将通讯数据上传到HDFS并查看
hdfs dfs -put /home/hadoop/data/mobile.txt /hdfs/shell
hdfs dfs -text /hdfs/shell/mobile.txt
  • 下载文件到本地
hdfs dfs -get /hdfs/shell/mobile.txt /home/hadoop
  • 统计目录下文件大小
hdfs dfs -du /hdfs/shell
  • 删除移动数据文件和目录
hdfs dfs -rm /hdfs/shell/mobile.txt
hdfs dfs -rmr /hdfs
#rmr递归删除目录下所有子目录和文件,生产环境中慎用

八、HDFS角色

Client:客户端

NameNode (NN):元数据节点

  • 管理文件系统的Namespace/元数据(控制目录树)
  • 一个HDFS集群只有一个Active的NN

DataNode (DN):数据节点

  • 数据存储节点,保存和检索Block
  • 一个集群可以有多个数据节点

Secondary NameNode (SNN):从元数据节点

  • 合并NameNode的edit logs到fsimage文件中
  • 辅助NN将内存中元数据信息持久化

九、HDFS架构

hdfs dfs -put 文件 目录为例
在这里插入图片描述
注意:

  1. 在想DataNode写入数据块的时候,一边往内存里写,一边传输下一个DataNode
  2. 在传输的过程中,是以packet形式进行传输的,默认大小64KB
  3. 在传输第二个数据块的时候重复以上的所有操作

十、HDFS副本机制

Block:数据块

  • HDFS最基本的存储单元
  • 默认块大小:128M(2.x)

副本机制

  • 作用:避免数据丢失
  • 副本数默认为3
  • 存放机制:
    • 一个在本地机架节点
    • 一个在同一个机架不同节点
    • 一个在不同机架的节点

十一、HDFS高可用

在1.x版本中

  • 存在Namenode单点问题

在2.x版本中

  • 解决:HDFS Federation方式,共享DN资源
  • Active Namenode
    • 对外提供服务
  • Standby Namenode
    • Active故障时可切换为Active

十二、HDFS文件格式

HDFS支持以不同格式存储所有类型的文件

  • 文本、二进制
  • 未压缩、压缩

为了最佳的Map-Reduce处理,文件需可分割

  • SequenceFile
  • Avro File
  • RCFile&ORCFile
  • Parquet File

十三、java实现HDFS文件的几个操作

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * @Author LYQ
 * @Date 2020/7/2
 * @Description
 */
public class HdfsClient {
    //创建一个文件夹
    @Test
    public void testMkdirs() throws URISyntaxException, IOException, InterruptedException {
        //1.创建配置文件
        Configuration conf= new Configuration();
        //2.获取文件系统
        FileSystem fs = FileSystem.get(new URI("hdfs://192.168.222.101:9000"),conf,"root");
        //3.调用API操作
        fs.mkdirs(new Path("/hdfs"));
        //4.关闭资源
        fs.close();
    }

    //上传一个文件
    @Test
    public void testCopyFromLocalFile() throws URISyntaxException,IOException,InterruptedException{
        //1.创建配置文件
        Configuration conf=new Configuration();
        //2.获取文件系统
        FileSystem fs=FileSystem.get(new URI("hdfs://192.168.222.101:9000"),conf,"root");
        //3.调用API操作
        fs.copyFromLocalFile(new Path("D:\\jarFile\\log4j.properties"),new Path("/hdfs"));
        //4.关闭资源
        fs.close();
    }

    //下载一个文件
    @Test
    public void testCopyToLocalFile() throws URISyntaxException,IOException,InterruptedException{
        //1.创建配置文件
        Configuration conf=new Configuration();
        //2.获取文件系统
        FileSystem fs=FileSystem.get(new URI("hdfs://hadoop1:9000"),conf,"root");
        //3.调用API操作
        fs.copyToLocalFile(new Path("/hdfs"),new Path("E:\\"));
        //4.关闭资源
        fs.close();
    }

    //删除文件夹
    @Test
    public void testDelete() throws URISyntaxException, IOException,InterruptedException{
        //1.创建配置文件
        Configuration conf=new Configuration();
        //2.获取文件系统
        FileSystem fs=FileSystem.get(new URI("hdfs://192.168.222.101:9000"),conf,"root");
        //3.调用API操作
        //b:代表是否递归删除
        fs.delete(new Path("/hdfs"),true);
        //4.关闭资源
        fs.close();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值