文章目录

  • 1、概念
    • 1.1、Hadoop 1.0和Hadoop 2.0
      • 什么是Hadoo1.0
      • 什么是Hadoo2.0
      • 两者区别
        • Hadoop整体框架区别
        • MapReduce计算框架区别
    • 1.2、MapReduce和HDFS
      • 什么是MapReduce
      • 什么是HDFS
    • 1.3、NameNode和DataNode
      • 什么是Block
      • 什么是NameNode
      • 什么是DataNode
    • 1.4、JobTracker和TaskTracker
      • 什么是JobTracker
      • 什么是TaskTracker
    • 1.5、ResourceManager和NodeManager
  • 2、Hadoop的简单使用
    • 2.1 创建文件夹
    • 2.2 查看创建的文件夹
    • 2.3 上传文件
    • 2.4 下载文件
    • 2.5 运行一个mapreduce的demo程序:wordcount

1、概念

1.1、Hadoop 1.0和Hadoop 2.0

什么是Hadoo1.0

Hadoop1.0即第一代Hadoop,指的是版本为Apache Hadoop 0.20.x、1.x或者CDH3系列的Hadoop,内核主要是由HDFS和MapReduce两个系统组成。
其中MapReduce是一个离线处理框架,由编程模式(新旧API)运行时环境(JobTracker和TaskTracker)数据处理引擎(MapTask和ReduceTask)三部分组成。

什么是Hadoo2.0

Hadoop2.0即第二代Hadoop,指的是版本为Apache Hadoop 0.23.x、2.x或者CDH4系列的Hadoop,内核主要由HDFS、MapReduce和YARN三个系统组成,其中YARN是一个资源管理系统,负责集群资源管理和调度,MapReduce则是运行在YARN上的离线处理框架,它与Hadoop 1.0中的MapReduce在编程模型(新旧API)和数据处理引擎(MapTask和ReduceTask)两个方面是相同的。

两者区别

Hadoop整体框架区别

Hadoop1.0由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中HDFS由一个NameNode和多个DateNode组成,MapReduce由一个JobTracker和多个TaskTracker组成。

Hadoop2.0为克服Hadoop1.0中的不足进行了下面改进:

  1. 针对Hadoop1.0单NameNode制约HDFS的扩展性问题,提出HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展,同时彻底解决了NameNode单点故障问题;
  2. 针对Hadoop1.0中的MapReduce在扩展性和多框架支持等方面的不足,它将JobTracker中的资源管理和作业控制分开,分别由ResourceManager(负责所有应用程序的资源分配)和ApplicationMaster(负责管理一个应用程序)实现,即引入了资源管理框架Yarn。
  3. Yarn作为Hadoop2.0中的资源管理系统,它是一个通用的资源管理模块,可为各类应用程序进行资源管理和调度,不仅限于MapReduce一种框架,也可以为其他框架使用,如Tez、Spark、Storm等

MapReduce计算框架区别

MapReduce1.0计算框架主要由三部分组成:编程模型、数据处理引擎和运行时环境。它的基本编程模型是将问题抽象成Map和Reduce两个阶段,其中Map阶段将输入的数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录,Reduce阶段将key相同的value进行规约处理,并将最终结果写到HDFS上;它的数据处理引擎由MapTask和ReduceTask组成,分别负责Map阶段逻辑和Reduce阶段的逻辑处理;它的运行时环境由一个JobTracker和若干个TaskTracker两类服务组成,其中JobTracker负责资源管理和所有作业的控制,TaskTracker负责接收来自JobTracker的命令并执行它。
MapReducer2.0具有与MRv1相同的编程模型和数据处理引擎,唯一不同的是运行时环境。MRv2是在MRv1基础上经加工之后,运行于资源管理框架Yarn之上的计算框架MapReduce。它的运行时环境不再由JobTracker和TaskTracker等服务组成,而是变为通用资源管理系统Yarn和作业控制进程ApplicationMaster,其中Yarn负责资源管理的调度而ApplicationMaster负责作业的管理。

Hadoop1与Hadoop2的区分还是非常大,HDFS和MR都有不同,最起码的配置文件就不一样。项目应用的话,建议尽量往高版本走。稳健一点的话稍低于最高版本的一个稳定版本即可。

1.2、MapReduce和HDFS

什么是MapReduce

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)“和"Reduce(归约)”,和它们的主要思想,都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。 当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约)函数,用来保证所有映射的键值对中的每一个共享相同的键组。
重点:
1、MapReduce是一种分布式计算模型,是Google提出的,主要用于搜索领域,解决海量数据的计算问题。
2、MR有两个阶段组成:Map和Reduce,用户只需实现map()和reduce()两个函数,即可实现分布式计算。

