hadoop学习(一)

一.hadoop概述

1.1hadoop优势

1)高可靠性:Hadoop底层维护多个数据副本,即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。

2)高扩展性:在集群间分配任务数据,可方便扩展数以千计的节点

3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度

4)高容错性:能够自动将失败的任务重新分配

1.2Hadoop的组成

1.3.HDFS

定义:一个文件系统,用于存储文件,通过目录来定位我呢见;分布式,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

使用场景:适合一次写入,多次读出的场景,一个文件经过创建、写入和关闭之后就不需要改变。

优点:

1)高容错性

数据自动保存多个副本,通过增加副本的形式,提高容错率。

一个副本丢失后,可以自动恢复

2)适合处理大数据

能够处理数据规模达到GB、TB、甚至PB级别的数据(数据规模方面)

能够处理百万规模以上的文件数量(文件规模方面)

3)科构建在廉价机器上,通过多副本机制,提高可靠性

缺点

1)不适合低延时数据访问

2)无法高效地对大量小文件进行存储

存储大量小文件的话,会占用NameNode大量地内存来存储文件目录和块信息。

小文件存储地寻址时间会超过读取时间,它违反了HDFS的设计目标。

3)不支持并发写入、文件随机修改

框架概述

1)NameNode(nn):存储文件的元数据,例如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode等。

a)管理HDFS的名称空间

b)配置副本策略

c)管理数据块映射信息

d)处理客户端读写要求

2)DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。

a)存储实际的数据块

b)执行数据块的读/写操作

DateNode和NameNode的联系:NameNode下达命令,DataNode执行实际的操作

3)Secondary NameNode(2nn):每隔一段时间对NameNode元数据备份。

HDFS文件块大小

HDFS中的文件在物理上是分块储存,块的大小可以通过配置参数来规定

注:1)寻址时间为传输时间的1%时,为最佳状态

2)1秒能传输多少内容取决于磁盘的传输速率(目前磁盘的传输速率普遍为100MB/s)

3)块的大小不能设置太小(会增加寻址时间),也不能设置太大(从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间).。

Xshell命令:

上传命令

1)-moveFromLocal:从本地剪切粘贴到HDFS

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -mkdir /apt
[atguigu@hadoop01 hadoop]$ vim shuguo.txt
[atguigu@hadoop01 hadoop]$ hadoop fs -moveFromLocal ./shuguo.txt /apt

2)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径

复制代码
[atguigu@hadoop01 hadoop]$ vim weiguo.txt
[atguigu@hadoop01 hadoop]$ hadoop fs -copyFromLocal weiguo.txt /apt

3)-put:等同于copyFromLocal,生产环境更习惯用put

复制代码
[atguigu@hadoop01 hadoop]$ vim wuguo.txt
[atguigu@hadoop01 hadoop]$ hadoop fs -put ./wuguo.txt /apt

4)-appendToFile:追加一个文件到已经存在的文件末尾

复制代码
[atguigu@hadoop01 hadoop]$ vim liubei.txt
[atguigu@hadoop01 hadoop]$ hadoop fs -appendToFile liubei.txt /apt/shuguo.txt

追加liubei文件的内容到shuguo内容的结尾

下载命令

1)-copyToLocal:从HDFS拷贝到本地

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -copyToLocal /apt/shuguo.txt ./

拷贝后本地存在shuguo文件

2)-get:等同于copyToLocal,生产环境更习惯用get

该指令同时将shuguo改名为shuguo2

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -get /apt/shuguo.txt ./shuguo2.txt

HDFS直接操作

1)-ls: 显示目录信息

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -ls /apt

2)-cat:显示文件内容

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -cat /apt/weiguo.txt

3)-chgrp、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限

4)-mkdir:创建路径

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -mkdir /c

5)-cp:从HDFS的一个路径拷贝到HDFS的另一个路径

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -cp /apt/weiguo.txt /c

6)-mv:在HDFS目录中移动文件

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -mv /apt/wuguo.txt /c

7)-tail:显示一个文件的末尾1kb的数据

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -tail /c/wuguo.txt

显示出c中wuguo文件末尾1kb的数据

8)-rm:删除文件或文件夹

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -rm /apt/shuguo.txt
Deleted /apt/shuguo.txt

9)-rm -r:递归删除目录及目录里面内容

10)-du统计文件夹的大小信息

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -du  -h /c

11)-setrep:设置HDFS中文件的副本数量

复制代码
[atguigu@hadoop01 hadoop]$ hadoop fs -setrep 7 /c/weiguo.txt

1.4.YARN架构概述

YARN:另一种资源协调者,是Hadoop的资源管理器

1)ResourceManager(RM):管理整个集群资源(内存、CPU等);

2)NodeManager(NM):管理单个节点服务器资源

3)ApplicationMaster(AM):管理单个任务的运行

4)Container:容器,相当于一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等.(一个Container容器默认内存是1-8G)

特殊说明

1)可以有多个客服端

2)集群上可以运行多个ApplicationMaster

3)每个NodeManager上可以有多个Container

1.5.MapReduce架构概述

MapReduce将计算过程分为两个阶段:Map和Reduce

1)Map阶段并行处理输入数据

2)Reduce阶段对Map结果进行汇总

二.大数据技术生态体系

三.推荐系统框架图

四.Hadoop运行模式

1)本地模式:单机运行,只是用来演示官方案例(生产环境不用,偶尔用于测试)

2)伪分布式模式:单机运行,具备Hadoop集群的所有功能,一台服务器模拟一个分布式的环境(生产环境不用)

3)完全分布式模式:多台服务器组成分布式环境(生产环境使用)

四、HDFS写数据流程

(1)客户端通过DistributedFileSystem向NameNode请求下载文件,NameNode通过查询元数据,找到文件块所在的DataNode地址。

(2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。

(3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。

(4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。

五.NameNode工作机制

1)NameNode启动

2)Secondary NameNode工作

相关推荐
金色光环23 分钟前
【Modbus学习笔记】stm32实现Modbus
笔记·stm32·学习
THMOM9142 分钟前
TinyWebserver学习(9)-HTTP
网络协议·学习·http
凌辰揽月1 小时前
Servlet学习
hive·学习·servlet
魔芋红茶2 小时前
spring-initializer
python·学习·spring
西岭千秋雪_3 小时前
Redis性能优化
数据库·redis·笔记·学习·缓存·性能优化
随便取个六字3 小时前
GIT操作 学习
git·学习
chuanauc3 小时前
Kubernets K8s 学习
java·学习·kubernetes
小张是铁粉3 小时前
docker学习二天之镜像操作与容器操作
学习·docker·容器
小张是铁粉3 小时前
oracle的内存架构学习
数据库·学习·oracle·架构
HERR_QQ4 小时前
【unify】unify的微信小程序开发学习 (to be continued)
学习·微信小程序·小程序