大数据(2)--Hadoop

article/2025/6/23 3:14:02

目录标题

  • 1.初识大数据
    • 1.1 大数据相关技术
    • 1.2 日志流量分析系统
      • 1.2.1 项目设计
      • 1.2.2 日志的捕获
      • 1.2.3 离线分析
      • 1.2.4 实时分析
    • 1.3 系统搭建
  • 2.Hadoop
    • 2.1 Hadoop概述
      • 2.1.1 历史
      • 2.1.2 作用
    • 2.2 Hadoop的安装
      • 2.2.1 Hadoop版本介绍
      • 2.2.2 Hadoop 的安装有三种方式
      • 2.2.3 Hadoop伪分布式安装
    • 2.3 HDFS详解
      • 2.3.1 NameNode
      • 2.3.2 DataNode
      • 2.3.3 Block
      • 2.3.4 SecondaryNameNode
      • 2.3.5 HDFS优点
      • 2.3.6 HDFS缺点
    • 2.4 HDFS细节
      • 2.4.1 NameNode、SecondaryNameNode如何工作?
      • 2.4.2 Block备份如何放置?
    • 2.5 HDFS基本Shell操作
    • 2.6 MapReduce
    • 2.7 Yarn

1.初识大数据

1.1 大数据相关技术

Flume:数据的收集聚集加载

Hadoop.HDFS:数据的存储

MapReduce、Hive、SparkSql:数据的离线处理

Kafka、Storm、SparkStreaming:数据的实时处理

Hbase:数据库

Sqoop:HDFS和关系型数据库桥梁

1.2 日志流量分析系统

1.2.1 项目设计

项目通用,可以对接任何有相应需求的项目
在这里插入图片描述

1.2.2 日志的捕获

JS埋点:将参数系数组织起来发送到日志收集系统。(传统后台埋点,影响后台维护和运行;script标签内发送影响前端逻辑,最后选择以img标签实现埋点信息的发送)

Log4j:收集日志,在打印同时,输出到flume中。

Flume:数据的收集聚集加载

1.2.3 离线分析

HDFS(Hadoop的一部分):海量数据的存储

Hive(底层基于Hadoop):海量离线数据的处理

1.2.4 实时分析

Storm:流式数据处理(速度最快)

Kafka:消息队列,削峰平谷

1.3 系统搭建

独立的服务器,逻辑简单,用Servlet处理请求参数,进行字符串拼接,并通过log4j输出到控制台和flume中

2.Hadoop

2.1 Hadoop概述

Hadoop是大数据领域中非常重要的基础技术,他是一个海量数据存储、处理系统,也是一个生态圈(HDFS,MapReduce,Hive,Hbase。。。。Spark底层也有Hadoop)

2.1.1 历史

Google:搜索引擎。收集互联网上的所有数据,存储数据,处理数据,提供给用户。
Google搜索引擎相关技术非常成熟,但是并没有开源,不过,在2004年先后发表了两篇论文:《Google File System》(GFS)、《MapReduce》阐述了Google如何将海量数据进行存储和处理。2006年发表了《BigTable》启发了无数的NoSql数据库。

Doug Cutting(狗哥):Lucene、Nutch(搜索引擎)

Hadoop(Java开发)

HDFS(Hadoop distributed file system):大数据存储

MapReduce:大数据处理

2.1.2 作用

Hadoop最初用作Nutch底层的海量数据存储和处理,后来人们发现他也非常适合大数据场景下的数据存储和处理,主要用作海量离线数据的存储和处理。

2.2 Hadoop的安装

2.2.1 Hadoop版本介绍

Hadoop1.0(Apache)最初版:HDFS、MapReduce

Hadoop2.0:HDFS、MapReduce、Yarn(2.7.1)

Hadoop3.0:2017年12月发布,目前还不是稳定版本。
在这里插入图片描述

2.2.2 Hadoop 的安装有三种方式

单机模式:解压就能运行,但是只支持MapReduce的测试,不支持HDFS,不用。

伪分布式模式:单机通过多进程模拟集群方式安装,支持Hadoop所有功能。学习测试用

完全分布式模式:集群方式安装,支持高可用,进阶学习。

2.2.3 Hadoop伪分布式安装

需要环境:
JDK,JAVA_HOME,配置hosts,hostname,关闭防火墙,配置免密登录。

安装在hadoop01节点上。
1.创建目录
mkdir hadoop

2.上传安装包并解压
tar -xvf 安装包

3.修改配置文件
1.修改 hadoop-env.sh
通过vim打开
vim /usr/local/src/hadoop/hadoop-2.7.1/etc/hadoop/hadoop-env.sh主要是修改java_home的路径

