hadoop学习笔记

hadoop概述

     Apache Hadoop 为可靠的,可扩展的分布式计算开发开源软件。作为一个数据框架允许使用简单的编程模型跨计算机群集分布式处理大型数据集(海量的数据)。分别由一下三个模块组成:

1、Hadoop分布式文件系统(HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。

2、Hadoop YARN作业调度和集群资源管理的框架

3、Hadoop MapReduce:一种用于并行处理大型数据集的基于YARN的框架。      

上述每个模块有自己独立的功能,而模块之间又有相互的关联。HADOOP通常是指一个更广泛的概念——HADOOP生态圈。

Hadoop起源

为了解决海量数据的可扩展性问题——“如何解决十亿网页的存储和索引问题”。

2003年Google发表了一篇技术学术论文谷歌文件系统(GFS)。GFS也就是google File System,google公司为了存储海量搜索数据而设计的专用文件系统。

2004年Nutch创始人Doug Cutting基于Google的GFS论文实现了分布式文件存储系统名为HDFS。

2004年Google又发表了一篇技术学术论文MapReduce。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行分析运算。

2005年Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了该功能。


Hadoop生态圈及各个组件简介 

  1. HDFS:分布式文件系统

  2. MAPREDUCE:分布式运算程序开发框架

  3. HIVE:基于大数据技术(文件系统+运算框架)的SQL数据仓库工具

  4. HBASE:基于HADOOP的分布式海量数据库(列式存储)

  5. ZOOKEEPER:分布式协调服务基础组件

  6. Oozie:工作流调度框架

  7. Sqoop:数据导入导出工具

  8. Flume:日志数据采集框架


数据处理流程

采集数据->数据预处理->导入HIVE仓库—>ETL->报表统计——>结果导出导MYSQL->数据可视化

HDFS 简介


特点

1.高可靠性:HADOOP的HA,会有两个namenode,避免了单点故障

2.高效性

3.容错性:hadoop 存储数据是有冗余机制(备份),replication

4.高扩展性:可以添加节点,一种是静态模式,一种是动态模式添加(一边提供服务,一边添加节点数量)

  1. HDFS 的文件在物理上四分块存储的,块的大小可以配置dfs.blocksize

  2. 会给客户端提供一个统一的抽象目标树,

  3. namenode

  4. 文件的各个block的存储管理由DataNode节点承担

  1. hdfs集群的三大角色:namenode(老板) 、secondarynamenode(秘书),datanode(员工)

  2. namenode负责管理整个文件系统的元数据

  3. DataNode负责管理用户的文件数据块

  4. secondarynamenode职责是合并namenode的edit logs 到fsimage文件

  5. 文件会按固定blocksize切成若干份后分布式存储在若干台DataNode上

  6. datanode会定期向namenode汇报自身所保存的block信息(心跳机制),namenode会负责保存文件的副本数量

  7. HDFS的内部工作机制会客户机保持透明,客户端请求访问HDFS都是通过namenode申请来进行的

HDFS的shell


 hadoop fs -ls / #查看目录存储文件
 bin/hdfs dfs -ls /
 ​
 bin/hdfs dfs -cat /wc/input/2.txt #查看文件内容
 hadoop fs -charp -R root /wc #改变文件组属性
 Hadoop fs -chmod 777 文件名
 hadoop fs -chown 改变文件的所有者
 hsdoop fs -put (-copyFromLocal,-moveFromLocal)(可以实现剪切的效果):本地文件上传到HDFS
 hadoop fs -get (-copyTolocal):复制文件到本地路径
 hadoop fs -cp 复制文件
 hadoop fs -du 展示文件大小
 hadoop fs -dus 显示文件大小
 -ls/-lsr 返回文件或目录列表
 -mkdir 创建目录 -p 创建递归目录
 -mv 移动文件或者改名
 -rm(-rmr) 删除文件和递归删除
 -setrep 改变文件的副本数量
 -tail 把文件尾部内容1k字节输出
 -touchz 创建空文件
 -getmerge 将多个文件合并到一个文件

hdfs 的读写机制

HDFS 数据存放策略就是采用同节点与同机架并行的存储方式。在运行客户端的当前节点上存放第一个副本,第二个副本存放在于第一个副本不同的机架上的节点,第三个副本放置的位置与第二个副本在同一个机架上而非同一个节点


HDFS各节点详解

namenode在内存和磁盘中(fsimage和editslog)上分别存在一份元数据镜像文件,内存中元数据镜像保证了HDFS文件系统文件访问效率,磁盘上的元数据文件保证HDFS文件系统的安全。

fsimage:保存文件系统至上次checkpoint为止目录和文件元数据

edits:保存文件系统从上次checkpoint起对HDFS的所有操作记录日志信息

  1. 文件启动

  1. 启动namenode

  2. 读取fsimage元数据镜像文件,加载到内存中

  3. 读取edits日志文件,加载到内存中,使当前内存元数据信息与上次关闭系统时一致,然后 在磁盘上生成一份内存中元数据镜像相同的fsimage文件,同时生成一个新的空的edits文件用于记录以后的HDFS文件系统的更改

  4. 启动datanode

  5. namenode接收datanode发送注册请求

  6. 接收DataNode发送的blockreport

2.namenode 元数据管理

   

         1. 内存镜像=fsimage+edits

         2. edits文件过大将会导致namenode重启速度慢

         3. secondary namenode 负责定期合并他们

3.secondaryNamenode 工作流程

  1. secondary通知Namenode切换Edits文件

  2. secondary通过HTTP请求从namenode获得fsimage和edits文件

  3. secondary将fsimage载入内存,然后合并edits

  4. secondary将新的fsimage发回给Namenode,用新的fsimage替换旧的

datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长

HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为: timeout = 2 * heartbeat.recheck.interval + 10 * dfs.heartbeat.interval 而默认的heartbeat.recheck.interval 大小为5分钟,dfs.heartbeat.interval默认为3秒。

需要注意的是hdfs-site.xml 配置文件中的heartbeat.recheck.interval的单位为毫秒,dfs.heartbeat.interval的单位为秒。所以,举个例子,如果heartbeat.recheck.interval设置为5000(毫秒),dfs.heartbeat.interval设置为3(秒,默认),则总的超时时间为40秒。


  • 29
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个开源的分布式计算框架,可用于大数据的存储和处理。它采用了分布式文件系统(HDFS)和分布式计算框架(MapReduce),能够将大数据分割成小的数据块,并在集群中的多台计算机上并行处理这些数据块。 HDFS是Hadoop的分布式文件系统,它将大文件切分为多个数据块,并将这些数据块存储在集群中的多个计算机上。HDFS使用主从架构,其中NameNode负责管理文件系统的元数据,而多个DataNode负责实际存储数据。HDFS具有高容错性,能够自动复制数据块以保证数据的可靠性。 MapReduce是Hadoop的分布式计算框架,它通过将计算任务划分为多个Map和Reduce阶段来进行并行计算。Map阶段将输入数据切分为多个独立的小任务,并在集群中的多个计算机上并行执行。Reduce阶段将Map阶段的输出合并并进行聚合计算。MapReduce具有自动并行化、容错性和可扩展性等优点,能够高效地处理大规模数据集。 在学习Hadoop时,首先要了解Hadoop的核心组件,包括HDFS和MapReduce。然后,需要学习Hadoop的架构和工作原理,理解Hadoop如何实现分布式存储和计算。接下来,需要学习Hadoop的安装和配置,包括在单机和集群环境下的安装和配置过程。此外,还需要学习Hadoop的命令行工具和管理工具,以及Hadoop的API和编程模型。 在实际使用Hadoop时,需要掌握Hadoop的常用操作和管理技巧,如如何上传和下载文件、如何执行MapReduce作业、如何监控和管理Hadoop集群等。同时,需要学习Hadoop的优化技术和调优方法,以提高Hadoop集群的性能和效率。 总之,对于Hadoop学习,除了理解其基础知识和工作原理外,还需要熟悉其常用操作和管理技巧,以及灵活运用Hadoop来解决实际的大数据问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值