第二课 大数据技术之Hadoop3.x的HDFS

文章目录

  • 第二课 大数据技术之Hadoop3.x的HDFS
    • 第一节 HDFS概述
      • 1.1 HDFS产出背景及定义
      • 1.2 HDFS优缺点
      • 1.3 HDFS组成架构
      • 1.4 HDFS文件块大小(面试重点)
    • 第二节 HDFS的操作
      • 2.1 基本语法
      • 2.2 HDFS的API操作配置
      • 2.3 HDFS的API基本操作
    • 第三节 HDFS的读写流程
      • 3.1 剖析文件写入
      • 3.2 网络拓扑-节点距离计算
      • 3.3 机架感知(副本存储节点选择)
      • 3.4 HDFS读数据流程
    • 第四节 NameNode和SecondaryNameNode
      • 3.1 NN和2NN工作机制
      • 3.2 Fsimage和Edits解析
      • 3.3 CheckPoint时间设置
    • 第五节 DataNode
      • 5.1 DataNode工作机制
      • 5.2 数据完整性
      • 5.3 掉线时限参数设置

第一节 HDFS概述

1.1 HDFS产出背景及定义

  1. HDFS产生背景
    随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种
  2. HDFS定义。HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
  3. HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

1.2 HDFS优缺点

  1. 优点一:高容错性

    • 数据自动保存多个副本。它通过增加副本的形式,提高容错性。
    • 某一个副本丢失以后,它可以自动恢复。
  2. 优点二:适合处理大数据
    • 数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;
    • 文件规模:能够处理百万规模以上的文件数量,数量相当之大。
  3. 优点三: 可构建在廉价机器上,通过多副本机制,提高可靠性。
  4. 缺点一:不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。
  5. 缺点二:无法高效的对大量小文件进行存储
    • 存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的;
    • 小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
  6. 不支持并发写入、文件随机修改。
    • 一个文件只能有一个写,不允许多个线程同时写;
    • 仅支持数据append(追加),不支持文件的随机修改

1.3 HDFS组成架构


1.4 HDFS文件块大小(面试重点)

  1. HDFS中的文件在物理上是分块存储(Block ),**块的大小可以通过配置参数(dfs.blocksize)**来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M
  2. 为什么块的大小不能设置太小,也不能设置太大?
    • HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置;
    • 如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。
    • HDFS块的大小设置主要取决于磁盘传输速率。一般磁盘设置成128M即可,固态硬盘设置为256比较好的。

第二节 HDFS的操作

2.1 基本语法

  1. hadoop fs 具体命令 或者 hdfs dfs 具体命令 两个是完全相同的。
  2. 命令大全
bin/hadoop fs
bin/hdfs fs
  1. 常用命令实操, 准备工作
# 启动Hadoop集群(方便后续的测试)
sbin/start-dfs.sh
sbin/start-yarn.sh
# -help:输出这个命令参数
hadoop fs -help rm
# 创建/sanguo文件夹
hadoop fs -mkdir /sanguo#  上传 -moveFromLocal:从本地剪切粘贴到HDFS
vim shuguo.txt
# 输入:shuguo
hadoop fs  -moveFromLocal  ./shuguo.txt  /sanguo
# -copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去
vim weiguo.txt # 输入:weiguo
hadoop fs -copyFromLocal weiguo.txt /sanguo
# -put:等同于copyFromLocal,生产环境更习惯用put
vim wuguo.txt # 输入:wuguo
hadoop fs -put ./wuguo.txt /sanguo
# -appendToFile:追加一个文件到已经存在的文件末尾
vim liubei.txt # 输入:liubei
hadoop fs -appendToFile liubei.txt /sanguo/shuguo.txt# 下载
# -copyToLocal:从HDFS拷贝到本地
hadoop fs -copyToLocal /sanguo/shuguo.txt ./
# -get:等同于copyToLocal,生产环境更习惯用get
hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt# HDFS直接操作
# -ls: 显示目录信息
hadoop fs -ls /sanguo
# -cat:显示文件内容
hadoop fs -cat /sanguo/shuguo.txt
# -chgrp、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限
hadoop fs  -chmod 666  /sanguo/shuguo.txt
hadoop fs  -chown  atguigu:atguigu   /sanguo/shuguo.txt
# -mkdir:创建路径
hadoop fs -mkdir /jinguo
# -cp:从HDFS的一个路径拷贝到HDFS的另一个路径
hadoop fs -cp /sanguo/shuguo.txt /jinguo
# -mv:在HDFS目录中移动文件
hadoop fs -mv /sanguo/wuguo.txt /jinguo
hadoop fs -mv /sanguo/weiguo.txt /jinguo
# -tail:显示一个文件的末尾1kb的数据
hadoop fs -tail /jinguo/shuguo.txt
# -rm:删除文件或文件夹
hadoop fs -rm /sanguo/shuguo.txt
# -rm -r:递归删除目录及目录里面内容
hadoop fs -rm -r /sanguo
# -du统计文件夹的大小信息
hadoop fs -du -s -h /jinguo# hadoop fs -du  -h /jinguo
14  42  /jinguo/shuguo.txt
7   21   /jinguo/weiguo.txt
6   18   /jinguo/wuguo.tx
# 说明:27表示文件大小;81表示27*3个副本;/jinguo表示查看的目录
# -setrep:设置HDFS中文件的副本数量
hadoop fs -setrep 10 /jinguo/shuguo.txt
# 这里设置的副本数只是记录在NameNode的元数据中,是否真的会有这么多副本,还得看DataNode的数量。因为目前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。

