hadoop大数据平台(代码片段)

S4061222 S4061222     2022-12-21     125

关键词:

操作参考手册:https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html

一. Hadoop简介

1 hadoop的演变

Hadoop起源于Google的三大论文:

  • GFS:Google的分布式文件系统Google File System
  • MapReduce:Google的MapReduce开源分布式并行计算框架
  • BigTable:一个大型的分布式数据库

演变关系:
GFS—->HDFS
Google MapReduce—->Hadoop MapReduce
BigTable—->HBase

Hadoop名字不是一个缩写,是Hadoop之父Doug Cutting儿子毛绒玩具象命名的

hadoop主流版本:

  • Apache基金会hadoop
  • Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)
  • Hortonworks版本(Hortonworks Data Platform,简称“HDP”)

Hadoop的框架最核心的设计就是:HDFS和MapReduce。

  • HDFS为海量的数据提供了存储。
  • MapReduce为海量的数据提供了计算。

Hadoop框架包括以下四个模块

  • Hadoop Common: 这些是其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的Java文件和脚本。
  • Hadoop YARN: 这是一个用于作业调度和集群资源管理的框架。
  • Hadoop Distributed File System (HDFS): 分布式文件系统,提供对应用程序数据的高吞吐量访问。
  • Hadoop MapReduce:这是基于YARN的用于并行处理大数据集的系统。

hadoop应用场景

  • 在线旅游
  • 移动数据
  • 电子商务
  • 能源开采与节能
  • 基础架构管理
  • 图像处理
  • 诈骗检测
  • IT安全
  • 医疗保健

2 hadoop的简介


  • HDFS属于Master与Slave结构。一个集群中只有一个NameNode,可以有多个DataNode

  • HDFS存储机制保存了多个副本,当写入1T文件时,我们需要3T的存储,3T的网络流量带宽;系统提供容错机制,副本丢失或宕机可自动恢复,保证系统高可用性。

  • HDFS默认会将文件分割成block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。如果小文件太多,会导致内存的负担很重。

  • HDFS采用的是一次写入多次读取的文件访问模型。一个文件经过创建、写入和关闭之后就不需要改变。这一假设简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。

  • HDFS存储理念是以最少的钱买最烂的机器并实现最安全、难度高的分布式文件系统(高容错性低成本),HDFS认为机器故障是种常态,所以在设计时充分考虑到单个机器故障,单个磁盘故障,单个文件丢失等情况。

  • HDFS容错机制
    节点失败监测机制:DN每隔3秒向NN发送心跳信号,10分钟收不到,认为DN宕机。
    通信故障监测机制:只要发送了数据,接收方就会返回确认码。
    数据错误监测机制:在传输数据时,同时会发送总和校验码。

3 工作原理

Nn和Dn

工作原理:
Cliet向Namenode请求,Nn向cl返回Dn列表(Dn列表有顺序,校验数据的距离,根据距离排序),Nn知道所有节点的状态,Cl知道会以多大的block切分,设定副本数,Cl连接dn列表,(发送第一个block传输数据packet和dn列表),Nn接收block并保存dn列表数据,同步其他Dn节点(边接收边同步),Dn报告Block存储完成。

返回Dn列表顺序

  • Cl和Dn节点在同一台机器,存储副本(默认3个),Nn返回的Dn列表顺序:本机–不同机架的不同Dn上----同机架的不同Dn上(down后,找本机架其他的Dn)其他的随机,只是控制前3

  • Cl和Dn节点不在同一台机器:第一个副本随机,2,3副本一样

hdfs中文漫画:https://blog.csdn.net/lsziri/article/details/102503486

节点故障/网络故障/数据块损坏

RM:resourcemanager

v1: jobTrack,不能过2000节点
v2:过2000节点

工作原理:
Cl向RM申请,任务队列,RM返回app所需资源路径,Cl需要的资源数据存储到HDFS,Cl申请运行App master,RM运行容器(分配资源)AM,AM拷贝HDFS中的job资源,AM向RM申请运行资源,RM会分配到下面的多个task中,实时汇总AM,AM持续监控job
完成任务后,申请释放资源,RM注销AM,释放容器资源

