hadoop——安装以及整体了解

mmい mmい     2022-12-12     447

关键词:

安装

折腾了好久最后在这篇文章的指导下完成了Hadoop伪分布式安装,感谢!

重要概念

在阅读《Hadoop实战》时觉得比较重要的一些概念记录下来。

1.MapReduce编程模型的原理

利用一个输入的[key,value]集合来产生一个输出的[key,value]集合:用户自定义的Map函数接收一个输入的[key,value]集合,然后产生一个中间[key,value]集合,MapReduce把所有具有相同key值的value集合在一起,然后传递给Reduce函数。用户自定义的Reduce函数接收key和相关的value集合。Reduce函数合并这些value值,形成一个较小的value集合。

2.分布式并行计算

Hadoop中有一个作为主控的JobTracker,用于调度和管理其他的TaskTracker。JobTracker可以位于NameNode和DataNode上,但是TaskTracker只能位于DataNode上,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说,DataNode既是数据存储节点也是计算节点;JobTracker将Map任务和Reduce任务分发给空闲的TaskTracker,让这些任务并行运行,并负责监控任务的运行情况,如果一个TaskTracker出现故障,会重新分配给另一个空闲的TaskTracker重新运行;

3.数据合并、数据分割、Reduce、任务管道

  • Map任务的中间结果会先进行数据合并,即将中间结果中有相同key的[key,value]集合合并成一对。这个过程和Reduce很像,但是它是在本地进行的,紧跟着Map函数后执行的,能减少中间结果中[key,value]的数目,从而降低网络流量,要知道“移动计算要比移动数据更经济”。

  • 然后将Map任务输出的中间结果按key的范围分割为R份(R是预先定义的Reduce任务的个数),以文件的形式存储在本地磁盘上,中间结果的位置会通知主控程序JobTracker,再由它来通知Reduce任务到哪一个TaskTracker上去取中间结果。

  • 注意:所有的Map任务产生的中间结果均按其key值通过一个Hash函数划分为R份,R个Reduce任务各自负责一段key区间。每个Reduce需要向许多个Map任务节点取得落在其负责的Key区间内的中间结果,然后执行Reduce函数,有R个Reduce任务就会产生R个最终结果,很多情况下这R个最终结果并不需要合并成一个最终结果,因为这个R个最终结果又可以作为另一个计算任务的输入,开始另一个并行计算任务,这也就形成了任务管道

4.HDFS

HDFS通过三个重要的角色来进行文件系统的管理:NameNode,DataNode,Client;

  • NameNode可以看做是分布式文件系统中的管理者,主要负责文件系统的命令空间(对于整个集群有单一的命名空间),集群的配置信息和存储块的复制。NameNode会将文件系统的Metadata元数据(主要包括文件信息,每一个文件对应的文件块的信息和每一个文件块在DataNode中的信息等,并不包含具体的文件内容)存储在内存中。
  • DataNode是文件存储的基本单元(存储了文件的具体内容),它将文件块存储在本地文件系统中,保存了所有的文件块的Metadata元数据,同时周期性的将所有岑仔的文件块信息发送给NameNode.
  • Client就是需要获取分布式文件系统文件的应用程序。

作为分布式文件系统,HDFS在数据管理方面还有值得借鉴的几个功能:

  1. 文件块(Block)的放置:一个Block会有三份备份,一份放在NameNode指定的DataNode上,另一份放在于指定DataNode不在同一台机器上的DataNode上,最后一份放在与指定DataNode同一机架(Rack)的DataNode上。采用这种配置方式主要是考虑同一Rack失败的情况,以及不同Rack之间进行数据复制会带来的性能问题;
  2. 心跳检测:用心跳检测DataNode的健康状况,如果发现问题就采用数据备份的方式来保证数据的安全性。
  3. 数据复制:使用Hadoop的balancer命令配置Threshold来平衡每一个DataNode的磁盘利用率。假设设置了Threshold为10%,那么执行balancer命令时,首先会统计所有DataNode的磁盘利用率的平均值,然后判断如果某一个DataNode的磁盘利用率超过这个平均值,那么将会把这个DataNode的Block转移到磁盘利用率较低的DataNode上。
  4. 数据校验:采用CRC32做数据校验。在写入文件块的时候,除了会写入数据外还会写入校验信息,在读取的时候则需要先校验后读入。
  5. 数据管道性的写入:当客户端要写入文件到DataNode上时,首先会读取一个Block然后将其写入到第一个DataNode上,接着由第一个DataNode将其传递到备份的DataNode上,直到所有要写入这个Block的DataNode都成功写入后,客户端才会开始写下一个Block。
  6. 安全模式:分布式文件系统启动时会进入安全模式(文件系统中的内容不允许修改也不允许删除,直到安全模式结束)。安全模式主要是为了在系统启动时检查各个DataNode上数据块的有效性,同时根据策略进行必要的复制或删除部分的数据块。如果系统刚启动时你进行修改删除操作会得到不允许修改的错误提示,只需要等待一会儿即可。

