Hadoop学习分享----入门概要介绍

一、什么是Hadoop?


  • 基于2003年google发表Map/Reduce 和 Google File System(GFS)论文研发。
  • 用java实现的HDFS(Hadoop分布式文件系统)+Map/Reduce(并行编程计算处理框架)。
  • 对大量数据进行分布式处理的软件框架。

 

二、Hadoop的优势


 1、高可靠性:

HDFS假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。MapReduce的任务监控保证了分布式处理的可靠性。

2、高效性:

Hadoop (M/R)是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。

3、高扩展性:

Hadoop可以扩展至数千个节点,对数据持续增长,数据量特别巨大的需求很合适。

4、低成本:

Hadoop是开源项目,而且不仅从软件上节约成本,硬件上的要求也不高。Hadoop生态群活跃,其周边开源项目丰富,HBase, Hive,Impala等等基础开源项目众多。

三、Hadoop的不足


1、不适合低延迟数据访问,不适合做实时数据分析。

2、无法高效存储大量小文件。

3、不支持多用户写入及任意修改文件。

四、Hadoop的两大核心子项目介绍


 (一)、HDFS简介

提供一个高效可用的分布式文件系统,具体如下:

1、可以创建、删除、移动或重命名文件,等等。
2、采用多个备份,保证单节点出现故障是,数据不会丢失。
3、是一个抽象的文件系统,实际的文件数据是分布在多个节点上。

 

HDFS的结构:



<1>、NameNode和Secondary NameNode介绍

NameNode:

  • 负责管理文件系统名称空间(Namespace)和控制外部客户机的访问。
  • 维护文件系统树(filesystem tree)以及文件树中所有的文件和文件目录信息的元数据(metadata)。
  • 是hadoop守护进程中最重要的一个,位于HDFS的主端,它跟踪文件如何被分割成文件块,而这些块又被哪些节点存储,以及分布式文件系统的整体运行状态是否正常。

Secondary NameNode:

  • 是一个用来监控HDFS状态的辅助后台程序。就想NameNode一样,每个集群都有一个Secondary  NameNode,并且部署在一个单独的服务器上。Secondary  NameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的快照。由于NameNode是单点的,通过Secondary  NameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary  NameNode可以及时地作为备用NameNode使用。


NameNode维护以上管理信息的四个重要的物理文件:

  • fsimage:二进制文件,存储HDFS的文件和目录元数据。格式如下:
  • edits:作为NameNode的变更日志,记录fsimage的变更信息,如创建/删除目录,创建/删除文件,修改权限,修改namespace/diskspace限额等。
  • fstime:记录最近一次checkpoint的时间,作为Secondary NameNode判断当前是否需要进行checkpoint的依据。
  • VERSION:记录namspaceID,作为整个namespace的唯一标识,DataNode也保存这个标识,在每次DataNode连接NameNode时都要检查,不一致的DataNode会被拒绝连接。

NameNode和secondary Namenode:

为什么会用这样的交互机制?

原因:

1.fsimage是存于硬盘的元数据检查点,Hadoop不会对每个文件操作都写出到fsimage,这样是很慢的,但是每个文件操作都会在提交后运行前先写入edits编辑日志,这样在namenode出现故障后,就会将fsimage和edits编辑日志结合读入内存,重建元数据信息。

 2.为了避免edits编辑日志的无限制扩大,secondary namenode 就回按照时间阈值(比如1小时)或者按大小阈值(edits编辑日志文件大小超过64M,这些参数都可以设置)“周期性”的读取namenode中的edits和fsimage重构fsimage检查点,同时在namenode中进行edits的滚动,来解决这个问题。

<2>、DataNode介绍

  • 提供数据存储空间,保存HDFS中的数据信息,它管理的是数据块(Block) 。
  • 响应来自 HDFS 客户端的读写请求,
  • 响应来自 NameNode 的创建、删除和复制块的命令。

当一个Datanode启动时,它会扫描本地文件系统,产生一个这些本地文件对应的所有HDFS数据块的列表,然后作为报告发送到Namenode,这个报告就是块状态报告。


<3>、Client介绍

  • 代表用户与namenode和datanode交互来访问整个文件系统。客户端提供了一些列的文件系统接口,因此我们在编程时,几乎无须知道datanode和namenode,即可完成我们所需要的功能。

<4>、Namenode,Datanode,Client之间的通信

  • Namenode,Datanode,Client之间的通信都是建立在TCP/IP的基础之上的。当Client要执行一个写入的操作的时候,命令不是马上就发送到Namenode,Client首先在本机上临时文件夹中缓存这些数据,当临时文件夹中的数据块达到了设定的Block的值(默认是64M)时,Client便会通知Namenode,Namenode便响应Client的RPC请求,将文件名插入文件系统中并且在Datanode中找到一块存放该数据的block,同时将该Datanode及对应的数据块信息告诉Client,Client便把这些本地临时文件夹中的数据块写入指定的数据节点。



(二)、Map/Reduce和计算任务框架介绍

<一>、Map/Reduce介绍

  • 提供了一套并发处理数据的接口
  • Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。
  • Reduce 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。

 

执行计算流程图:


  • Map/Reduce的本质是用户需编程提供两个以Key/value方式操作的函数:

          f(map) ~ input_data    list (k1,v1)

          f(reduce) ~  (k1,list(v1))   result_data

  • Map/Reduce系统提供的隐藏操作有:

         将map结果list(k1,v1)重新分发,使同一个k1对应的数据(k1,list(v1))定向到同一个计算单元reducer。

 

例子:我们想要统计每个员工每天在开会上平均要花费多少时间。数据内容:employee, date, meeting_time。

  • 如果用sql,maybe:select employee, avg(meeting_time) from tablename group by employee.
  • 如果用map/reduce programming,maybe:map过程,把数据按<employee, meeting_time>分发;reduce过程,对同一个employee的meeting_time求平均,并输出<employee, avg(meeting_time)>




<二>、JobTracker和TaskTracker介绍:

JobTracker介绍:

JobTracker后台程序用来连接应用程序与Hadoop。用户代码提交到集群以后,由JobTracker决定哪个文件将被处理,并且为不同的task分配节点。同时,它还监控所有的task,一旦某个task失败了,JobTracker就会自动重新开启这个task,在大多数情况下这个task会被放在不用的节点上。每个Hadoop集群只有一个JobTracker,一般运行在集群的Master节点上。


TaskTracker介绍:

TaskTracker与负责存储数据的DataNode相结合,其处理结构上也遵循主/从架构。JobTracker位于主节点,统领 MapReduce工作;而TaskTrackers位于从节点,独立管理各自的task。每个TaskTracker负责独立执行具体的task,而 JobTracker负责分配task。虽然每个从节点仅有一个唯一的一个TaskTracker,但是每个TaskTracker可以产生多个java 虚拟机(JVM),用于并行处理多个map以及reduce任务。TaskTracker的一个重要职责就是与JobTracker交互。如果 JobTracker无法准时地获取TaskTracker提交的信息,JobTracker就判定TaskTracker已经崩溃,并将任务分配给其他 节点处理。







  

五、Hadoop其他重要子项目


 1、Hbase

  • Google Bigtable的开源实现
  • 列式数据库
  • 可集群化
  • 可以使用shell、web、api等多种方式访问,通过api函数对数据库进行操作
  • 适合高读写(insert)的场景:大量数据向数据库中写入,读出
  • HQL查询语言:Hbase Query Language
  • NoSQL的典型代表产品

2、Hive 蜂巢

  • 数据仓库工具,可以把hadoop下的原始结构化数据变成Hive中的表
  • 支持一种与SQL几乎完全相同的语言。除了不支持更新、索引和事务,几乎SQL的其它特征都能支持
  • 可以看成是从SQL到Map-Reduce的映射器
  • 提供shell,JDBC/ODBC,Thrift,Web等接口

3、Zookeeper动物园管理员:通信协调软件:Hbase数据节点之间的协调

  • Google Chubby的开源实现
  • 用于协调分布式系统上的各种服务。例如确认消息是否准确到达,,防止单点失效,处理负载均衡等
  • 应用场景:Hbase,实现Namenode自动切换
  • 工作原理:领导者,跟随者以及选举过程

4、Avro鹰

  • 数据序列化工具,由Hadoop的创始人Doug Cutting主持开发
  • 如:java中产生数据,存入磁盘,需要先序列化
  • 用于支持大批量数据交换的应用。支持二进制序列化方式,可以便捷,快速地处理大量数据
  • 动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据
  • Thrift接口

5、Cassandra(没落于hbase)

  • NoSQL,分布式的Key-Value型数据库,由Facebook贡献给apache
  • 与Hbase类似,也是借鉴Google Bigtable的思想体系
  • 只有顺序写,没有随机写的设计,满足高负荷轻型的性能需求