二. hadoop工作模式

1 伪分布式

实验环境:

主机名ip
vm1172.25.28.11(2G)

Nn和Dn不分离:


hadoop安装有jdk要求,不用rpm包,使用源码tar.gz
建立hadoop用户,解压缩jdk包,普通用户hadoop运行

hadoop和java作软链接,方便更新版本

编辑文件,修改java和hadoop的环境变量

新建input目录

将etc/hadoop中.xml 文件复制到input目录

Hadoop 配置为在非分布式模式下作为单个 Java 进程运行查找并显示给定正则表达式的每个匹配项。 输出写入给定的输出目录 output,outpot不用创建,过滤dfs的关键字

查看output目录中的内容

Hadoop 也可以以伪分布式模式在单节点上运行,其中每个 Hadoop 守护进程在单独的 Java 进程中运行。

编辑 etc/hadoop/hdfs-site.xml 文件,副本数为1

编辑etc/hadoop/core-site.xml 文件,分布式文件系统的master,主从都是自己

master和worker都是自己!!!

与localhost进行ssh免密


与localhost免密测试

查看生成的公钥和私钥

本地运行 MapReduce 作业

初始化文件系统

启动 NameNode 守护进程和 DataNode 守护进程
namenode启动master,datanode启动worker
当前master和worker都是本机vm1 !!!

数据存储位置:/tmp


jps:java进程查看,代替ps ax

编辑java的环境变量

jps查看进程,其中secondnode表示当master的namenode down掉后,接管

由于hadoop的master和worker都是vm1,所以同时出现Namenode和DataNode !!!

外部访问:
172.25.28.11:9870

9870:hadoop默认的监听端口

9000:Namenode和Datanode的连接端口


查看日志:

查看文件系统,此时没有内容:
两种方式:命令行和图形化

创建执行 MapReduce 作业所需的 HDFS 目录: 用户与当前id保持一致

ls 默认查看的是这个目录/user/haddop

将输入文件复制到分布式文件系统中

外部查看,存在(图形化)

本地查看(命令行)

单词数
input,output :和本地无关,分布式中的输入输出目录

本地查看

本地删除

此时查看,是分布式中的输入输出目录

重新获取分布式中的输出目录

本地查看成功

2 完全分布式

3台虚拟机
实验环境:

主机名ip功能
vm1172.25.28.11(2G)master
vm2172.25.28.12worker
vm3172.25.28.13worker
vm4172.25.28.14worker

Nn和Dn分离

编辑 etc/hadoop/core-site.xml 文件,修改master为vm1的ip

编辑 etc/hadoop/hdfs-site.xml 文件,副本数为2

修改worker为vm2和vm3

vm1安装nfs文件系统,

修改文件,启动nfs服务

vm2新建hadoop用户,安装nfs文件系统

vm3新建hadoop用户,安装nfs文件系统

挂载nfs到vm2中的/home/hadoop

挂载nfs到vm3中的/home/hadoop

重新初始化文件系统,先stop

测试免密连接

外部访问:
172.25.28.11:9870

9870:hadoop默认的监听端口
此时vm2和vm3已成功加入

vm2和vm3上,jps查看进程,都有DataNode!!!

vm1上启动 NameNode 守护进程,此时vm1是没有Datanode,只有Namenode,此处由于版本问题,vm1作为master,Nn是只保留原始数据,不存储数据

外部访问,查看文件系统

上传input目录至分布式文件系统中

外部再次查看

单词数
input,output :和本地无关,分布式中的输入输出目录


外部查看:分布式中的输出目录

将vm1加入此分布式中
安装nfs,挂载,编辑worker文件

vm4启动namenode,jps查看java进程,已经出现Datanode

外部查看:vm4已经成功加入此分布式!!!

三. yarn 调度

编辑etc/hadoop/mapred-site.xml:文件

编辑etc/hadoop/yarn-site.xml文件


编辑环境变量,加入$HADOOP_HOME

$HADOOP_HOME 就是 /home/hadoop/hadoop/share/hadoop/mapreduce


启动 ResourceManager 进程和 NodeManager 进程

vm1上有ResourceManager 进程


vm 2,3,4 有 NodeManager 进程

外部访问:
172.25.28.11:8088
调度内存消耗较大

四. hadoop高可用

参考pdf:/pub/docs/hadoop

实验环境:

ZK(3); JN(3); 双机热备;(NN主备模式2); DN(4)

在典型的 HA 高可用集群中,通常有两台不同的机器充当 NN。在任何时间,只有一台机器处于Active 状态;另一台机器是处于 Standby 状态。Active NN 负责集群中所有客户端的操作;而 Standby NN 主要用于备用,它主要维持足够的状态,如果必要,可以提供快速的故障恢
复。

主机名ip功能
vm1172.25.28.11(2G)(Namenode)master,双机热备的主Active
vm2172.25.28.12(Datanode)worker, zookeeper,JN
vm3172.25.28.13(Datanode)worker, zookeeper,JN
vm4172.25.28.14(Datanode)worker, zookeeper,JN
vm5172.25.28.15(Namenode)master,双机热备的备Standby

为了让 Standby NN 的状态和 Active NN 保持同步,即元数据保持一致,它们都将会和JournalNodes 守护进程通信。

1 zookeeper集群

所有主机停止

/tmp数据全部删除

vm5 安装nfs,挂载,新建hadoop用户

安装 JDK
安装 zookeeper
解压缩zookeeper包

编辑 zoo.cfg 文件,各节点配置文件相同,(已经挂载)

2888(数据同步)和38888(选举的)通信端口


需要在/tmp/zookeeper 目录中创建 myid 文件,
写入 一个唯一的数字,取值范围在 1-255

比如:172.25.28.12 节点的 myid 文件写入数
字“1”,此数字与配置文件中的定义保持一致,(server.1=172.25.28.12:2888:3888)其它节点依次类推。


在各节点(vm2,vm3,vm4)启动服务,vm3为leader,随机



(vm2,vm3,vm4)jps查看进程


连接 zookeeper

查看

2 hdfs高可用

编辑etc/hadoop/core-site.xml文件

<configuration>
<!-- 指定 hdfs 的 namenode 为 masters (名称可自定义)-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://masters</value>
</property>
<!-- 指定 zookeeper 集群主机地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>172.25.28.12:2181;172.25.28.13:2181;172.25.28.14:2181</value>
</property>
</configuration>


编辑 etc/hadoop/hdfs-site.xml 文件,副本数为3(vm2,3,4)

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

<property>
<!-- 指定 hdfs 的 nameservices 为 masters,和 core-site.xml 文件中的设置保持一致 -->
<name>dfs.nameservices</name>
<value>masters</value>
</property>

<property>
<!-- masters 下面有两个 namenode 节点,分别是 h1 和 h2 (名称可自定义)
-->
<name>dfs.ha.namenodes.masters</name>
<value>h1,h2</value>
</property>

<property>
<!-- 指定 h1 节点的 rpc 通信地址 -->
<name>dfs.namenode.rpc-address.masters.h1</name>
<value>172.25.28.11:9000</value>
</property>

<property>
<!-- 指定 h1 节点的 http 通信地址 -->
<name>dfs.namenode.http-address.masters.h1</name>
<value>172.25.28.11:9870</value>
</property>

<property>
<!-- 指定 h2 节点的 rpc 通信地址 -->
<name>dfs.namenode.rpc-address.masters.h2</name>
<value>172.25.28.15:9000</value>
</property>

<property>
<!-- 指定 h2 节点的 http 通信地址 -->
<name>dfs.namenode.http-address.masters.h2</name>
<value>172.25.28.15:9870</value>
</property>

<property>
<!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 -->
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://172.25.28.12:8485;172.25.28.13:8485;172.25.28.14:8485/masters</value>
</property>

