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

    技术2022-07-12  76

    一、大数据介绍

    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 Cutting2004年 - 最初版本实施2008年 - 成为Apache顶级项目

    Hadoop发行版本

    社区版:Apache HadoopCloudera发行版:CDHHortonworks发行版: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 文件 目录为例 注意:

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

    十、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处理,文件需可分割

    SequenceFileAvro FileRCFile&ORCFileParquet 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(); } }
    Processed: 0.012, SQL: 9