Hadoop复习(1)概论+HDFS

大数据的基本特征(4V,存储单位)

4v分别是:Volume(大量性)、Velocity(高速性)、Variety(多样性)、Value(价值性)

存储单位:

从TB开始 首字母TPEZ 传送过去干EZ

大数据对思维方式的影响

Google 三辆马车是什么?(重点)

GFS的思想

重点思想在于增加一个管理节点,去管理存放数据的主机.
在hadoop里通过HDFS实现

MapReduce的思想

重点思想在于分而治之
在hadoop里通过MapReduce实现

BigTable的思想

后续补充

Hadoop是什么,基本特征



特征:


Hadoop 生态系统的常见组件的应用场景。



后面还有不想截图了.反正就各种大数据应用。。

HDFS

大数据的两个核心技术

分布式存储和分布式处理

HDFS 设计目标

HDFS 自身的局限性

HDFS 的块设计及采用块设计的好处

当前我们使用的版本块大小为128MB

HDFS 的组成架构


NameNode(名称节点)

管理和维护HDFS的命名空间+元数据信息被持久化到磁盘为哪两个文件?

维护着文件系统树以及文件树中所有的文件的元数据,管理这些信息的文件有两个,分别是
命名空间镜像文件(fsimage)
操作日志文件(edits)


即edit log 会记录中间一切过程 fsimage只记录最终结果

管理DataNode上的数据块

在HDFS里,一个文件被分成了一或多个数据块,它们保存在DataNode上,并让NameNode进行管理

接受客户端的请求

需要对客户端请求做出相应行为,比如下载上传文件

第二名称节点的作用(比较重要)


何时进行合并?

DataNode

主要功能如下:

  1. 保存数据块,每个数据块对应一个元数据信息文件,描述这个数据块属于哪个文件,第几个数据块
  2. 启动DataNode线程,定期向NameNode汇报数据块信息
  3. (心跳机制 比较重要) 定期向NameNode发送心跳信息保持联系,如果NameNode10分钟没有收到DataNode的心跳信息,就将其上的数据块复制到其他NameNode

副本机制、数据容错机制、心跳机制、采用什么通信协议等


数据容错机制分为3种情况:


这里意思应该是直接放弃这个NameNode节点

通信协议:

HDFS 体系结构的局限性

HDFS 读写流程


HDFS 常用操作命令:上传,查看,下载等

使用linux命令格式
hdfs dfs - + linux命令

上传文件

将本地目录txt1.txt文件上传到HDFS上并重命名为hdfs1.txt
hdfs dfs -put txt1.txt  /001/mydemo/hdfs1.txt

查看文件

查看HDFS下/001/mydemo/hdfs2.txt文件中的内容:
hdfs dfs -cat  /001/mydemo/hdfs2.txt

下载文件

将HDFS中的file2文件复制到本地系统并命名为txt3.txt:

文件合并再下载
hdfs dfs -getmerge  /001/mydemo merge.txt

查看文件大小

hdfs dfs -du  /001/mydemo

使用API操作HDFS

创建一个名为HDFSApp1,编程实现如下功能:将HDFS主目录下的text1.txt文件下载到本地

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import java.io.*;
public class HDFSApp1
{
	public static void main(String[] args) throws IOException{
		//1)
		Configuration conf=new Configuration();
		conf.set("fs.default.name","hdfs://localhost:9000");
		//2)
		FileSystem fs=FileSystem.get(conf);
		
		//3.1)Local file
		Path localFilePath=new Path("/home/hadoop/local.text");
		//3.2)HDFS file
		Path remoteFilePath=new Path("/user/hadoop/text1.text");
		//4)download
		fs.copyToLocalFile(remoteFilePath, localFilePath);
		//5)关闭
		fs.close();
		System.out.println("Download Successfully!");
	}
}

上传文件

代码大致和上面相同
函数使用这句

fs.copyFromLocalFile(localFilePath,remoteFilePath);
posted @ 2021-06-28 14:35  一个经常掉线的人  阅读(191)  评论(0)    收藏  举报