<property>
<!-- 指定 JournalNode 在本地磁盘存放数据的位置 -->
<name>dfs.journalnode.edits.dir</name>
<value>/tmp/journaldata</value>
</property>

<property>
<!-- 开启 NameNode 失败自动切换 -->
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

<property>
<!-- 配置失败自动切换实现方式 -->
<name>dfs.client.failover.proxy.provider.masters</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<property>
<!-- 配置隔离机制方法,每个机制占用一行-->
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>

<property>
<!-- 使用 sshfence 隔离机制时需要 ssh 免密码 -->
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>

<property>
<!-- 配置 sshfence 隔离机制超时时间 -->
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

启动 hdfs 集群(按顺序启动)
在三个 DN 上依次启动 zookeeper 集群

在三个 DN 上依次启动 journalnode(之前已经都启动!!!)

格式化 HDFS 集群
Namenode 数据默认存放在/tmp,需要把数据拷贝到 h2(vm5)
格式化 zookeeper (只需在 h1 上执行即可)
连接zookeeper

查看有zookeeper

启动 hdfs 集群(只需在 h1 上执行即可)
vm5查看进程状态,主备(vm1和vm5)保持一致!!!

查看各节点状态,有QuorumPeerMain进程!!!

vm2查看NN主备,此时vm1为NN的主
外部访问查看,主为vm1!!!备为vm5!!!


上传input目录到分布式文件系统中

备机vm5无法查看

主机vm5无法查看

vm2,vm3,vm4 为hadoop集群
命令行方式查看分布式文件系统中的内容

测试故障自动切换
杀死vm1的NameNode进程

此时此时 h2 (vm5)转为 active 状态接管 namenode
查看详情

大数据hadoop实验报告(代码片段)

文章目录实验一熟悉常用的Linux操作和Hadoop操作1.实验目的2.实验平台3.实验内容和要求实验二熟悉常用的HDFS操作1.实验目的2.实验平台3.实验步骤实验三熟悉常用的HBase操作1.实验目的2.实验平台3.实验步骤实验四MapReduce/Spark编程初... 查看详情

linux企业运维——hadoop大数据平台(上)hadoop工作原理部署资源管理器yarn(代码片段)

Linux企业运维——Hadoop大数据平台(上)Hadoop工作原理、部署、资源管理器Yarn文章目录Linux企业运维——Hadoop大数据平台(上)Hadoop工作原理、部署、资源管理器Yarn一、Hadoop简介1.1、Hadoop框架与模块1.2、Hadoop工作... 查看详情

linux企业运维——hadoop大数据平台(下)hdfs高可用yarn高可用hbase高可用(代码片段)

Linux企业运维——Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用文章目录Linux企业运维——Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用一、Hadoop高可用1.1、zoomkeeper集群部署1.2、hdfs高可用1.... 查看详情

linux企业运维——hadoop大数据平台(上)hadoop工作原理部署资源管理器yarn(代码片段)

Linux企业运维——Hadoop大数据平台(上)Hadoop工作原理、部署、资源管理器Yarn文章目录Linux企业运维——Hadoop大数据平台(上)Hadoop工作原理、部署、资源管理器Yarn一、Hadoop简介1.1、Hadoop框架与模块1.2、Hadoop工作... 查看详情

hdfs_01_hadoop简介(代码片段)

HDFS_01_Hadoop简介持续更新大数据文章…本篇文章学的是Hadoop生态圈里面的HDFS,HDFS是解决大数据海量数据存储的技术。1.Hadoop1.1为什么要学习Hadoop?大数据是时代发展和技术进步的产物,Hadoop只是一种处理大数据的技术... 查看详情

大数据监控平台-prometheus监控hadoop3.1.3(代码片段)

简介本篇主要是使用jmx配合Prometheus监控大数据平台前提链接:https://pan.baidu.com/s/1c6nsjOKw4-a_Wqr82l0QhQ 提取码:yyds --来自百度网盘超级会员V5的分享先安装好PrometheusFlink(Pometheus监控)_顶尖高手养成计划的博客-CSDN博客_$env:max... 查看详情

hadoop大数据平台组件搭建系列——zookeeper组件配置(代码片段)

简介本篇介绍Hadoop大数据平台组件中的Zookeeper组件的搭建使用软件版本信息zookeeper-3.4.14.tar.gzZookeeper安装解压Zookeeper安装包至目标目录下,并配置环境变量,使环境变量生效解压zookeeper安装包tar-zxvf/opt/software/zookeeper-3.4.14.... 查看详情

大数据hadoop之——新一代流式数据湖平台apachehudi(代码片段)

...的区别3)湖仓一体化九、源码编译一、概述Hudi(HadoopUpsertsDeletesandIncrementals),简称Hudi,是一个流式数据湖平台,支持对海量数据快速更新,内置表格式,支持事务的存储层、一系列表服务、 查看详情

31学习大数据平台hadoop的基本概念和架构,包括hdfsmapreduce(代码片段)

Hadoop的基本概念和架构Hadoop概念Hadoop是一个开源的、基于Java的分布式计算框架,主要用于大规模数据集的存储和处理。它包括两个核心组件:Hadoop分布式文件系统(HadoopDistributedFileSystem,HDFS)和基于MapReduce的... 查看详情

大数据概念及hadoop介绍(代码片段)

大数据概念及Hadoop介绍大数据概念数据存储单位大数据定义大数据的特点(5V特征)大数据部门组织架构分布式技术负载均衡故障转移伸缩性分布式技术总结分布式和集群的区别Hadoop介绍Hadoop核心组件Hadoop发展简史Hadoop特性优点与... 查看详情

linux企业运维——hadoop大数据平台(下)hdfs高可用yarn高可用hbase高可用(代码片段)

Linux企业运维——Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用文章目录Linux企业运维——Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用一、Hadoop高可用1.1、zoomkeeper集群部署1.2、hdfs高可用1.... 查看详情

大数据hadoop之——clouderahadoop(cm6.3.1+cdh6.3.2环境部署)(代码片段)

@[TOC]一、概述1)目前比较流行Hadoop版本ApacheHadoopClouderaHadoop(CDH)2)CDH特点灵活性——存储任何类型的数据并使用各种不同的计算框架对其进行操作,包括批处理,交互式SQL,自由文本搜索,机器学习和统计计算。集成——在... 查看详情

乐刻大数据平台架构实践(代码片段)

乐刻运动大数据是基于hadoop体系搭建的,主要满足运营的日常报表,以及公司核心指标为主。随着2016年线上线下的发力,以智能化健身为主的共享经济的提出,数据需求量大幅的激增,数据从最初的GB级到现... 查看详情

hadoop+hive+flask+echarts大数据可视化项目之系统信息数据上传及上传的底层实现(代码片段)

Hadoop+hive+flask+echarts大数据可视化项目(三)--------------上传系统信息数据到hadoop平台及hadoop上传指令的底层实现----------------    关注过Hadoop+hive+flask+echarts大数据可视化项目的读者,这里是第三部... 查看详情

大数据平台环境搭建(代码片段)

...动所有容器导入和导出容器容器与主机之间复制文件二、Hadoop完全分布式安装配置1.修改IP和MAC地址2.修改主机名3.设置IP和域名映射4.关闭防火墙5.关闭SELINUX6.免密登录7.时钟同步8.JDK安装9.HADOOP安装10.HADOOP官方文档三、Mysql安装配... 查看详情

hadoop&spark搭建(代码片段)

概念Hadoop,一种分析和处理大数据的软件平台。是Appach的一个用JAVA语言实现的开源软件的加框,在大量计算机组成的集群中实现了对于海量数据进行的分布式计算。Hadoop的框架核心设计是:HDFS和MapReduce.HDFS为海量数... 查看详情

hadoop大数据平台架构之dkhadoop详解

hadoop大数据平台架构之DKhadoop详解大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战。Hadoop作为一个开源的分布式并行处理平台,以其高拓展、高效率、高可靠等优点越来越受... 查看详情