HDFS NameNode和SecondaryNameNode
一:NN 和 2NN 工作机制1.1 思考:NameNode 中的元数据是存储在哪里的?首先,我们做个假设,如果存储在 NameNode 节点的磁盘中,因为经常需要进行随机访 问,还有响应客户请求,必然是效率过低。因此,元数据需要存放在内存中。但如果只存在 内存中,一旦断电,元数据丢失,整个集群就无法工作了。因此产生在磁盘中备份元数据的 FsImage。
这样又会带来新的问题,当在内存中的元数据更新时,如果同时更新 FsImage,就会导 致效率过低,但如果不更新,就会发生一致性问题,一旦 NameNode 节点断电,就会产生数 据丢失。因此,引入 Edits 文件(只进行追加操作,效率很高)。每当元数据有更新或者添 加元数据时,修改内存中的元数据并追加到 Edits 中。这样,一旦 NameNode 节点断电,可 以通过 FsImage 和 Edits 的合并,合成元数据。
但是,如果长时间添加数据到 Edits 中,会导致该文件数据过大,效率降低,而且一旦 断电,恢复元数据需要的时间过长。因此,需要定期进行 FsImage 和 Edits 的合并,如果这 个操作由NameNode节 ...
HDFS 读写流程
一:写数据流程
(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 ...
HDFS API操作
一:客户端环境准备1.1 下载并安装 Windows 依赖cdarlint/winutils: winutils.exe hadoop.dll and hdfs.dll binaries for hadoop windows (github.com)
1.2 配置环境变量
1.3 双击运行
二:IDEA 实例测试2.1 添加maven 依赖1234567891011121314151617<dependencies> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.2.2</version> </dependency> <dependency> <groupId>junit</groupId> & ...
HDFS shell操作
一:基本语法
hadoop fs 具体命令
hdfs dfs 具体命令
两者是完全相同的!
二:命令大全123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657[ghost@hadoop100 ~]$ hdfs dfsUsage: hadoop fs [generic options] [-appendToFile <localsrc> ... <dst>] [-cat [-ignoreCrc] <src> ...] [-checksum [-v] <src> ...] [-chgrp [-R] GROUP PATH...] [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...] [-chown [-R] [OWNER][:[GROUP]] PATH...] [-concat <target path> <sr ...
HDFS 概述
一:HDFS 产出背景及定义1.1 HDFS 产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系 统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这 就是分布式文件管理系统。HDFS 只是分布式文件管理系统中的一种。
1.2 HDFS 定义HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目 录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务 器有各自的角色。
HDFS 的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。
二:HDFS 优缺点2.1 HDFS优点(1)高容错性
数据自动保存多个副本。它通过增加副本的形式,提高容错性。
某一个副本丢失以后,它可以自动恢复。
(2)适合处理大数据
数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据;
文件规模:能够处理百万规模以上的文件数量,数量相当之大。
(3)经济因素
可构建在廉价机器上,通过多副本机制,提高可靠性。
2.2 H ...
Hadoop 运行模式
一:运行模式概述
Hadoop 官方网站:http://hadoop.apache.org/
Hadoop 运行模式包括:本地模式、伪分布式模式以及完全分布式模式。
本地模式:单机运行,可以执行官方案例。生产环境不用。
伪分布式模式:也是单机运行,但是具备 Hadoop 集群的所有功能,一台服务器模 拟一个分布式的环境。生产环境不用。
完全分布式模式:多台服务器组成分布式环境。生产环境使用。
二:本地运行模式演示官方WordCount案例:
12345678910111213141516171819202122232425262728# 创建目录[root@hadoop100 hadoop-3.3.4]# mkdir wcinput# 创建文件[root@hadoop100 wcinput]# vim word.txt# 查看文件内容[root@hadoop100 wcinput]# cat word.txt ghost ghostsum moonhadoop hdfsmapreduce sparkhdfs hive# 执行 wordcount 命令[root@hadoop100 ...
Hadoop 运行环境搭建
一:模板虚拟机准备1.1 安装模板虚拟机IP 地址 192.31.58.100、主机名称 hadoop100、内存 4G、硬盘 40G,采用CentOS-7-x86_64-DVD-2009_2.iso镜像。
1.2 查看网络情况123456789[root@hadoop100 ~]# ping baidu.comPING baidu.com (110.242.68.66) 56(84) bytes of data.64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=128 time=26.3 ms64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=128 time=26.7 ms64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=128 time=24.7 ms^C--- baidu.com ping statistics ---3 packets transmitted, 3 rec ...
Hadoop 概述
一:Hadoop简介
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
主要解决,海量数据的存储和海量数据的分析计算问题。
广义来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。
二:Hadoop发展历史
Hadoop创始人Doug Cutting,为 了实 现与Google类似的全文搜索功能,他在Lucene框架基础上进行优 化升级,查询引擎和索引引擎。
2001年年底Lucene成为Apache基金会的一个子项目。
对于海量数据的场景,Lucene框 架面 对与Google同样的困难,存 储海量数据困难,检 索海 量速度慢。
学习和模仿Google解决这些问题的办法 :微型版Nutch。
可以说Google是Hadoop的思想之源(Google在大数据方面的三篇论文)
GFS —>HDFS
Map-Reduce —>MR
BigTable —>HBase
2003-2004年,Google公开了部分GFS和MapReduce思想的细节,以此为基础Doug Cutting等人用 了2年业余时间实现了DFS和MapRed ...
Hadoop 大数据概论
一:大数据概念1.1 概述
大数据(Big Data):指无法在一定时间范围内用常规软件工具进行捕捉、管理和 处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化 能力的海量、高增长率和多样化的信息资产。
大数据主要解决,海量数据的采集、存储和分析计算问题。
1.2 存储单位
按顺序给出数据存储单位:bit、Byte、 KB、MB、GB、TB、PB、EB、ZB、YB、 BB、NB、DB。
1Byte = 8bit 1K = 1024Byte 1MB = 1024K 1G = 1024M 1T = 1024G 1P = 1024T
二:大数据特点2.1 Volume(大量)截至目前,人类生产的所有印刷材料的数据量是200PB,而历史上全人类总共 说过的话的数据量大约是5EB。当前,典型个人计算机硬盘的容量为TB量级,而 一些大企业的数据量已经接近EB量级。
2.2 Velocity(高速)这是大数据区分于传统数据挖掘的最显著特征。根据IDC的“数字宇宙”的报告,预计到2025年,全球数据使用量将达到 ...
Shell 应用案例
一:归档文件1.1 功能描述实现一个每天对指定目录归档备份的脚本,输入一个目录名称(末尾不带/), 将目录下所有文件按天归档保存,并将归档日期附加在归档文件名上,放在/root/archive 下。
1.2 相关技术
这里用到了归档命令:
tar 后面可以加上-c 选项表示归档,
加上-z 选项表示同时进行压缩,得到的文件后缀名 为.tar.gz。
1.3 脚本实现12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#!/bin/bash# 判断输入参数个数是否为1if [ $# -ne 1 ]then echo "参数个数错误!请输入一个参数,作为归档的目录名称" exitfi# 判断目录是否存在if [ -d $1 ]then echoelse echo "目录不存在" exitfiDIR_NAME=$ ...