2.2 HDFS的API操作配置

  1. 复制hadoop-3.1.0到非中文路径(比如d:\),配置HADOOP_HOME环境变量
  2. 配置Path环境变量。弄到hadoop-3.1.0的bin目录下
  3. 创建Maven工程,在IDEA中创建一个Maven工程HdfsClient,并导入相应的依赖坐标+日志添加
<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.3</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency>
</dependencies>
  1. 在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在文件中填入
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
  1. 创建包名:com.atguigu.hdfs
  2. 创建HdfsClient类
package com.atguigu.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;public class HdfsClient {@Testpublic void testMkdirs() throws IOException, URISyntaxException, InterruptedException {// 1 获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:8020"), configuration,"root");// 2 创建目录fs.mkdirs(new Path("/xiyou/huaguoshan/"));// 3 关闭资源fs.close();}
}
  1. 执行程序.客户端去操作HDFS时,是有一个用户身份的。默认情况下,HDFS客户端API会从采用Windows默认用户访问HDFS,会报权限异常错误。所以在访问HDFS时,一定要配置用户
org.apache.hadoop.security.AccessControlException: Permission denied: user=56576, access=WRITE, inode="/xiyou/huaguoshan":atguigu:supergroup:drwxr-xr-x

2.3 HDFS的API基本操作

  1. HDFS文件上传(测试参数优先级)
@Test
public void testCopyFromLocalFile() throws IOException, InterruptedException, URISyntaxException {// 1 获取文件系统Configuration configuration = new Configuration();configuration.set("dfs.replication", "2");FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:8020"), configuration, "atguigu");// 2 上传文件fs.copyFromLocalFile(new Path("d:/sunwukong.txt"), new Path("/xiyou/huaguoshan"));// 3 关闭资源fs.close();
}
  1. 将hdfs-site.xml拷贝到项目的resources资源目录下
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>
  1. 参数优先级
  • 参数优先级排序:(1)客户端代码中设置的值 >(2)ClassPath下的用户自定义配置文件 >(3)然后是服务器的自定义配置(xxx-site.xml) >(4)服务器的默认配置(xxx-default.xml)
  1. HDFS文件下载,如果执行下面代码,下载不了文件,有可能是你电脑的微软支持的运行库少,需要安装一下微软运行库。
@Test
public void testCopyToLocalFile() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:8020"), configuration, "atguigu");// 2 执行下载操作// boolean delSrc 指是否将原文件删除// Path src 指要下载的文件路径// Path dst 指将文件下载到的路径// boolean useRawLocalFileSystem 是否开启文件校验fs.copyToLocalFile(false, new Path("/xiyou/huaguoshan/sunwukong.txt"), new Path("d:/sunwukong2.txt"), true);// 3 关闭资源fs.close();
}
  1. HDFS文件更名和移动
@Test
public void testRename() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:8020"), configuration, "atguigu"); // 2 修改文件名称fs.rename(new Path("/xiyou/huaguoshan/sunwukong.txt"), new Path("/xiyou/huaguoshan/meihouwang.txt"));// 3 关闭资源fs.close();
}
  1. HDFS删除文件和目录
@Test
public void testDelete() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:8020"), configuration, "atguigu");// 2 执行删除fs.delete(new Path("/xiyou"), true);// 3 关闭资源fs.close();
}
  1. HDFS文件详情查看.查看文件名称、权限、长度、块信息