在hadoop-env.sh的第25行,把export JAVA_HOME=${JAVA_HOME}修改成具体的路径

在33行,修改HADOOP_CONF_DIR为具体的路径
在这里插入图片描述
重新加载使修改生效
source hadoop-env.sh

2.修改 core-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/core-site.xml

增加namenode配置、文件存储位置配置:粘贴<configuration>标签内的内容

<configuration>
<property>
<!--用来指定hdfs的老大,namenode的地址-->
<name>fs.default.name</name>
<value>hdfs://hadoop01:9000</value>
</property>  
<property>
<!--用来指定hadoop运行时产生文件的存放目录-->   
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop/hadoop-2.7.1/tmp</value>
</property>
</configuration>

3.修改 hdfs-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/hdfs-site.xml

配置包括自身在内的备份副本数量:粘贴<configuration>标签内的内容

<configuration>
<property>
<!--指定hdfs保存数据副本的数量,包括自己,默认为3-->
<!--伪分布式模式,此值必须为1-->
<name>dfs.replication</name> 
<value>1</value>
</property>
<!--设置hdfs操作权限,false表示任何用户都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>

4.修改 mapred-site.xml
说明:在/etc/hadoop的目录下,只有一个mapred-site.xml.template文件,复制一个。
cp mapred-site.xml.template mapred-site.xml

通过vim打开
vim [hadoop]/etc/hadoop/mapred-site.xml

配置mapreduce运行在yarn上:粘贴<configuration>标签内的内容

<configuration>
<property>  
<!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property> 
</configuration>

5.修改 yarn-site.xml
通过vim打开
vim [hadoop]/etc/hadoop/yarn-site.xml

配置:粘贴<configuration>标签内的内容

<configuration>
<property>
<!--指定yarn的老大resourcemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

6.修改 slaves
vim slaves
在这里插入图片描述
7.配置hadoop的环境变量
vim /etc/profile

最终结果如下图:
在这里插入图片描述

重新加载profile使配置生效
source /etc/profile

环境变量配置完成,测试环境变量是否生效
echo $HADOOP_HOME

8.创建tmp文件夹
cd /usr/local/src/hadoop/hadoop-2.7.1
mkdir tmp

4.初始化
hdfs namenode -format
在这里插入图片描述

5.启动
start-all.sh
停止
stop-all.sh

6.测试
在这里插入图片描述
访问hadoop01:50070
在这里插入图片描述
安装成功!

如果没有成功(进程数不够)
1.stop-all.sh 停掉hadoop所有进程

2.删掉tmp文件并重新创建tmp

3.hdfs namenode -format 重新初始化(出现successfully证明成功),如果配置文件报错,安装报错信息修改相应位置后重新执行第二步。

4.start-all.sh 启动hadoop

2.3 HDFS详解

HDFS:分布式文件存储系统。用来存储海量数据。
思考:有一个超大文件让我们存储,该怎么做?
在这里插入图片描述
在这里插入图片描述

2.3.1 NameNode

HDFS集群中的老大,负责元数据信息(文件分为几块,备份几份,每一份都存在哪里的描述信息)的存储和整个集群工作的调度。

2.3.2 DataNode

集群中干活的小弟,存放文件块,记录自己存放文件的基本信息。

2.3.3 Block

文件块,Hadoop1.0时,每块64M。Hadoop2.0时,每块128M。默认备份三份。

2.3.4 SecondaryNameNode

NameNode的小秘,帮助NameNode干一些其他的事情(对fsimage和edits进行合并)。分担NameNode的压力。

2.3.5 HDFS优点

可以存储超大文件(无限拓展)
高容错,支持数据丢失自动恢复
可以构建在廉价机上

2.3.6 HDFS缺点

做不到低延迟访问
不支持超强的事务
不适合存大量小文件
不支持行级别的增删改

2.4 HDFS细节

2.4.1 NameNode、SecondaryNameNode如何工作?

在这里插入图片描述
NameNode自己完成文件合并存在的问题:
Edits文件在合并时被占用,造成此时HDFS无法对外提供服务。

NameNode本来就是集群中最忙的节点,不时的合并文件加大了他的压力,NameNode一旦宕机,整个系统瘫痪,磁盘损坏会造成整个系统中的所有文件丢失。

所以引入了SecondaryNameNode来帮助NameNode完成文件合并的工作。
在这里插入图片描述

2.4.2 Block备份如何放置?

第一份:如果该文件本身从Hadoop集群中的某个节点上传,那么第一份存放在上传节点中,如果从Hadoop集群之外上传,那么存放在相对不太忙,负载较小的节点上。