将赛灵思 SDK 工程移植到 Vitis 的分步指南 注:本文转自赛灵思中文社区论坛,源文链接在此。本文原作者为XILINX工程师。 以下为个人译文,仅供参考,如有疏漏之处,还请不吝赐教。 您是赛灵思软件开发套件 (SDK) 用户吗? 您是否正在计划将自己的工程移植到 Vitis 软件平台? 那么本篇工程移植分步指南将能祝您一臂之力。 从 2019.2 版开始,赛灵思 SDK 开发环境已统一整合到全功能一体化的 Vitis™ 统一软件平台中。 尊敬的 SDK 用户,您只需轻点几下鼠标即可体验这一功能丰富的工具! 马上开始将工程从赛灵思 S 阅读详情

相关推荐

硬件基础——mos管

文章目录前言一、寄生参数二、使用步骤1.引入库2.读入数据总结 前言 MOS管设计重点 一、寄生参数 1.寄生电容 mos管有寄生电容Cgs,此电容大小一般为pF级别,一般规格书可以查到。 使用时,要特别注意GS管教的寄生电容Cgs,控制MOS管的导通与截止,本质上是控制Cgs电容的充放电。(最好要加限流) 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt imp

Malqaq的博客 6597

谈谈JAVA的字符串

1、String类 String是一个特殊的类,它自带的方法里面看起来修改字符串内容的实际上都是返回一个新的字符串,而原来的字符串从未被改变过。 2、重载操作符(在特定的类操作中,操作符的含义被重新定义过) “+”操作符被用作连接字符串对象是,它底层会创建一个StringBuider对象,然后调用append方法来连接字符串。 3、toString方法 当“+”号连接的对象不是一个S...

rainforc 133

单细胞转录组数据质控实战:如何用Seurat精准过滤低质量细胞(附完整代码)

本文详细介绍了使用Seurat进行单细胞转录组数据质控的实战方法,包括基因检出数、分子计数和线粒体基因比例等关键指标的解读与可视化技巧。通过动态阈值策略和高级质控技巧(如双细胞检测和红细胞过滤),帮助研究者精准过滤低质量细胞,提升数据分析可靠性。附完整代码示例,适合生物信息学研究人员参考实践。

ii567的博客 825

问我大数据怎么入门,我总结了亲身体验的学习路线推荐给她【推荐收藏】

前两天有学妹私信我说,她已经上完大一,大数据专业的,只学过大数据导论,问我大数据该如何入门?我不禁感慨普通高校擅长培养算法人才,但在工程人才的培养上存在很多的问题。

Maynor的博客 5686

中科蓝讯蓝牙开发:从源码到固件的自动化构建链路解析

本文详细解析了中科蓝讯AB530X蓝牙芯片从源码到最终固件的完整自动化构建链路。通过剖析prebuild.bat、GCC编译、postbuild.bat等关键环节,阐述了资源打包、配置生成、代码编译与固件合成的全过程,并重点介绍了如何实现一键编译与自动下载,为开发者高效进行嵌入式蓝牙开发提供清晰指南。

weixin_29193259的博客 121

手机安装Kali Linux

在数字化时代,信息安全和隐私保护显得尤为重要。,作为一款专业的和工具,因其强大的功能和丰富的资源库而受到广大安全研究者和爱好者的青睐。然而,我们通常只能在传统的电脑设备上安装和使用Kali Linux。那么,有没有可能将也变成一款随身携带的Kali Linux设备呢?答案是肯定的。本文将介绍如何在手机上安装Kali Linux,使你的手机变成一款强大的移动安全工具。,我们需要明确一点,手机安装Kali Linux并非简单的操作,需要对手机进行一定的改造和配置。

2301_80124151的博客 6964

Hadoop入门书籍推荐

最近在学习Hadoop,看过好多网上大家的推荐书籍,最终自己接触到如下书籍: 1.自己购买《Hadoop基础教程》,《Hadoop技术内幕 深入解析MapReduce架构设计与实现原理》 2...

cty40618的博客 1955

AMD显卡跑Ollama大模型?手把手教你搞定Windows下GPU识别与加速(以RX 9600XT为例)

本文详细指导如何在Windows系统下使用AMD显卡(如RX 9600XT)运行Ollama大模型,解决GPU识别与加速问题。通过获取非官方Ollama版本、替换ROCm库文件等步骤,实现高效的GPU加速推理,提升大语言模型的运行效率。