什么是HDFS

DFS即分布式文件系统,分布式文件存储在多个机器组成的集群中,用来管理分布式文件存储的系统称之为分布式文件系统。

HDFS即Hadoop分布式文件系统,它擅长存储大文件,流式读取,运行于一般性的商业硬件上。HDFS不适合存储大量的小文件,namenode会在内存中存储元数据,通常情况下每个文件、目录和块都将占用150个字节;也不适合任意并发写的场景,HDFS的写文件操作是append的模式。

1.3、NameNode和DataNode

什么是Block

在HDFS中,文件被分割成不同的块存储在集群的数据节点里,文件系统的元数据由文件系统集中管理。文件系统的块通常是512字节,但是HDFS默认128M,但是和普通的文件系统相比,如果一个文件没有达到128M,其并不会占满整个块。块默认如此大是为了减少寻址时间。抽象出块的概念的好处在于一个文件的大小可以超过整个磁盘,简化存储管理,很适合复制机制来实现高可用

什么是NameNode

NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。NameNode管理文件系统的命名空间,维护文件系统树、所有文件、目录以及块的元数据,元数据有两种namespace image和edit log。

什么是DataNode

DataNode 也是一个通常在 HDFS实例中的单独机器上运行的软件。NameNode拥有Block和DataNode之间的映射关系,但是它并不持久化这些信息,这些信息来源依赖于DataNode启动时向NameNode发送的报告。DataNode维护着最终的Block,并定期向NameNode发送该DataNode包含的Block列表。

1.4、JobTracker和TaskTracker

什么是JobTracker

JobTracker是一个后台服务进程,启动之后,会一直监听并接收来自各个TaskTracker发送的心跳信息,包括资源使用情况和任务运行情况等信息。
JobTracker的主要功能:

  1. 作业控制:在hadoop中每个应用程序被表示成一个作业,每个作业又被分成多个任务,JobTracker的作业控制模块则负责作业的分解和状态监控。
    最重要的是状态监控:主要包括TaskTracker状态监控、作业状态监控和任务状态监控。主要作用:容错和为任务调度提供决策依据。
  2. 资源管理。

什么是TaskTracker

TaskTrackerJobTracker和Task之间的桥梁:一方面,从JobTracker接收并执行各种命令:运行任务、提交任务、杀死任务等;另一方面,
将本地节点上各个任务的状态通过心跳周期性汇报给JobTracker。TaskTracker与JobTracker和Task之间采用了RPC协议进行通信。
TaskTracker的主要功能:

  1. 汇报心跳:Tracker周期性将所有节点上各种信息通过心跳机制汇报给JobTracker。这些信息包括两部分:
    机器级别信息:节点健康情况、资源使用情况等。
    任务级别信息:任务执行进度、任务运行状态等。
  2. 执行命令:JobTracker会给TaskTracker下达各种命令,主要包括:启动任务(LaunchTaskAction)、提交任务(CommitTaskAction)、杀死任务(KillTaskAction)、
    杀死作业(KillJobAction)和重新初始化(TaskTrackerReinitAction)。

1.5、ResourceManager和NodeManager

ResourceManager 是基于应用程序对资源的需求进行调度的 ; 每一个应用程序需要不同类型的资源因此就需要不同的容器。ResourceManager 是一个中心的服务,它做的事情是调度、启动每一个 Job 所属的ApplicationMaster、另外监控 ApplicationMaster 的存在情况。

NodeManager 是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况 (CPU,内存,硬盘,网络 ) 并且向调度器(ResourceManager )汇报。
ApplicationMaster 的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。

2、Hadoop的简单使用

Hadoop集群的搭建请参考《CentOS7下Hadoop集群搭建》

2.1 创建文件夹

在HDFS上创建文件夹 /test/input

[root@hadoop-master bin]# hadoop fs -mkdir -p /test/input

2.2 查看创建的文件夹

[root@hadoop-master bin]# hadoop fs -ls /
Found 1 items
drwxr-xr-x   - root supergroup          0 2020-08-19 12:19 /test
[root@hadoop-master bin]# hadoop fs -ls /test
Found 1 items
drwxr-xr-x   - root supergroup          0 2020-08-19 12:19 /test/input

2.3 上传文件

准备测试文件

[root@hadoop-master test]# vi hw_hadoop.txt
[root@hadoop-master test]# cat hw_hadoop.txt
hello world leo825
hello world hadoop
hello that girl
hello that boy

把文件上传到HDFS的/test/input文件夹中