第二份:放在与第一份所放置的节点相邻机架上的某个节点上。

第三份:放在与第二份所在节点的机架上的另外一台机器上。
三份以上,放置在负载相对较小的节点上。
在这里插入图片描述

2.5 HDFS基本Shell操作

创建文件夹(不支持多级创建):
hadoop fs -mkdir /xxx

查看目录:
hadoop fs -ls /xxx

递归查看多级目录:
hadoop fs -lsr /xxx

上传文件到HDFS:
hadoop fs -put xxx.txt /xxx

下载文件到本地当前目录:
hadoop fs -get /xxx/xxx/xxx.txt

删除文件:
hadoop fs -rm /xxx/xxx/xxx.txt

删除文件夹(文件夹必须为空):
hadoop fs -rmdir /xxx/xxx

强制删除文件夹或文件
Hadoop fs -rm -r /xxx

2.6 MapReduce

分布式计算系统

2.7 Yarn

Hadoop中的大管家,负责整个集群的资源管理调度。主要用于管理MapReduce相关资源。

原来HDFS中的数据只能被MapReduce直接处理,引入Yarn之后可以支持多种数据处理工具的接入,包括Spark等(相当于插排)。
在这里插入图片描述


http://chatgpt.dhexx.cn/article/00xZOQ9L.shtml

相关文章

《大数据时代》书评及书摘

三天的零碎时间把这本书读完了&#xff0c;内容本身其实很简单&#xff0c;也谈不上特别精彩&#xff0c;五分制的话我只能打三分。 我的理解&#xff0c;数据一生应该是包含了三个阶段&#xff1a;收集&#xff0c;分析&#xff0c;最后是预测。我们总能根据现有的数据&#x…

Python 与SQL sever数据库 图形化智能停车场管理系统

这个是我的一次课程设计&#xff0c;写了236行代码&#xff0c;都是最简单的函数和图形化界面。特别简单。首先你应该确保你的SQL数据库可以在Pycham中连接成功。不会SQL连接的的可以去其他博客写看一看。在Pycham中需要安装 Tkinter win32com.client 第三方库。 序言界面截…

asp毕业设计——基于asp+sqlserver的WEB车辆管理系统设计与实现(毕业论文+程序源码)——车辆管理系统

基于aspsqlserver的WEB车辆管理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于aspsqlserver的WEB车辆管理系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模…

基于Java+控制台实现车辆信息管理系统

基于Java控制台实现车辆信息管理系统 一、系统介绍二、功能展示1.主要功能2.查看所有车辆信息3.车辆信息添加4.车辆信息查询5.车辆信息删除 三、系统实现1.car.java 四、其它1.其他系统实现 五、源码下载 一、系统介绍 该系统实现了简单的增删查改、采用面对对象&#xff08;O…

qt 汽车管理系统

界面设计 运行后界面 数据库表: connection.h文件 #ifndef CONNECTION_H #define CONNECTION_H #include<Qtsql> #include<QDebug> #include<qdom.h> #include<QDebug> #include <QSqlQuery> static bool createConnection() { // "O…

计算机毕业设计-基于SSM的汽车维修管理系统

项目背景 随着计算机技术的高速发展&#xff0c;现代计算机系统已经从以计算为中心向以信息化处理为中心的方向发展。而汽车维修&#xff0c;不仅需要在硬件上为现代社会的人们提供一个汽车维修的平台&#xff0c;获取汽车知识的环境&#xff0c;更要在软件上为车辆提供汽车维…

ASP.NET+C#+Sql Server 1125数据库 汽车租赁系统的设计与实现+讲解视频

绪论 随着汽车行业的快速发展&#xff0c;汽车租赁行业交易的数量也随之增加&#xff0c;自2000年起&#xff0c;我国汽车租赁交易量开始进入一个快速发展的状态&#xff0c;也是汽车行业市场经济发展的重要一部分&#xff0c;近几年&#xff0c;越来越多汽车租赁公司进军当前…

Java项目:springBoot+Vue汽车销售管理系统

作者主页&#xff1a;夜未央5788 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目基于spring boot以及Vue开发&#xff0c;为前后端分离的项目。针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能…

基于JSP的物流公司信息管理系统设计与实现

目 录 第一章 绪论 1 1.1 研究背景 1 1.2课题研究意义 1 1.3 国内外的研究状况 2 第二章 相关技术分析 3 2.1技术简介 3 2.2 工作原理 3 2.3体系结构 3 2.4编程语言的特点 3 2.5 数据库 4 第三章 需求分析 5 3.1 可行性分析 5 3.1.1 经济可行性 5 3.1.2 技术可行性 5 3.1.3 运…

