大数据基础篇_01

说明

该篇文章用于大数据的初学人群进行交流学习

本章内容主要是对大数据概念,常用技术栈及常用架构Hadoop的介绍。以及hdfs相关的机制的介绍

大数据概述

什么是大数据:从狭义上来讲是处理海量数据的软件技术体系,从广义上来讲是数字化,信息化时代的支撑,以数据为生活赋能

大数据能够解决的问题:海量数据的存储,计算 ,传输问题。

大数据特征: 数据体量大,发展速度快,种类多,准确性未知,价值密度

大数据技术栈

存储:HDFS(Hadoop disturbited file system),Hbase等

计算: Mapreduce Hive Spark Flink等

传输: sqoop flume kafka Pulsar等

Hadoop简介

广义:整个Hadoop的生态圈,包括数据采集,存储,计算,传输,调度等组件

狭义:Hadoop框架本身,包括HDFS、Mapreduce、YARN

Hadoop基于linux的相关配置指令

(1)启动hadoop集群

#切换至linux的hadoop的文件目录下
cd /export/server/hadoop/
#同时启动
start-all.sh
hdfs start-dfs.sh 
单独启动
yarn start -yarn.sh
同时关闭关闭
stop-all.sh
 

这样就算执行成功了

(2)启动历史服务

mapred --daemon start historyserver 启动历史日志
jps 查看正在进行的jar进程

(3)页面访问hadoop

1.访问HDFS 虚拟机地址:9870

如果看到以下页面说明你成功了


2.访问YARN 虚拟机地址:8088

如果看到以下页面说明你成功了


3.访问历史日志 虚拟机地址:19888

如果看到以下页面说明你成功了

Haddop集群案列(相当于各种语言的helloworld)

评估圆周率

第一步:切入Hadoop mapreduce文件下
具体命令为:cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce
第二步:找到example路径:hadoop-mapreduce-examples-3.3.0.jar
第三步:评估圆周率命令为:hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 10 10

如果看到以下页面说明你成功了

HDFS的架构

1.概念

hdfs是一种分布式的文件存储系统

为什么要进行分布式存储?

避免文件太大,单台服务器无法承担,靠多台服务器分区存储。同时可以获得成倍的传输、写入

读取效率。

2.基础架构

HDFS集群有两个重要角色:Namenode Datanode

四个重要组件:HDFS Client、namenode、datanode 和Secondary Namenode

如图所示为hdfs的基础架构图及各个组件的主要功能

3.HDFS 切块

概念:hdfs存取文件时并不是直接存取的,而是将文件切成数个128M的block块

为什么要切块?

因为文件太大会影响传输效率和读取效率

4.NameNode 如何管理BLOCK块

需要了解俩个文件:

edits:用于记录hdfs的每一个操作,以及本次操作所影响的block

fsimage:edits 文件合并的结果

namenode元数据管理维护:每次对hdfs的操作都会记录在edits中,每个edits达到上限以后开启新的edits,多个edits会定期合并成fsimage。

SecondaryNameNode元数据合并:SecondaryNameNode会通过http从NameNode拉取数据(edits和fsimage)然后合并完成后提供给NameNode使用。

注:

对于元数据的合并,是一个定时过程,基于: dfs.namenode.checkpoint.period,默认3600(秒)即1小时 dfs.namenode.checkpoint.txns,默认1000000,即100W次事务)

5.HDFS的面向存储的三大机制

副本机制:为了保证数据安全和效率,block块信息存储多个副本

负载均衡机制:namenode为了保证不同的datanode中block块信息大体一样,分配存储任务的时候会优先保存在余量比较大datanode上

心跳机制:datanode每隔3秒钟向namenode汇报自己的状态信息,如果某个时刻,datanode连续10次不汇报了,namenode会认为datanode有可能宕机了,namenode就会每5分钟(300000毫秒)发送一次确认消息,连续2次没有收到回复,就认定datanode此时一定宕机了

6.HDFS数据的写入

第一步 客户端发送写入请求给namenode

第二步 namenode 接受到请求校验权限,文件,存储路径,无误后通知客户端文件可以写入

第三步 客户端收到确认将文件切成许多个默认大小为128m的block,再把block切成64kb的包

第四步 客户端将处理好的块信息再次返回给namenode,获取能够储存block的datanode列表

第五步 namenode查看位置较近且不忙的datanode,放入列表中返回给客户端

第六步 客户端连接namenode,并发送packet数据包,第一个datanode接受完以后给客户端ack应答,同时datanode开始复制刚才收到的数据包给node2.node2复制给node3(流式传输)

第七步 其他packet重复第五步的步骤

第八步 其他block重复4-7步

第九步 客户端和namenode互相确认文件数据已经保存完成

7.HDFS数据的读取

1.客户端发送读取文件请求给namenode

2.namdnode接收到请求,然后进行一系列校验(路径是否存在,文件是否存在,是否有权限等),如果没有问题,就告知可以读取

3.客户端需要再次和namenode确认当前文件在哪些datanode中存储

4.namenode查看当前距离下载位置较近且不忙的datanode,放入列表中返回给客户端

5.客户端找到最近的datanode开始读取文件对应的block块信息(每次传输是以64kb的packet数据包),放到内存缓冲区中

6.接着读取其他block块信息,循环上述3-5步,直到所有block块读取完毕(根据块编号拼接成完整数据)

7.最后从内存缓冲区把数据通过流写入到目标文件中

8.hdfs的其他机制 (仅做了解) 

安全机制
归档机制
垃圾桶机制

9.hdfs元数据管理流程

1.namenode第一次启动的时候先把最新的fsimage文件中内容加载到内存中,同时把edits文件中内容也加载到内存中

2.客户端发起指令(增删改查等操作),namenode接收到客户端指令把每次产生的新的指令操作先放到内存中

3.然后把刚才内存中新的指令操作写入到edits_inprogress文件中

4.edits_inprogress文件中数据到了一定阈值的时候,把文件中历史操作记录写入到序列化的edits备份文件中

5.namenode就在上述2-4步中循环操作...

6.当secondarynamenode检测到自己距离上一次检查点(checkpoint)已经1小时或者事务数达到100w,就触发secondarynamenode询问namenode是否对edits文件和fsimage文件进行合并操作 7.namenode告知可以则进行合并

8.secondarynamenode将namenode上积累的所有edits和一个最新的fsimage下载到本地,并加载到内存进行合并(这个过程称checkpoint)

9.secondarynamenode把刚才合并后的fsimage.checkpoint文件拷贝给namenode

10.namenode把拷贝过来的最新的fsimage.checkpoint文件,重命名为fsimage,覆盖原来的文件

HDFS基于linux的shell命令

hadoop fs - #既可以操作hdfs也可以操作本地文件

hdfs #只能操作hdfs系统

ls 显示文件列表

-mkdir -p创建目录

put 从本地文件系统 上传到目标文件系统

get 将hdfs文件拷贝到本地文件系统

mv 将文件从原路径移动到目标路径

cp 将文件拷贝到目标路径中

cat 查看文件内容

appdendToFile 将本地linux文件追加到Hdfs文件中

  • 29
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值