@Test
public void testListFiles() throws IOException, InterruptedException, URISyntaxException {// 1获取文件系统Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:8020"), configuration, "atguigu");// 2 获取文件详情RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"), true);while (listFiles.hasNext()) {LocatedFileStatus fileStatus = listFiles.next();System.out.println("========" + fileStatus.getPath() + "=========");System.out.println(fileStatus.getPermission());System.out.println(fileStatus.getOwner());System.out.println(fileStatus.getGroup());System.out.println(fileStatus.getLen());System.out.println(fileStatus.getModificationTime());System.out.println(fileStatus.getReplication());System.out.println(fileStatus.getBlockSize());System.out.println(fileStatus.getPath().getName());// 获取块信息BlockLocation[] blockLocations = fileStatus.getBlockLocations();System.out.println(Arrays.toString(blockLocations));}// 3 关闭资源fs.close();
}
  1. HDFS文件和文件夹判断
@Test
public void testListStatus() throws IOException, InterruptedException, URISyntaxException{// 1 获取文件配置信息Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop101:8020"), configuration, "atguigu");// 2 判断是文件还是文件夹FileStatus[] listStatus = fs.listStatus(new Path("/"));for (FileStatus fileStatus : listStatus) {// 如果是文件if (fileStatus.isFile()) {System.out.println("f:"+fileStatus.getPath().getName());}else {System.out.println("d:"+fileStatus.getPath().getName());}}// 3 关闭资源fs.close();
}

第三节 HDFS的读写流程

3.1 剖析文件写入

  1. 客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。
  2. NameNode返回是否可以上传。
  3. 客户端请求第一个 Block上传到哪几个DataNode服务器上。
  4. NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。
  5. 客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。
  6. dn1、dn2、dn3逐级应答客户端。
  7. 客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。
  8. 当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。

3.2 网络拓扑-节点距离计算

  1. 在HDFS写数据的过程中,NameNode会选择距离待上传数据最近距离的DataNode接收数据。那么这个最近距离怎么计算呢?
  2. 节点距离:两个节点到达最近的共同祖先的距离总和

3.3 机架感知(副本存储节点选择)

  1. 官方介绍:http://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html#Data_Replication
  2. 源码中代码:Crtl + n 查找BlockPlacementPolicyDefault,在该类中查找chooseTargetInOrder方法。

3.4 HDFS读数据流程

  1. 客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。
  2. 挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。
  3. DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。
  4. 客户端以Packet为单位接收,先在本地缓存,然后写入目标文件
  5. 串行读取先读取第一块,然后在读取第二块。

第四节 NameNode和SecondaryNameNode

3.1 NN和2NN工作机制

  1. 思考:NameNode中的元数据是存储在哪里的?

    • 如果存储在NameNode节点的磁盘中,因为经常需要进行随机访问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的FsImage
    • 当在内存中的元数据更新时,如果同时更新FsImage,就会导致效率过低,但如果不更新,就会发生一致性问题,一旦NameNode节点断电,就会产生数据丢失。因此,引入Edits文件(只进行追加操作,效率很高)。每当元数据有更新或者添加元数据时,修改内存中的元数据并追加到Edits中。这样,一旦NameNode节点断电,可以通过FsImage和Edits的合并,合成元数据。
    • 如果长时间添加数据到Edits中,会导致该文件数据过大,效率降低,而且一旦断电,恢复元数据需要的时间过长。因此,需要定期进行FsImage和Edits的合并,如果这个操作由NameNode节点完成,又会效率过低。因此,引入一个新的节点SecondaryNamenode,专门用于FsImage和Edits的合并
  2. 第一阶段:NameNode启动
    • 第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
    • 客户端对元数据进行增删改的请求。
    • NameNode记录操作日志,更新滚动日志。
    • NameNode在内存中对元数据进行增删改。
  3. 第二阶段:Secondary NameNode工作
    • Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。
    • Secondary NameNode请求执行CheckPoint。
    • NameNode滚动正在写的Edits日志。
    • 将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
    • Secondary NameNode加载编辑日志和镜像文件到内存,并合并。
    • 生成新的镜像文件fsimage.chkpoint。
    • 拷贝fsimage.chkpoint到NameNode。
    • NameNode将fsimage.chkpoint重新命名成fsimage。