C#毕业设计——基于C#+asp.net+sqlserver的汽车销售管理系统设计与实现(毕业论文+程序源码)——汽车销售管理系统

基于C#asp.netsqlserver的汽车销售管理系统设计与实现&#xff08;毕业论文程序源码&#xff09; 大家好&#xff0c;今天给大家介绍基于C#asp.netsqlserver的汽车销售管理系统设计与实现&#xff0c;文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及…

汽车销售管理系统

文章目录 汽车销售管理系统**背景****环境****项目结构**项目详情**数据库****DBConn.java****Login.java****Data.java****CircleProgressBar.java**运行截图 汽车销售管理系统 背景 Java基础课程设计 环境 数据库&#xff1a;MySQL8.0开发环境&#xff1a;JDK1.8开发工具…

Java+SSM+Jsp+Mysql实现Web汽车信息管理系统

目录 一、系统介绍 1.开发环境 2.技术选型 3.系统功能 4.数据库文件 5.工程截图 二、系统展示 1.登录系统 2.系统首页 3.用户管理-添加用户 4.用户管理-查询用户 5.用户管理-修改用户 6.客户管理-添加客户 7.客户管理-查询客户 8.客户管理-修改客户 9.汽车管理-…

基于Java+Swing+Mysql实现汽车信息管理系统(含实训报告)

TOC 一、系统介绍 系统实现汽车入库&#xff0c;汽车出库&#xff0c;汽车查询&#xff0c;汽车信息修改和管理员登录等功能 二、功能展示 1.登陆 2.车辆信息 3.车辆入库 4.车辆出库 5.车辆查询 6、车辆信息修改 三、数据库 /*Navicat Premium Data TransferSource Serv…

汽车租赁管理系统的设计与实现(JSP+SqlServer在线租车网站)

目录 第一章 系统概述 1 1.1背景 1 1.2发展现状 1 第二章 需求分析 2 2.1 功能需求 2 2.2 数据需求 3 第三章 系统设计 5 3.1系统结构 5 3.2 数据库设计 5 3.2.1 ER图 6 3.2.2 逻辑结构 6 3.2.3 数据库物理结构 7 3.2.4 数据库实现 9 3.3用户控制系统 9 3.4模块设计 10 3.4.1 汽…

Qt下的综合练习—汽车信息管理系统(三)车辆出售功能的实现

项目介绍 这次练习的项目是汽车信息管理系统&#xff0c;项目参考Qt5开发及实例&#xff08;第3版&#xff09;中的汽车销售管理系统&#xff0c;写到博客上的目的是为了梳理自己的思路&#xff0c;所以代码很大程度上是参照书上的实例。 项目实现了车辆与销售的的管理&#xf…

Java课程设计——汽车信息租赁信息管理系统

一&#xff0e;功能需求 需求分析是发现需求&#xff0c;分析求精&#xff0c;逻辑建模&#xff0c;需求规约的过程&#xff0c;其的目的是为了全面获取软件需求&#xff0c;准确理解业务逻辑。车辆租赁系统具有以下基本功能。 用户管理&#xff1a; 包括用户的注册,登陆等&a…

Java GUI+SQL Server开发车辆管理系统

Java GUISQL Server开发车辆管理系统 一、程序功能设计 本项目为“车辆管理系统”&#xff0c;需包含一下功能&#xff1a; 1)车辆管理模块&#xff0c;增删查改车辆信息 2)租车管理模块&#xff0c;增删查改租车记录 3)换车管理模块&#xff0c;增删查改换车记录 4)修车…

Java+MySQL汽车租赁管理系统课程设计

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;汽车租赁系统 获取完整源码源文件视频演示文档资料等 一、 课程设计目的 1、综合运用Java程序设计课程和其他相关课程的理论和知识&#xff0c;掌握面向对象程序设计的一般方法、常用技术及技巧&#xff0c;树立良好的软件…

QT+SQL Server实现车辆管理系统 -简介

QTSQL Server 实现车辆管理系统 -简介 1.摘要2.界面展示及其功能介绍2.1 登录界面2.2 申请账户界面2.3 管理员界面2.3.1 添加车辆功能界面2.3.2 查询、删除、修改车辆信息功能界面2.3.3 添加司机功能界面2.3.4 查询、删除司机功能界面 2.4 普通用户界面2.4.1 查询车辆信息功能窗…

基于SpringBoot的汽车租赁管理系统

文末获取源码 一、项目技术栈 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SpringBoot 前端&#xff1a;采用HTML和Vue相结合开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA …