前言

这是本人第一次写博客,技术不够,不敢妄谈一些太过前沿的技术的东西,想简单写写自己学过的东西,就当温故而知新了。本篇便以hadoop框架为主题来写点东西。众所周知,hadoop框架出现已久,hadoop主要由三个部分组成:hdfs、yarn、mapreduce。
诚然,作为早期的分布式开源框架,MapReduce实际应用能力和现在的spark、storm、flink相比有点捉襟见肘,但依旧可以拿来解决一部分的大数据问题,而其分布式文件系统hdfs还有资源管理yarn估计在很长的时间里都不会被淘汰。
本文就不再叙述hadoop如何安装,如果有需要可以参考官网:hadoop环境搭建 。毕竟现在实际环境大多都是由cm框架来搭建,用云服务器的连搭建都可以省略,即便搭建伪分布式也不是很难,况且搭建步骤应该再也没有比官网要更详细的准确的了所以在此便不再浪费笔墨。

hdfs

hdfs是hadoop的基石,即分布式文件存储系统。他的理念就是分而治之,通过一个主节点namenode和多个从节点DataNode来搭建的集群来协作工作。它的原理是先将大文件拆分成多个小的块文件(默认为128m,可以调整,不够的就作为一个块,由此可见hadoop并不适合处理多个的小的文件,而更适合处理少量的大的文件),然后由多个datanode节点分别储存,为了防止数据的丢失每个块默认都会有3个副本,为了更加快速地识别块文件是否完整,hdfs为此引入了校验和的概念,即通过特定的算法将数据的相关内容生成一个校验和,而每次调用块文件的时候都会计算当前块文件的校验和然后和其他节点上的块文件的校验和进行比对,以此来保证数据的安全性。
而集群的安全性则需要心跳机制来保证——默认情况下每3秒DataNode会想主节点namenode进行报告,证明自己还活着,当超过一定时间没有报告namenode会认为此节点挂掉,为了保证数据安全,namenode会将此节点的丢失的副本copy到其他节点。所以对于集群来说时间同步显得尤为重要。
而namenode的安全则需要配合zookeeper而搭建的高可用集群来保证,这里不再叙述。
另外值得一提的是在namenode上操作数据,namenode往往不会将直接操作数据,而是将进行的操作保存为编辑日志文件。因此每次集群启动的时候namenode都会先加载镜像文件,然后再加载对编辑日志文件。但当一定时间,编辑日志文件会变得冗余,这个时候就需要secondarynamenode来对镜像文件和编辑日志文件进行合并。

yarn

yarn是hadoop的任务调度和资源管理器,在早期版本的hadoop当中是没有yarn的。yarn的出现使得集群在做任务能够有序的执行。这一块没有什么好讲的,需要记住的就是提交任务的命令(hadoop当前目录下):bin/yarn jar (jar包路径) (可选参数)。

mapreduce

mapredeuce是hadoop当中唯一的分布式计算框架,它包含了两个算子,map和reduce。虽然在目前看来mapreduce计算框架是有点捉襟见肘了(算子太少,要进行复杂的计算就必须重写大量的代码),但是其实现原理还是不会过时的。
mapper端首先会对切片按行进行读取,形成<(偏移量),(值)>的键值对。这个时候mapper端可以对值调用.split()根据数据之间的分隔符来对读取的数据进行分割,返回一个字符串数组,这个时候可以先把不必要的脏数据过滤一下(对于大量的数据来说,脏数据是很常见的,某些业务需求是需要了解脏数据的比例需要统计),之后再对需要进行下一步操作的数据进行输出。
接下来会进入到shuffle阶段。值得注意的是,MapReduce当中并没有明确的说明有这个shuffle过程,是为了方便理解把从map端输出到redeuce端之间的过程统称为shuffle。数据从mapper端输出后会进入内存当中的环形缓冲区,当数据达到默认值100m的80%会发生溢写操作,数据根据reduce端的个数进行分区排序,然后被写成细小的文件到磁盘中。
最后reduce端拉取数据进行数据的合并,并输出最终结果。