weixin_28707365的博客 481

【Hadoop】好用的脚本分享

Hadoop脚本!一键完成,从此告别重复操作!

你不来,再美的天地,都狼藉 ~ 5775

YOLOv5改进——添加SimAM注意力机制

这样可以使注意力机制看到整个backbone部分的特征图,将具有全局视野,类似于一个小的transformer结构。注意:很多改进教程都是将代码直接复制到common.py文件,如果改进机制多了容易造成混乱。在models文件夹下新建modules文件夹,在modules文件夹下新建一个py文件。这里为simam.py。在models文件夹下,复制yolov5s.yaml文件,粘贴并重命名为yolov5s-simam.yaml。运行yolo.py,出现刚刚加入的SimAM注意力机制,说明加入成功。

2302_80099075的博客 1653

ABB机器人刷功能选项全一篇就够——不怕丢失程序和IO配置数据

ABB机器人刷功能选项

m0_66701835的博客 1259

Hadoop RPC源码学习分享

Hadoop RPC源码学习分享 文章目录Hadoop RPC源码学习分享一、RPC框架简介二、Hadoop RPC2.1 客户端部分2.2 服务端部分 一、RPC框架简介   RPC(Remote Procedure Call Protocol,远程过程调用协议)是一种通过网络调用远程计算机服务的协议(分布式进程方法调用)。RPC基于TCP/UDP传递和响应RPC请求,允许一台计算机程序远程调用另一台计算机的子程序,对用户透明。   RPC采用客户端/服务端模式,客户端发送一个带参数的调用请求到服务器

weixin_38836273的博客 1278

彻底解决JDK安装包点击后无反应

jdk双击无法安装,jdk双击没反应,jdk安装包双击后没反应。

renkai721的专栏 8939

hadoop入门篇:hadoop入门教程汇总贴

关于hadoop的分享此前一直都是零零散散的想到什么就写什么,整体写的比较乱吧。最近可能还算好的吧,毕竟花了两周的时间详细的写完的了hadoop从规划到环境安装配置等全部内容。写过程不是很难,最烦的可能还是要给每一步配图,工程量确实比较大。 原计划准备接上一篇内容写dkhadoop的监控页面的参数,突然觉得还是有必要把上两周写的内容做一个汇总,这样方便需要的朋友浏览。上两周写的五篇内容,汇总到一...

adnb34g的博客 2697

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

企业级Hadoop 2.x入门系列之十二入门视频分享

网上流传飞非常好的《Hadoop 2.x入门学习视频》,在此将网盘下载地址分享给大家 课程相关【软件与工具】:     链接:http://pan.baidu.com/s/1hqEGFQk 密码:b4sh 第一次课程:     链接:http://pan.baidu.com/s/1bnetfZL 密码:92cb 第二次课程:     链接:http://pan.baidu.com/s/

云帆大数据 2918

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

linux及hadoop入门,Hadoop学习全程记录——Hadoop入门

开始学习Hadoop,从今天起,想把我学习hadoop全过程记录一下。我会记录在学习过程中碰到的问题、困难以及解决方法等等,如果你也是刚学hadoop,我们可以一起讨论。学了几天,好像入门了,在这里和大家分享,就当全程笔记的第一篇吧。新说明一下我的开发环境操作系统:在windows下使用wubi安装了Ubuntu 10.10hadoop版本:hadoop-0.20上面这个地址是最新hadoop快速...

weixin_39675926的博客 195

学习Hadoop的分享 第一天

如何学习Hadoop

a3061977213的博客 568

Hadoop新手学习指导之入门需知

首先我们要了解 hadoop 是什么? Hadoop 能够做什么? Hadoop 的使用场景是什么? Hadoop 和大数据、云计算的关系是什么?如何使用 hadoop ? 零基础学习 hadoop, 没有想象的那么困难,也没有想象的那么容易。从一开始什么都不懂,到能够搭建集群,开发。整个过程,只要有 Linux 基础,虚拟机化和 java 基础,其实 hadoop 并 没有太大的困难。 下面整...

大数据培训中心 326

Hadoop的入门学习