[root@hadoop-master test]# hadoop fs -put ./hw_hadoop.txt /test/input

检查上传结果

[root@hadoop-master test]#  hadoop fs -ls /test/input
Found 1 items
-rw-r--r--   2 root supergroup         69 2020-08-19 12:26 /test/input/hw_hadoop.txt

2.4 下载文件

[root@hadoop-master local]# hadoop fs -get /test/input/hw_hadoop.txt ./
[root@hadoop-master local]# ll
总用量 12
drwxr-xr-x.  2 root  root     6 4月  11 2018 bin
drwxr-xr-x.  2 root  root     6 4月  11 2018 etc
drwxr-xr-x.  2 root  root     6 4月  11 2018 games
drwxr-xr-x.  4 root  root    30 8月   8 10:59 hadoop
-rw-r--r--.  1 root  root    69 8月  19 16:52 hw_hadoop.txt

2.5 运行一个mapreduce的demo程序:wordcount

运行以下examples-2.7.3.jar程序中的wordcount

hadoop jar /usr/local/hadoop/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  wordcount /test/input /test/output

执行结果

[root@hadoop-master test]# hadoop jar /usr/local/hadoop/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar  wordcount /test/input /test/output
20/08/19 17:25:55 INFO client.RMProxy: Connecting to ResourceManager at hadoop-master/192.168.223.131:8032
20/08/19 17:25:56 INFO input.FileInputFormat: Total input paths to process : 1
20/08/19 17:25:56 INFO mapreduce.JobSubmitter: number of splits:1
20/08/19 17:25:57 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1597810488836_0001
20/08/19 17:25:57 INFO impl.YarnClientImpl: Submitted application application_1597810488836_0001
20/08/19 17:25:57 INFO mapreduce.Job: The url to track the job: http://hadoop-master:8088/proxy/application_1597810488836_0001/
20/08/19 17:25:57 INFO mapreduce.Job: Running job: job_1597810488836_0001
20/08/19 17:26:08 INFO mapreduce.Job: Job job_1597810488836_0001 running in uber mode : false
20/08/19 17:26:08 INFO mapreduce.Job:  map 0% reduce 0%
20/08/19 17:26:18 INFO mapreduce.Job:  map 100% reduce 0%
20/08/19 17:26:25 INFO mapreduce.Job:  map 100% reduce 100%
20/08/19 17:26:26 INFO mapreduce.Job: Job job_1597810488836_0001 completed successfully
20/08/19 17:26:26 INFO mapreduce.Job: Counters: 49File System CountersFILE: Number of bytes read=88FILE: Number of bytes written=237555FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=184HDFS: Number of bytes written=54HDFS: Number of read operations=6HDFS: Number of large read operations=0HDFS: Number of write operations=2Job Counters Launched map tasks=1Launched reduce tasks=1Rack-local map tasks=1Total time spent by all maps in occupied slots (ms)=6450Total time spent by all reduces in occupied slots (ms)=4613Total time spent by all map tasks (ms)=6450Total time spent by all reduce tasks (ms)=4613Total vcore-milliseconds taken by all map tasks=6450Total vcore-milliseconds taken by all reduce tasks=4613Total megabyte-milliseconds taken by all map tasks=6604800Total megabyte-milliseconds taken by all reduce tasks=4723712Map-Reduce FrameworkMap input records=4Map output records=12Map output bytes=117Map output materialized bytes=88Input split bytes=115Combine input records=12Combine output records=7Reduce input groups=7Reduce shuffle bytes=88Reduce input records=7Reduce output records=7Spilled Records=14Shuffled Maps =1Failed Shuffles=0Merged Map outputs=1GC time elapsed (ms)=131CPU time spent (ms)=1490Physical memory (bytes) snapshot=290959360Virtual memory (bytes) snapshot=4160589824Total committed heap usage (bytes)=154607616Shuffle ErrorsBAD_ID=0CONNECTION=0IO_ERROR=0WRONG_LENGTH=0WRONG_MAP=0WRONG_REDUCE=0File Input Format Counters Bytes Read=69File Output Format Counters Bytes Written=54

在YARN Web界面:http://192.168.223.131:8088/cluster


查看输出结果:

[root@hadoop-master test]# hadoop fs -ls /test/output
Found 2 items
-rw-r--r--   2 root supergroup          0 2020-08-19 17:26 /test/output/_SUCCESS
-rw-r--r--   2 root supergroup         54 2020-08-19 17:26 /test/output/part-r-00000
[root@hadoop-master test]# hadoop fs -cat /test/output/part-r-00000
boy 1
girl    1
hadoop  1
hello   4
leo825  1
that    2
world   2