大数据学习心得--hadoop框架相关推荐

  1. 大数据学习之hadoop——07阿里云服务器搭建集群以及遇到的问题解决办法

    在这段服务器搭建伪分布集群中我遇到了如下问题 1.进入远程连接界面却不知道密码 2.使用MobaXtem工具连接服务器失败 3.集群格式化失败 4.web访问失败 按照下面的所有步骤操作.以上的问题都 ...

  2. 大数据学习心得、技术路径、生无可恋的朋友加油吧!明天就是你的天下

    申明: 本文旨在为普通程序员(Java程序员最佳)提供一个入门级别的大数据技术学习路径,不适用于大数据工程师的进阶学习,也不适用于零编程基础的同学. 前言: 一.背景介绍 二.大数据介绍 正文: 一. ...

  3. 大数据学习之Hadoop生态圈(一)

    文章目录 前言 1.什么是hadoop 2.Hadoop起源 3.Hadoop的四大特点 4.Hadoop的三大发行版本 5.Hadoop的版本迭代 6.Hadoop的优点及缺点 7.Hadoop组成 ...

  4. 大数据学习1 - hadoop环境搭建及操作

    目录 目录 目录 一.什么是大数据? 二.什么是hadoop? 1.Hadoop核心组件 2.HDFS架构 3.MapReduce 3.Yarn架构 ​编辑 三.Hadoop的集群模式 1.完全分布模 ...

  5. 大数据学习笔记-hadoop(1)

    目录 前言 一.什么是大数据? 二.Ubuntu基础配置 1.安装Ubuntu20.04 2.修改系统语言为中文 3.修复vi编辑器 4.使用root账户 5.网络配置 6.配置源 7.更新 三.ss ...

  6. 2021-12-30大数据学习日志——Hadoop离线阶段——HDFS

    学习目标 理解分布式文件存储的概念与实现 掌握HDFS分块存储.副本机制等特性 学会shell操作HDFS 掌握HDFS读写流程 理解NameNode元数据管理机制 理解SecondaryNameNo ...

  7. hadoop jar包_【大数据学习】Hadoop的MR分布式开发小实战

    前提:hadoop集群应部署完毕. 一.实战科目 做一个Map Reduce分布式开发,开发内容为统计文件中的单词出现次数. 二.战前准备 1.本人在本地创建了一个用于执行MR的的文件,文件中有209 ...

  8. 大数据学习之一——Hadoop单机部署

    1 背景 由于我本人服务器有限,因此尝试进行单机安装,主要为了学习使用. 2 前提 hadoop安装依赖JDK. 我这里尝试用下JDK18看看. 下载地址:https://jdk.java.net/1 ...

  9. 大数据学习之Hadoop任务输出到多个目录中

    有可能使 Hadoop 任务输出到多个目录中吗?如果可以的话,怎么做? 1)可以输出到多个目录中,采用自定义OutputFormat. 2)实现步骤: (1)自定义outputformat, (2)改 ...

最新文章

  1. 使用HMTL5 API监控前端性能
  2. 谈谈dpdk应用层包处理程序的多进程和多线程模型选择时的若干考虑
  3. WSS3.0自带数据库可以使用SQL 2005 Server Management Studio来管理
  4. 何谓 SQL 注入,这个漫画告诉你
  5. listView使用checkBox的实现
  6. 自定义SharePoint Webservice
  7. mysql swarm_【Docker】 Swarm简单介绍
  8. linux oracle查询乱码问题,linux中oracle中文乱码解决方法
  9. 使用变量替换批量部署GoldenGate
  10. linux下编译opendds,Linux下编译OpenDDS
  11. hdoj 2586 How far away ?
  12. 断章·贵鬼篇·白羊妇语
  13. python cpu温度_使用Python(和其他一些不错的技巧)检查CPU的温度
  14. 2.4G无线音频双向传输技术运用
  15. 第五章 软件项目成本管理
  16. SQL Sever 2012
  17. 生产周期如何改善?我来教您
  18. uniApp简单使用webSocket实现核销二维码业务
  19. wfp例子inspect说明
  20. 幻影pin_幻影CSS

热门文章

  1. 百度2016校园招聘-开发测试工程师-在线编程题1-商队运输费
  2. 微信小程序云开发实战:网上商城(五)
  3. vue 给form表单赋值_vue获取form表单的值示例
  4. rtx rtx5_PC玩家巨魔rtx 3080剥皮机与虚假的ebay列表审查炸弹
  5. 仿微信H5聊天系统即时通讯社交完整优化版搭建,IM聊天APP聊天交友客服,带安卓苹果端APP源码+视频教程
  6. mysql 5.7 sql_mode设置 坑
  7. ZEKU2021数字IC验证笔试题(解析)
  8. android alertdialog 样式,设置AlertDialog的列表样式
  9. echarts 仪表盘 label 如何随径向展示
  10. Vue动态改变列表搜索出关键词的字体颜色