此外,还可以参考一些在线教程和文档,如Hadoop官方文档、Apache官方网站、Hadoop相关的书籍和博客等,以获取更多的学习资源和案例。学习Hadoop的基本概念和架构:了解Hadoop的组成部分,包括Hadoop分布式文件系统(HDFS)和Hadoop分布式计算框架(MapReduce),以及它们的工作原理和相互关系。安装和配置Hadoop:根据自己的操作系统,在官方网站上下载适合的Hadoop安装包,并按照官方文档进行安装和配置。实践项目:通过完成一些实际的项目来加深对Hadoop的理解和应用。

dsc_zuishuai的博客 421

大数据入门-三分钟读懂Hadoop

保证你的数据是错误的,现实生活中错误是没有办法避免的,我们唯有每天自省,每天反思,才能避免少犯错误或者不犯错误。第三,Hadoop的机器是可以动态的移动数据,这就是啥呢,这就是互帮互助,在现实生活中,你负担大了,我可以帮助你,你可以帮助我。这种帮助机制是有自己的调度资源的。**高扩展性:**Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。第二,Hadoop是可以扩展的,就是说我们一台机器不够用了,可以再加一台,流程不是很复杂,简单的写几条命令就可以了。

2401_84048225的博客 890

【学习】Hadoop大数据学习线路图

入门知识 对于我们新手入门学习hadoop的朋友来说,首先了解一下云计算和云计算技术是有必要的。下面先是介绍云计算和云计算技术的: 云计算,是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机和其他设备,主要是基于互联网的相关服务地增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络、互联网的一种比喻说法。过去在图中往往用...

weixin_44386969的博客 311

Hadoop核心学习之MapReduce编程入门

在IT技术领域,大数据是热点,大数据技术也是热点,以Hadoop为例,作为主流的第一代大数据技术框架,可以说是入门必学。而学习Hadoop,通常从核心框架HDFS和MapReduce学起,今天我们就主要来讲讲Hadoop MapReduce编程入门。 MapReduce入门简介 MapReduce是Hadoop的核心框架之一,主要负责分布式并行计算。MapReduce 既是计算框架,也是编程模型,主要基于Java语言来编程,这也是为什么Hadoop学习要求要有一定的Java基础。 当然,在这几年的

shuimuzh123的博客 263

好程序员大数据培训分享Hadoop入门进阶

好程序员大数据培训分享Hadoop入门进阶,凡事只有入门后才能了解更多,技术更是如此,大数据开发技术也是只有入门后才能更好的深入探究,本篇文章小编和大家分析Hadoop的入门进阶,对大数据开发感兴趣的小伙伴就随着小编一起来了解一下吧。   Hadoop是什么?   Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。   Hadoop框架中最核心设计就是:HDFS和MapReduce.HDFS提供了海

qq_35970166的博客 345

Hadoop、Spark开发入门视频书籍推荐

本人大数据学习菜鸟一枚,从零开始学习大数据,这里分享我的学习过程。自学是一个考验毅力的过程,当然对自身也是一个锻炼提高的过程,但是有时候,从零开始学习,举步维艰,个人深有体会。离开学生时代的填鸭式教学,你会发现学习路上能有引路人带你入门,效率会提高很多。努力很重要,效率、方法也很重要,这里分享我学习大数据过程中学过的好的视频和书籍。 如果学习Hadoop那么Java基础也应该加强,毕竟Hadoop主

Fang的博客 1万+

Hadoop学习心得

自从我开始接触Hadoop,这个大数据处理的开源框架,我的学习之路就充满了挑战与收获。Hadoop以其强大的数据处理能力和高度的可扩展性,成为了大数据领域的一颗璀璨明星。以下是我对Hadoop学习的一些心得和体会。在开始学习Hadoop之前,我对大数据和分布式计算的概念还相对模糊。但随着对Hadoop的深入了解,我逐渐认识到它的重要性。Hadoop不仅仅是一个技术框架,更是一种处理大数据的思维方式。它通过将数据划分为多个小块,并在集群中的多个节点上并行处理,从而实现了对海量数据的快速处理。

a2516531763的博客 2489

大数据内容分享(三):Hadoop 生态介绍

大数据(big data),指的是在一定时间范围内不能以常规软件工具处理(存储和计算)的大而复杂的数据集。说白了大数据就是使用单台计算机没法在规定时间内处理完,或者压根就没法处理的数据集。

之乎者也·的博客 1311
上一篇: JVM源码分析之SystemGC完全解读(转)
下一篇: Hadoop学习分享----Hadoop I/O序列化
rainforc
博客等级 码龄17年 5粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值