Hadoop的基本概念和简单使用相关推荐

  1. tensorflow笔记:流程,概念和简单代码注释

    tensorflow是google在2015年开源的深度学习框架,可以很方便的检验算法效果.这两天看了看官方的tutorial,极客学院的文档,以及综合tensorflow的源码,把自己的心得整理了一 ...

  2. 计算机基本概念及简单的二进制运算

    计算机基本概念及简单的二进制运算 ----------------------------------------------------------------------------------- ...

  3. REST API 概念的简单介绍

    REST API 概念的简单介绍 最近发现很多人不了解REST是什么,我综合了下网上的文章,摘录了一下. 首先要明确一点:REST(Representational State Transfer,表述 ...

  4. UE4 Matinee功能基本概念及简单示例(Sequence编辑器)

    UE4 Matinee功能基本概念及简单示例(Sequence编辑器) https://gameinstitute.qq.com/community/detail/122091 UE4提供的Matin ...

  5. git基本概念以及简单用法

    git基本概念以及简单用法 最近优达把<如何使用Git和GitHub>这门课设置为免费课程,借此机会我也去学习了一波,以便能加入全球最大的同性交友网站.以下内容,均为听课笔记.总共分为三部 ...

  6. 机器学习基础概念及简单框架

    机器学习要知道的基础概念和简单框架 机器学习相关的基础概念 机器学习的简单框架 机器学习相关的基础概念 All models are wrong but some are useful(所有模型都是错 ...

  7. 3台机器配置hadoop集群_Hadoop学习之路(三)Hadoop集群搭建和简单应用

    概念了解 主从结构:在一个集群中,会有部分节点充当主服务器的角色,其他服务器都是从服务器的角色,当前这种架构模式叫做主从结构. 主从结构分类: 1.一主多从 2.多主多从 Hadoop中的HDFS和Y ...

  8. 教程 | Hadoop集群搭建和简单应用

    这是小小本周的第一篇,我是小小,开更本周的第一篇,本篇将会介绍Hadoop集群的简单搭建和简单应用. 概念了解 主从结构:在一个集群众,会有部分节点充当主节点的角色,其他服务器都是从节点的角色,当前这 ...

  9. flume java 安装部署_[Hadoop] Flume安装部署与简单使用

    1. Flume Flume是一个分布式的日志收集框架,针对日志数据进行采集汇总,把日志从A地方搬运到B地方去. 使用场景: RDBMS ==> Sqoop ==> Hadoop 分散在各 ...

最新文章

  1. 从实例到数理来解析感知机学习算法(PLA)
  2. jqurey操作radio总结
  3. Number()、parseInt()、parseFloat()的区别
  4. 打印hello world java_java – 如何打印“hello world”?
  5. c matlab 引擎调用,将C/C++回调传递给matlab引擎
  6. html入门难,HTML+CSS入门之打造全网最劲富文本系列之大话技术难点与特色设计
  7. 记录下关于qt使用windeployqt.exe打包程序之后运行报错无法定位程序输入点
  8. 实践的意义——写给图像处理算法爱好者的建议
  9. 小学计算机二课堂教案,信息技术与小学语文整合教学案例
  10. bitblt与StretchDIBits
  11. MyBatis连接池的实现原理分析
  12. 计算机网络技术该考什么证,计算机网络工程师证书
  13. 抖音超级恶心的滑稽HTML源码
  14. 计算机建立第2用户,2016年计算机二级VF备考练习题及参考答案(5)
  15. 记一次python考试题
  16. 【Postman】Postman的请求方式
  17. 【论文分享】★★★「SOTA」小样本图神经网络分类模型 HGNN:Hybrid Graph Neural Networks for Few-Shot Learning
  18. Python高效替代Excel了,你会吗?
  19. Scheme语言直译为汉语(十四)
  20. [知乎]作为计算机专业学生,最应该学习的课程前五位是什么?

热门文章

  1. SAP CO模块权限控制
  2. 杜克大学出来的NBA球星有哪些?
  3. SAP固定资产相关的一些表
  4. 别傻了,年轻人买“养生奶茶”才不是为了养生!
  5. 社交电商风潮起,中小卖家何处去
  6. git公有转私有_【IT新手之路】客户端组件化之私有库搭建
  7. verilog for循环_HDLBits:在线学习 Verilog (二十四 · Problem 115-119)
  8. python语法总结下载_python语法总结1
  9. sql server与java实例_Origin数据处理实例教程50节02040101
  10. mysql 代码如何导出数据_mysql导入导出.sql数据