3.2 Fsimage和Edits解析

  1. NameNode被格式化之后,将在/opt/module/hadoop-3.1.3/data/dfs/name/current目录中产生如下文件
  2. Fsimage文件: HDFS文件系统元数据的一个永久性的检查点,其中包含HDFS文件系统的所有目录和文件inode的序列化信息
  3. Edits文件:存放HDFS文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先
    会被记录到Edits文件中。
  4. seen_txid文件保存的是一个数字,就是最后一个edits_的数字
cd /opt/module/hadoop-3.1.3/data/dfs/name/current
ls
# oiv查看Fsimage文件 查看oiv和oev命令
# hdfs oiv -p 文件类型 -i镜像文件 -o 转换后文件输出路径
hdfs
hdfs oiv -p XML -i fsimage_0000000000000000025 -o /opt/module/hadoop-3.1.3/fsimage.xml
cat /opt/module/hadoop-3.1.3/fsimage.xml
# 将显示的xml文件内容拷贝到Idea中创建的xml文件中,并格式化。部分显示结果如下。
# Fsimage中没有记录块所对应DataNode, 在集群启动后,要求DataNode上报数据块信息,并间隔一段时间后再次上报。
cat /opt/module/hadoop-3.1.3/fsimage.xml# oev查看Edits文件
# 基本语法
# hdfs oev -p 文件类型 -i编辑日志 -o 转换后文件输出路径
# 案例实操
hdfs oev -p XML -i edits_0000000000000000012-0000000000000000013 -o /opt/module/hadoop-3.1.3/edits.xml
cat /opt/module/hadoop-3.1.3/edits.xml
# 合并时看Imagefs的后缀是多少 上面是25 就合并大于25的edits操作

3.3 CheckPoint时间设置

  1. 通常情况下,SecondaryNameNode每隔一小时执行一次。[hdfs-default.xml]
<property><name>dfs.namenode.checkpoint.period</name><value>3600s</value>
</property>
  1. 一分钟检查一次操作次数,当操作次数达到1百万时,SecondaryNameNode执行一次。
<property><name>dfs.namenode.checkpoint.txns</name><value>1000000</value>
<description>操作动作次数</description>
</property><property><name>dfs.namenode.checkpoint.check.period</name><value>60s</value>
<description> 1分钟检查一次操作次数</description>
</property>

第五节 DataNode

5.1 DataNode工作机制

  1. 一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。
  2. DataNode启动后向NameNode注册,通过后,周期性(6小时)的向NameNode上报所有的块信息。
<-DN向NN汇报当前解读信息的时间间隔,默认6小时;->
<property><name>dfs.blockreport.intervalMsec</name><value>21600000</value><description>Determines block reporting interval in milliseconds.</description>
</property>
<-DN扫描自己节点块信息列表的时间,默认6小时->
<property><name>dfs.datanode.directoryscan.interval</name><value>21600s</value><description>Interval in seconds for Datanode to scan data directories and reconcile the difference between blocks in memory and on the disk.Support multiple time unit suffix(case insensitive), as describedin dfs.heartbeat.interval.</description>
</property>
  1. 心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。
  2. 集群运行中可以安全加入和退出一些机器。

5.2 数据完整性

  1. 思考:如果电脑磁盘里面存储的数据是控制高铁信号灯的红灯信号(1)和绿灯信号(0),但是存储该数据的磁盘坏了,一直显示是绿灯,是否很危险?同理DataNode节点上的数据损坏了,却没有发现,是否也很危险,那么如何解决呢?
  2. 如下是DataNode节点保证数据完整性的方法。
    • 当DataNode读取Block的时候,它会计算CheckSum。
    • 如果计算后的CheckSum,与Block创建时值不一样,说明Block已经损坏。
    • Client读取其他DataNode上的Block。
    • 常见的校验算法crc(32),md5(128),sha1(160)
    • DataNode在其文件创建后周期验证CheckSum。

5.3 掉线时限参数设置

  1. 需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。
<property><name>dfs.namenode.heartbeat.recheck-interval</name><value>300000</value>
</property><property><name>dfs.heartbeat.interval</name><value>3</value>
</property>