5.Hadoop集群

先介绍下Hadoop对各个节点的角色定义,分别从三个角度将主机划分为两种角色:

  1. 最基本的划分为Master和Slave,即主人和奴隶;
  2. 从HDFS的角度,将主机划分为NameNode和DataNode;
  3. 从MapReduce的角度,将主机划分为JobTracker和TaskTracker;

一般来说,一个Hadoop中由两层拓扑结构组成,每个机架会有30~40台机器,这些机器共享一个1GB带宽的网络交换机。在所有机架之上还有一个核心交换机或路由器,通常来说其网络交换能力为1GB或更高。

6.配置文件参数说明

conf/core-site.xml

  • fs.default.name:NameNode的IP地址及端口号。

conf/hdfs-site.xml

  • dfs.name.dir:NameNode存储名字空间及汇报日志的位置
  • dfs.data.dir:DataNode存储数据块的位置

conf/mapred-site.xml

  • mapreduce.jobtracker.address:JobTracker的IP地址及端口。
  • mapreduce.jobtracker.system.dir:MapReduce在HDFS上存储文件的位置,例如/Hadoop/mapred/system/
  • mapreduce.jobtracker.hosts.filename/:允许的TaskTrackers列表。
  • mapreduce.jobtracker.host.exclude.filename:禁止的TaskTrackers列表。
    一般而言,除了规定端口,IP地址,文件的存储位置外,其它配置都不是必须修改的,可以根据需要决定采用默认配置还是自己修改。以上配置都被默认为最终参数,这些参数都不可以在程序中再次修改。

7.MapReduce原理

hadoop入门学习

Hadoop入门学习1.Hadoop基础知识1.1基础概念1.2Hadoop特性优点1.3Hadoop集群整体概述1.4集群简介1.5hadoop集群搭建(在linux上搭建)2.参考视频1.Hadoop基础知识1.1基础概念1.2Hadoop特性优点1.3Hadoop集群整体概述1.4集群简介1.5hadoop集群搭... 查看详情

hadoop安装mysqlhive以及sqoop(步骤图文超详细版)(代码片段)

还没有搭建Hadoop,欢迎看看我前面的一篇文章:Hadoop集群搭建(步骤图文超详细版)目录一、前置条件二、安装Mysql三、安装Hive四、安装Sqoop一、前置条件需要安装下载方法Hive-1.2.1官网下载链接,提取码:nzyuSqoop-1.4.... 查看详情

从vmware安装建centos7虚拟机到hadoop集群搭建详细图文过程;以及安装中的一些问题(代码片段)

...模板机(二)克隆三台虚拟机三、搭建三台机器Hadoop集群1.集群部署2.在hadoop102上安装jdk3.在hadoop102上安装hadoop4.准备同步数据脚本 5.SSH免密登录6.配置文件7.格式化namenode,以及单点启动8.官方四个群 查看详情

一java整体概念以及安装部署

JAVA基本概念 JVM(JAVAvirtualmachine)java虚拟机,是java的能跨平台的核心,java的跨平台实现,就是在各种系统中布置JVM,然后java应用运行在JVM中,相当于我玩我的你是什么系统与我无关。JRE(JAVARuntimeenvironment)JAVA运行环境,是Java程... 查看详情

深入了解jquery之整体架构

