Hadoop之HDFS 学习笔记

A 学习内容

详细教程:Hadoop之HDFS:Hadoop分布式文件系统–具体知识点

A1:概况

前面稍微简单点,主要是环境扫盲,讲了开发环境,以及运行安装环境。

A2:学习目标
  1. 理解分布式文件系统
  2. 理解hdfs架构
  3. 熟练hdfs基本命令使用
  4. 掌握hdfs编程
  5. 理解namenode及secondarynamenode交互
A3:具体知识点

image.png

B 学习笔记

1. hadoop的发展历史

nutch:全网爬虫项目

主要是想要抓取全网的网页,回来做搜索引擎lucene

抓取回来的数据很多,如何存储,如何计算

google做搜索做的最好的

如果想要快速的学习IT技术,科学上网必不可少

参见了谷歌的开源的三篇论文:谷歌的三驾马车 GFS Mapreduce BigTable

Doug Cutting 大神 在全世界开源排行榜上有名的

hadoop框架 08年开源提供给apache,然后就一路火了

衍生出来了周边的很多生态框架

造成hadoop技术是一个生态圈

2013年的时候国内开始有大数据的迹象

2008年淘宝就开始引入了分布式计算的框架hadoop

2. hadoop的版本介绍

3. hadoop生产环境版本选择

可有的选择性很多:阿里的大数据平台maxComputer 腾讯的大数据平台 华为大数据平台 星环大数据平台(国内的政府,银行等机构用的比较多) ClouderaManager(6.x的版本以及开始收费了) Ambari 类似于CM这样的一个东西(国内一些互联网公司用的还行)

很多一些大的公司选择自研大数据平台:大数据平台开发工程师 纯粹技术性的岗位

以上这些都是各种基于hadoop的各种大数据平台

4. hadoop的架构模块介绍

学习大数据的生态从hadoop 开始

hadoop是一个分布式的框架:

由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎Yarn

hdfs:分布式文件系统

文件系统:管理计算机硬盘上面的各种文件 avi文件,torrent文件 各种文件等等

操作系统,windows操作系统:文件管理系统

主节点:namenode 主要负责管理整个集群,以及维护集群当中的元数据信息

从节点:datanode 主要用于保存数据,说白了就是一块硬盘

yarn:资源调度平台

什么是资源:计算机当中比较珍贵的都算作资源 内存 CPU

硬盘:当然也算,但是不是太珍贵

主从结构:

主节点:resourceManager 主要用于接收任务,分配资源

从节点:nodeManager 主要用于计算任务,执行任务等等

5 hdfs功能详解

5.1 理解分布式文件系统
5.2 hdfs的架构详细剖析

分布式文件存储系统:将所有的数据一视同仁,抽象成为一个个的block块 ,block块其实就是一块块的文件

hdfs如何实现分布式文件的存储:都是抽象成为block块

blockpool:专门用于管理block块 类似于一个水桶,水桶里面最多可以装128斤水,但是你也可以只装1斤

hadoop1.x当中,block块默认是64M

hadoop2.x当中,block块默认是128M

hadoop2.x当中,block块默认是256M

可以配置的

表示可以存放文件的大小

5.3 hdfs的shell命令操作

马晓环:磁盘阵列吗

磁盘阵列一般用于存放namenode元数据的信息

hdfs dfs -rm -skipTrash /xcall

使用这个命令,跳过hdfs的垃圾桶删除文件

hdfs dfs -rmr -skipTrash /hello.txt

5.4 hdfs的安全模式
  • 安全模式是hdfs的一种保护机制,主要是为了保存block块数量的完整性,避免数据出现丢失的可能性
  • 集群启动的时候,会去检查block块的完整性
  • 如果block块不完整,有丢失,需要进入到安全模式,对外不提供写入数据的功能,只提供读取数据的功能,进行block快的修复,复制等等的工作
  • 注意:hdfs常见的操作,一定要去自己动手尝试一遍(待练习1:13:)视频

Q&A

Q:生产环境hdfs数据每天是不是定时备份啊

A:有两个集群之间进行数据的同步,但是本来数据就是安全的,有数据的副本机制

Q:删除了,所有的副本数据不会马上删除吧》

A:删除的话,整个文件都会删掉

HDFS的代码的开发:需要我们来配置开发的环境

Q:最小副本数量要求 也说下呢

A:最小副本的数量是3 ,自己可以配置的dfs.replications,副本数配置的是2.5(奇葩)

Q:回收站的数据如何还原?

A:hdfs dfs -mv /user/hadoop/.Trash/Current/xcall /

5.5 hdfs的javaAPI的开发:

具体教程可跳转这里

需要构建windows的开发环境:

1、需要在windows安装jdk

2、需要在windows安装maven

3、需要在windows安装idea

4、需要在windows配置hadoop的环境变量

在windows当中开发代码去访问linux当中的hadoop集群

涉及到跨平台的问题

需要在windows当中安装hadoop的客户端的配置

Q:mac的话会有跨平台问题吗,还需要在mac配置hadoop吗?

A:macn不存在跨平台的问题

Q:替换bin和拷贝hadoop.dll的原因是啥

A:替换bin,里面有一个winutils.exe文件是需要的,hadoop.dll是一个windows下面的一个可执行脚本文件

Q:杨俊:官网有下载么,以后去哪升级

A:升级哪一个软件啊???

Q:windows必需安装hadoop环境才能开发吗? 可以直接在windows下的idea链接linux下的hadoop?

A:不行的,必须配置,不然后面写其他的代码,还会有问题的。只能通过端口远程访问,访问linux的hadoop也是通过端口远程访问

Q:以前安装的JDK和maven移动一下目录重新配一下环境变量,不受影响吧,现在放的地方有点乱

A:没问题

Q:windows的Hadoop版本与集群的Hadoop版本不一样行不行

A:可以,没问题,只要你的有hadoop.dll以及winutils.exe文件即可

Q:hadoop-3.1.4.tar解压不了,我用的7Z

A:试试看其他的解压缩工具

Q:JAVA代码还是scala

只能写java代码

实操:

IDEA查看Java源码技巧

DEA一些代码快捷键的生成方法,欢迎大家补充,提供学习使用

运行报了个错

image.png

https://blog.csdn.net/weixin_45077780/article/details/107329186

https://www.jianshu.com/p/ea2de77eb9d4(采用了这个方法)

https://my.oschina.net/u/4266655/blog/3999399

结构并不是这个问题

java.net.ConnectException: Call From DESKTOP-BV4G06A/172.17.80.113 to node01:8080 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

Q:快捷顺带讲了,操作太快了,没玩过IDEA

  1. ctrl + shift + alt + N ===> 查找某一个类
  2. ctrl + 鼠标左击 ====》进入源代码
  3. Shift+ Alt + <- idea往后退一步:

file:/// 本地文件系统

分布式文件系统是 hdfs://node01:8020

Q:hdfs快 还是fdfs快

A:fastDFS是一个文件存储系统;hdfs是一个分布式文件系统:

​ fastDFS更快点,hdfs重在存储海量的数据,hdfs上面的文件都是顺序读写的

断点续传的功能:类似于百度网盘的功能

可以记录传输了都少个字节,下一次继续上一次的字节数据读取

namenode以及secondaryNamenode功能解析

DanielCry:这些代码是不是用Python也能做?

小兔弗雷迪:我可是要改hadoop源码的男人,怎么能不搞?

一定要搞,而且还要搞到底

Q:知识点,面试点内容,也讲讲

A:面试点:小文件的解决方案,读写文件的过程等等()

6. NameNode和SecondaryNameNode功能剖析

namenode主要是做元数据信息的管理:

  • **元数据信息:**描述数据的数据

    • 其实就是类似于一个小的记事本,记录了我们的文件存储在哪个盘,哪个隐藏文件夹
    • **描述数据的数据:**类似于新华字典的目录
    • 举个例子:新华字典里面有很多字,查找某一个字很难 ==》 通过这个字的偏旁部首,发音等等各种方式,先去查找目录,然后再去看这个字在第多少页
    • 再举个例子:鼠标右键 ===》 查看某个文件的属性 ==》 都是描述这个文件的信息
    • 所有的元数据信息为了快速的查找都是存放在内存当中:丢失的问题
  • 为了保证元数据信息的安全的问题,引入了fsimage文件 ===》 其实就是类似于元数据信息某一个时刻的快照

    • 快照:snapShot 类似于某个时间点拍一个照片 类似于玩游戏存档 下一次玩的时候,继续你上一次的等级
    • 九点钟拍了一个快照,做了fsimage的快照。到了九点十分:服务器宕机 09:00 到09:10的时候 元数据全部都丢了
  • 为了解决平时操作元数据的记录:引入了edits文件

    • 记录了你平时每一次操作的日志
    • fsimage+edits = 一份完整的元数据信息

Q:拍照的时候edits会清空么

A:做快照的时候,edits文件会同步给secondaryNamenode,老的edits文件会被删掉

Q:snn检查时间可以更改么?

A:可以的,可以配置,默认两个条件去检查进行合并

1、时间达到1个小时合并一次

2、edits文件操作次数达到100W次