第二课 大数据技术之Hadoop3.x的HDFS相关推荐

  1. 第一课 大数据技术之Fink1.13的实战学习-部署使用和基础概念

    第一课 大数据技术之Fink1.13的实战学习 文章目录 第一课 大数据技术之Fink1.13的实战学习 第一节 Fink介绍 1.1 Flink介绍背景 1.2 Flink 的应用场景 1.3 流式 ...

  2. 第三课 大数据技术之Fink1.13的实战学习-时间和窗口

    第三课 大数据技术之Fink1.13的实战学习-时间和窗口 文章目录 第三课 大数据技术之Fink1.13的实战学习-时间和窗口 第一节 时间定义 1.1 Flink中的时间语义 1.2 两种时间语义 ...

  3. 第三课 大数据技术之Spark-RDD介绍和转换算子

    第三课 大数据技术之Spark-RDD介绍和转换算子 文章目录 第三课 大数据技术之Spark-RDD介绍和转换算子 第一节 RDD相关介绍 1.1 什么是 RDD 1.2 核心属性 1.3 执行原理 ...

  4. 第七课 大数据技术之Fink1.13的实战学习-Fink CEP

    第七课 大数据技术之Fink1.13的实战学习-Fink CEP 文章目录 第七课 大数据技术之Fink1.13的实战学习-Fink CEP 第一节 Fink CEP介绍 1.1 Flink CEP背 ...

  5. 第六课 大数据技术之Fink1.13的实战学习-Table Api和SQL

    第六课 大数据技术之Fink1.13的实战学习-Table Api和SQL 文章目录 第六课 大数据技术之Fink1.13的实战学习-Table Api和SQL 第一节 Fink SQL快速上手 1. ...

  6. 大数据技术之Hadoop3.x

    大数据技术之Hadoop3.x教程系列文章目录 提示:以下是本篇文章正文内容,下面案例可供参考 目录 一.Hadoop_入门_模板虚拟机安装(使用CentOS 7系统) 二.2.Hadoop_入门_模 ...

  7. 大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门到熟练操作)

    系列博客 1.大数据技术之Hadoop完全分布式集群搭建+Centos7配置连通外网和主机 2.大数据技术之Hadoop编译源码 3.大数据技术之Hadoop分布式文件系统HDFS系统知识整理(从入门 ...

  8. 大数据技术基础实验三:HDFS实验——部署HDFS

    大数据技术基础实验三:HDFS实验--部署HDFS 文章目录 大数据技术基础实验三:HDFS实验--部署HDFS 一.前言 二.实验要求 三.实验原理 1.什么是HDFS? 2.HDFS的体系结构 3 ...

  9. 第二章大数据技术概述

    大数据技术的产生 海量数据的产生: 来自大人群互联网 来自大量传感器机械 科学研究及行业多结构专业数据 大数据的基本概念 大数据的定义:无法在一定时间内用常规软件工具对其内容进行抓捕.管理和处理的数据 ...

最新文章

  1. IDEA中maven项目所有文件都识别不了,明明存在的类提示找不到,原来只需一键解决。。。
  2. Chrome 控制台的console用法收集
  3. CCNP精粹系列之十三-----OSPF路由汇总
  4. 数值保留小数点两位,但同时去除小数点后多余0 的 javascript、java实现
  5. 深度学习入门实例——基于keras的mnist手写数字识别
  6. STM32 + RT Thread OS 学习笔记[四]
  7. hsql导入mysql_在测试过程中使用HSQL数据库
  8. 在服务器上打不开新点投标文件,新点投标文件制作操作手册.doc
  9. IT安全面试问题汇总
  10. 在中国移动(中国联通、中国电信)工作是一种怎样的体验?
  11. 四位共阳极数码管显示函数_DS1302,四位共阳极数码管显示时钟,可调时间
  12. java 取上界_Java中的上界通配符 - java
  13. Python 绘图大全之使用 Python Folium 制作生成热图的详细指南
  14. npm i 安装时报错问题解决
  15. 【Shell】Shell 脚本自动输入密码的三种方式
  16. 用USART接口代替SPI怎么做?
  17. ECharts地图进去直接显示数字和颜色问题
  18. 解析法实现多元线性回归的实例
  19. TRS cms用户注册漏洞
  20. 手机里的文字识别工具如何使用?

热门文章

  1. MySQL登录时出现 Access denied for user 'root'@'xxx.xxx.xxx.xxx' (using password: YES) 的原因及解决办法
  2. 北风网 李炎恢老师全部视频教程下载地址大全
  3. 电子计算机技术是学什么,电子技术应用是学什么?
  4. 声笔飞码和飞码数码单字输入效率分析
  5. 通达信最新交易接口系统开发源码有哪些?
  6. 帝国系统在万网虚拟主机更换php版本后无法登陆后台问题分析
  7. 狂神说Java全栈学习路线
  8. 设计模式-过滤器设计模式
  9. 关于非现场审计软件的一些介绍(ACL、IEDA、Teammate)
  10. FileZilla客户端的安装配置教程以及使用教程(超级详细)