...uery源码解析(地址:http://www.imooc.com/learn/172)后的个人体会以及笔记。在这里感谢艾伦老师深入浅出的讲解!! 先来看看如何生成一个jQuery对象,源码:varjQuery=function(selector,context){returnnewjQuery.fn.init(selector,context);};当我 查看详情

学习笔记hadoop——虚拟机安装java安装(代码片段)

文章目录一、虚拟机安装1.1、了解一下概念1.2、安装流程二、java安装2.1、了解2.2、安装流程一、虚拟机安装1.1、了解一下概念操作系统操作系统(operationsystem,简称OS)是管理计算机硬件与软件资源的计算机程序。操... 查看详情

docker整体了解

...一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker可以把... 查看详情

hadoop安装教程

hadoop的核心  Hadoop的核心就是HDFS和MapReduce,而两者只是理论基础,不是具体可使用的高级应用,Hadoop旗下有很多经典子项目,比如HBase、Hive等,这些都是基于HDFS和MapReduce发展出来的。要想了解Hadoop,就必须知道HDFS和MapRed... 查看详情

大数据基石-hadoop3.x学习教程-hadoop产品了解与快速上手(代码片段)

大数据基石-HadoopHadoop3.x版本全系列教程===楼兰===文章目录一、关于Hadoop1、关于Hadoop产品2、Hadoop课程内容3、Hadoop的主要组件二、Hadoop环境搭建以及快速上手1、Linux环境搭建2、Hadoop集群搭建3、Hadoop快速上手三、... 查看详情

hadoop详解——hive的原理和安装配置和udf,flume的安装和配置以及简单使用,flume+hive+hadoop进行日志处理(代码片段)

hive简介什么是hive?①hive是建立在Hadoop上的数据仓库基础架构。它提供了一系列的工具,可以用来进行数据提取转换加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive定义了简单的类似... 查看详情

hadoop安装及speak安装

参考技术A掌握在Linux虚拟机中安装Hadoop和Spark的方法,熟悉HDFS的基本使用方法,掌握使用Spark访问本地文件和HDFS文件的方法。进入Linux系统,参照本教程官网“实验指南”栏目的“Hadoop的安装和使用”,完成Hadoop伪分布式模式的... 查看详情

查找 hadoop 使用的端口以及它们使用的所有端口

】查找hadoop使用的端口以及它们使用的所有端口【英文标题】:Lookingforportsusedbyhadoopandalltheportsusedbythem【发布时间】:2018-03-0808:23:10【问题描述】:是否有任何在线资源可以找到hadoop使用的所有默认端口或任何可以安装的hadoop服... 查看详情

hadoop2.5.1+hbase1.1.2安装与配置

今天正在了解HBase和Hadoop,了解到HBase1.1.x为稳定版,对应的Hadoop2.5.x是最新的支持此版本HBase的,同时jdk版本为jdk7才能支持。--本段话内容参考自Apache官方文档:1.本表格为jdk与hbase版本对应: 2.以下表格为hbase与Hadoop版本对应... 查看详情

第1节hive安装:2345

...基本概念;3、hive的基本介绍;4、hive的基本架构以及与hadoop的关系以及RDBMS的对比等5、hive的安装之(使用mysql作为元数据信息存储) 课程内容:hive1、数据仓库的基本概念了解2、hive基本概念 hive的安装部署搞定3、hive的基本... 查看详情

AWS EMR Hadoop 管理

】AWSEMRHadoop管理【英文标题】:AWSEMRHadoopAdministration【发布时间】:2015-05-2604:35:48【问题描述】:我们目前在我们的组织中使用ApacheHadoop(Vanilla版本)。我们计划迁移到AWSEMR。我试图了解AWSEMRHadoop如何在内部工作(而不是如何使... 查看详情

java安装以及jdk和jre安装(简单了解)

  轻松了解JDK是什么什么是jdk?JDK是学好Java的第一步。不管是你要学习java编程,还是要搭建jspweb开发环境,或者是android开发环境都离不开它。jdk是什么呢?jdk的是javadevelopmentkit的缩写,意思是java程序开发的工具包。也... 查看详情

大数据的开始:安装hadoop

为实现全栈,从今天开始研究Hadoop,个人体会是成为某方面的专家需要从三个方面着手系统化的知识(需要看书或者比较系统的培训)碎片化的知识(需要根据关注点具体的深入的了解)经验的积累(需要遇到问题)好吧,我们从安装入... 查看详情

我应该以哪种格式以及如何将我的 JSON 行(如数据)导入 hadoop?

...我应该以哪种格式以及如何将我的JSON行(如数据)导入hadoop?【英文标题】:InwhichformatandhowshouldIimportmyJSONlineslikedataintohadoop?【发布时间】:2015-04-1520:19:45【问题描述】:我阅读了很多有关hadoop数据格式的信息,目前似乎了解根... 查看详情