Q:跟redis持久化挺像的

A:对的,redis的持久化rdb和aof

Q:namenode内存要大

A:secondAryNamenode内存也要大

Q:老王,这个频率在哪个文件里配置

A:有配置文件可以改的

Q:修改完不会实时生效?每小时扫描以后才生效?

A:修改完重启hdfs的服务生效

Q:要满足的条件可以设置么

A:可以设置

Q:edits没有被删掉?

A:历史的数据的edits不会马上被删掉

:比如改成两个小时

  • 元数据信息的配置:非常珍贵

Q:HA环境都用JournalNode合并editslog和fsimage吧

A:不是的,HA环境,使用的是journalNode来保存edits的共享文件,实时的进行同步到其他的standBy的namenode集群节点

Q:secondary是一个单独的节点吗

A:是滴,是一个进程,一般实际工作当中如果用到了,放在一台单独的服务器上面

Q:生产会这么用吗

A:测试可能会这么用,生产环境一般都做高可用

Q:jn有一个节点数据人为删除,能恢复么?

A:如果在垃圾站可以恢复,如果没了就恢复不了啦

Q:还是没太弄明白,为什么要在windows环境下配置hadoop才能操作linux下的hadoop,

我一直以为直接引入jar包,然后链接hadoop的端口就可以操作了,到底这个dll文件做 了什么事情。

A:dll是一个脚本配合winutils.exe,使用window模拟了一个linux的环境

Q:我们搭建的hadoop集群没有配置secondaryNameNode吧?

A:有的,我们没有配置HA,太吃内存了

Q:我们之前安装的是hadoop集群 还是HDFS集群

A:之前安装的是hadoop集群,包含了hdfs以及yarn的集群

Q:做hadoop集群时namenode datanide都配置了相同的内存,实际部署应该是namenode要配很大的内存吗

A:对的,namenode大内存,datanode大磁盘

Q:要扩展hdfs 机器 还需要扩展 hadoop吗

A:需要的

Q:mac怎么搞

A:mac不用搭建开发环境,安装idea即可

Q:secondarynode和journalnode是包含于的关系么

Q:环境配置需要 全部理解吗?

A:不用理解,照着做一遍即可

http://www.dayanzai.me/

软件下载网站

C 零散知识点

  1. 虚拟化:简单认为,就是帮我们把一台电脑弄成多台
  2. 集群的时钟一定要保持同步:两种方式
    • 同步网络时间:学习时候使用这种方式比较简单
    • 同步某一台机器的时间 实际工作当中都是这种方式
  1. 全部统一创建普通用户hadoop
  2. 删库命令 rm -rf / 使用root用户来执行最有效,不想干了就执行一把(滑稽)
  3. 以后工作当中如何进行集群的服务的安装规划:
    • 刚开始起步做大数据的一些公司,服务的规划就是你来做
      • 评估需求
      • 预估每天的数据量
      • 申请服务器的数量
      • 如何帮公司开源节流 降本增效
      • 进行服务的规划

D 其他备注

  • 每次上完课都会有一定作业,如果作业太难,就会直播讲,作业都是直播讲过的内容
  • 如果没有javaSE的基础,需要先看前面的javaSE的录播视频
  • 需要一定的linux的基础,常用的命令一定要熟练,还是要多敲敲命令,在公司一般不会让人直接通过文本编辑器去连接服务器
  • 这里面的安装步骤,跟服务器安装linux的操作系统是一样的
  • 注意:网络的配置,如果之前没有配置过的同学,一定要参见视频
  • 环境的问题不是大问题:如果在4个小时之内没有解决掉,直接找我和助教
  • 远程的工具使用的是向日葵
  • notepad++ 可以快捷配置hadoop信息(liux不熟悉可用)

Q&A

Q1:map reduce过程中,shuffle failed可能是什么原因造成的?Failed Shuffles=0

A1:原因可能有很多:网络延迟太大,数据的序列化和反序列化失败

Q2:公司的环境可以吗?版本不太一样

A2:只要大的版本差别不大即可

Q3:企业是不是用HA集群了,有两个主节点,不然一个主节点那台机器挂了不都是没了

A3:对的,hadoop3.x 当中支持多个namenode,可以不止有两个

Q4:namenode和DataNode哪个是做数据处理的,哪个是做数据收发的

A4:namenode主要是做客户端的请求的处理

​ datanode与客户端进行通信,做数据的读取和写入的过程

练习
  1. 将开发环境构建好
  2. 熟悉hdfs的常用的shell命令

出现的一些问题

hadoop环境配置出现的问题

环境变量的用户变量与系统变量的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是我,Zack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值