开启辅助访问
 找回密码
 立即注册

Hadoop到底是干什么用的?

JYWQJUN 回答数5 浏览数941
Hadoop到底是干什么用的,主要的应用场景和应用领域是指什么,主要解决的核心问题又是指什么,在编写代码方面他是一种api规范吗?为啥我们要用他呢?
使用道具 举报
| 来自北京 用Deepseek满血版问问看
lixuancheng | 未知
Apache Hadoop 软件是一个开源框架,支持使用简单的编程模型跨计算机集群对大型数据集进行分布式存储和处理。
Hadoop 支持从一台计算机扩容至包含数千台计算机的集群,其中每台机器均提供本地计算和存储功能。
通过这种方式,Hadoop 可以高效存储和处理从 GB 级到 PB 级的大型数据集。
1、那么我们为什么要用 Hadoop 呢?
可以在不了解分布式底层细节的情况下,开发分布式程序,充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。
HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
2、为什么需要使用 Hadoop?
Apache Hadoop 的出现是为了更快速、更可靠地处理海量大数据。Hadoop 实现了整个开源软件生态系统,越来越多的数据驱动型公司开始部署 Hadoop 以存储和解析大数据。
Hadoop 可以处理各种形式的结构化和非结构化数据,与关系型数据库和数据仓库相比,Hadoop 为公司收集、处理和分析大数据提供了更高的速度和灵活性。
3、 Apache Hadoop 有哪些用途?

以下是 Apache Hadoop 的常见使用场景:
分析和大数据

许许多多的公司和组织将 Hadoop 用于研究、生产数据处理和分析,这些任务需要处理 TB 级或 PB 级的大数据、存储各种数据集以及进行数据并行处理。

垂直行业

包括技术、教育、医疗保健和金融服务在内的众多行业中的公司都依赖于 Hadoop 来执行相关任务,这些任务有着共同的特点,即其涉及的结构化和非结构化数据的种类多、数量大、转化速度快。  

AI 和机器学习

Hadoop 生态系统在支持人工智能和机器学习应用开发方面也起着关键性作用。

云计算

公司通常选择在公有云、私有云或混合云资源(而非本地硬件)上运行 Hadoop 集群,以获得灵活性、可用性并实现费用控制。
4、举个例子
设想一下这样的应用场景.

我有一个100M的数据库备份的sql文件.我现在想在不导入到数据库的情况下直接用grep操作通过正则过滤出我想要的内容。
例如:某个表中 含有相同关键字的记录那么有几种方式.

  • 用linux的命令grep
  • 通过编程来读取文件,然后对每行数据进行正则匹配得到结果好了现在是100M的数据库备份.
上述两种方法都可以轻松应对.
那么如果是1G,1T甚至1PB的数据呢,上面2种方法还能行得通吗?
答案是不能.毕竟单台服务器的性能总有其上限.那么对于这种超大数据文件怎么得到我们想要的结果呢?
Haddop 就是为了解决这个问题诞生的.Haddop 可以很轻易的把 很多linux的廉价pc组成分布式结点,然后编程人员也不需要知道分布式算法之类,只需要根据mapreduce的规则定义好接口方法,剩下的就交给Haddop. 它会自动把相关的计算分布到各个结点上去,然后得出结果.
5、书籍推荐
多看大数据书籍,可以帮你更好的了解hadoop,比如 Hadoop 权威指南,Hadoop技术内幕等等。
这里提到的电子书,大部分都包含在我整理的一份电子书中,目前将这些资料汇总都打包放在这了,点击下方链接直达获取:


戳这里,直接获取:
计算机必看经典书单​mp.weixin.qq.com/s/tE01TkvkzyzyH40lkUhC0w  最后,这里再给大家推荐一个程序员学习网站,可以说涉及到程序员的方方面面的资源都有,使用了的朋友都说,只恨没有早点发现这个网站:
程序员导航-CXY521​cxy521.com/@纯洁的微笑
看到这里的朋友请帮忙点个赞,也可以关注我的知乎,一个有故事的程序员。
用Deepseek满血版问问看
回复
使用道具 举报
雨楠 | 来自北京
一、Hadoop

Hadoop是一个开源的大数据框架,是一个分布式计算的解决方案。
Hadoop的两个核心解决了数据存储问题(HDFS分布式文件系统)和分布式计算问题(MapRe-duce)。
举例1:用户想要获取某个路径的数据,数据存放在很多的机器上,作为用户不用考虑在哪台机器上,HD-FS自动搞定。
举例2:如果一个100p的文件,希望过滤出含有Hadoop字符串的行。这种场景下,HDFS分布式存储,突破了服务器硬盘大小的限制,解决了单台机器无法存储大文件的问题,同时MapReduce分布式计算可以将大数据量的作业先分片计算,最后汇总输出。
二、Hadoop特点

优点
1、支持超大文件。HDFS存储的文件可以支持TB和PB级别的数据。
2、检测和快速应对硬件故障。数据备份机制,NameNode通过心跳机制来检测DataNode是否还存在。
3、高扩展性。可建构在廉价机上,实现线性(横向)扩展,当集群增加新节点之后,NameNode也可以感知,将数据分发和备份到相应的节点上。
4、成熟的生态圈。借助开源的力量,围绕Hadoop衍生的一些小工具。
缺点
1、不能做到低延迟。高数据吞吐量做了优化,牺牲了获取数据的延迟。
2、不适合大量的小文件存储。
3、文件修改效率低。HDFS适合一次写入,多次读取的场景。
三、HDFS介绍

1、HDFS框架分析

HDFS是Master和Slave的主从结构。主要由Name-Node、Secondary NameNode、DataNode构成。


NameNode
管理HDFS的名称空间和数据块映射信存储元数据与文件到数据块映射的地方。
如果NameNode挂掉了,文件就会无法重组,怎么办?有哪些容错机制?
Hadoop可以配置成HA即高可用集群,集群中有两个NameNode节点,一台active主节点,另一台stan-dby备用节点,两者数据时刻保持一致。当主节点不可用时,备用节点马上自动切换,用户感知不到,避免了NameNode的单点问题。
Secondary NameNode
辅助NameNode,分担NameNode工作,紧急情况下可辅助恢复NameNode。
DataNode
Slave节点,实际存储数据、执行数据块的读写并汇报存储信息给NameNode。
2、HDFS文件读写

文件按照数据块的方式进行存储在DataNode上,数据块是抽象块,作为存储和传输单元,而并非整个文件。


文件为什么要按照块来存储呢?
首先屏蔽了文件的概念,简化存储系统的设计,比如100T的文件大于磁盘的存储,需要把文件分成多个数据块进而存储到多个磁盘;为了保证数据的安全,需要备份的,而数据块非常适用于数据的备份,进而提升数据的容错能力和可用性。
数据块大小设置如何考虑?
文件数据块大小如果太小,一般的文件也就会被分成多个数据块,那么在访问的时候也就要访问多个数据块地址,这样效率不高,同时也会对NameNode的内存消耗比较严重;数据块设置得太大的话,对并行的支持就不太好了,同时系统如果重启需要加载数据,数据块越大,系统恢复就会越长。
3.2.1 HDFS文件读流程


1、向NameNode通信查询元数据(block所在的DataNode节点),找到文件块所在的DataNode服务器。
2、挑选一台DataNode(就近原则,然后随机)服务器,请求建立socket流。
3、DataNode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)。
4、客户端已packet为单位接收,现在本地缓存,然后写入目标文件,后面的block块就相当于是append到前面的block块最后合成最终需要的文件。
3.2.2 HDFS文件写流程


1、向NameNode通信请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。
2、NameNode返回确认可以上传。
3、client会先对文件进行切分,比如一个block块128m,文件有300m就会被切分成3个块,一个128m、一个128m、一个44m。请求第一个block该传输到哪些DataNode服务器上。
4、NameNode返回DataNode的服务器。
5、client请求一台DataNode上传数据,第一个DataNode收到请求会继续调用第二个DataNode,然后第二个调用第三个DataNode,将整个通道建立完成,逐级返回客户端。
6、client开始往A上传第一个block,当然在写入的时候DataNode会进行数据校验,第一台DataNode收到后就会传给第二台,第二台传给第三台。
7、当一个block传输完成之后,client再次请求NameNode上传第二个block的服务器。
四、MapReduce介绍

1、概念

MapReduce是一种编程模型,是一种编程方法,是抽象的理论,采用了分而治之的思想。MapReduce框架的核心步骤主要分两部分,分别是Map和Reduce。每个文件分片由单独的机器去处理,这就是Map的方法,将各个机器计算的结果汇总并得到最终的结果,这就是Reduce的方法。
2、工作流程

向MapReduce框架提交一个计算作业时,它会首先把计算作业拆分成若干个Map任务,然后分配到不同的节点上去执行,每一个Map任务处理输入数据中的一部分,当Map任务完成后,它会生成一些中间文件,这些中间文件将会作为Reduce任务的输入数据。Reduce任务的主要目标就是把前面若干个Map的输出汇总到一起并输出。


3、运行MapReduce示例

运行Hadoop自带的MapReduce经典示例Word-count,统计文本中出现的单词及其次数。首先将任务提交到Hadoop框架上。


查看MapReduce运行结束后的输出文件目录及结果内容。


可以看到统计单词出现的次数结果


五、Hadoop安装

墙裂推荐:史上最详细的Hadoop环境搭建https://blog.csdn.net/hliq5399/article/details/78193113/

最后,欢迎小伙伴们来数澜社区一起学习大数据~~
https://bbs.dtwave.com/
回复
使用道具 举报
偶愛乖乖 | 来自北京
我讲下自己的理解吧...
总的来说, 如果有一个很大的任务, 单机很难完成, 所以要用到分布式, 就是有一台master机子(服务器), 有很多slave机子(服务器), 然后master给slaves分配任务, 把一个大任务分成很多小任务, 给每个slave去完成, 然后master机子收集每个slave的结果, 处理得出最终结果, hadoop就是一个完成了这个事情的框架...
贴一段百度百科的解释
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
你看嘛, 是不是和我上面说的差不多
然后有有个东西叫HBase, 就是Hadoop Database, 这个就是hadoop用的数据库, 这是一个tabular database;
然后有一个东西叫HDFS, 这是一种文件结构, 就和什么FAT32, NTFS这些一样, 只是这个HDFS对特别大的文件支持比较好;
然后MapReduce是什么呢, 这个分为Map和reduce, map就是分配任务, 把一个大任务分配成小任务, 这个叫map, 然后reduce就是把每个slave得到的结果汇总起来, 处理结果这些..但是这个mapreduce模型好像有挺多用法的, 我说的只是很简单的一种理解...可能不太对, 但是可以感性理解一下..
就说这么多吧,具体的东西我觉得还是要深入学一下, 写写代码就理解了...
回复
使用道具 举报
野心 | 来自北京
1、Hadoop是什么
1.1、小故事版本的解释
小明接到一个任务:计算一个100M的文本文件中的单词的个数,这个文本文件有若干行,每行有若干个单词,每行的单词与单词之间都是以空格键分开的。对于处理这种100M量级数据的计算任务,小明感觉很轻松。他首先把这个100M的文件拷贝到自己的电脑上,然后写了个计算程序在他的计算机上执行后顺利输出了结果。
后来,小明接到了另外一个任务,计算一个1T(1024G)的文本文件中的单词的个数。再后来,小明又接到一个任务,计算一个1P(1024T)的文本文件中的单词的个数……
面对这样大规模的数据,小明的那一台计算机已经存储不下了,也计算不了这样大的数据文件中到底有多少个单词了。机智的小明上网百度了一下,他在百度的输入框中写下了:大数据存储和计算怎么办?按下回车键之后,出现了有关Hadoop的网页。
看了很多网页之后,小明总结一句话:Hadoop就是存储海量数据和分析海量数据的工具。
1.2、稍专业点的解释
Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。
       HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进行分布式储存和读取。
  MapReduce是一个计算框架:MapReduce的核心思想是把计算任务分配给集群内的服务器里执行。通过对计算任务的拆分(Map计算/Reduce计算)再根据任务调度器(JobTracker)对任务进行分布式计算。
1.3、记住下面的话:
       Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
       把HDFS理解为一个分布式的,有冗余备份的,可以动态扩展的用来存储大规模数据的大硬盘。
       把MapReduce理解成为一个计算引擎,按照MapReduce的规则编写Map计算/Reduce计算的程序,可以完成计算任务。
2、Hadoop能干什么
大数据存储:分布式存储
日志处理:擅长日志分析
ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库
机器学习: 比如Apache Mahout项目
搜索引擎:Hadoop + lucene实现
数据挖掘:目前比较流行的广告推荐,个性化广告推荐
Hadoop是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。
实际应用:
(1)Flume+Logstash+Kafka+Spark Streaming进行实时日志处理分析


(2)酷狗音乐的大数据平台


3、怎么使用Hadoop
3.1、Hadoop集群的搭建
无论是在windows上装几台虚拟机玩Hadoop,还是真实的服务器来玩,说简单点就是把Hadoop的安装包放在每一台服务器上,改改配置,启动就完成了Hadoop集群的搭建。
3.2、上传文件到Hadoop集群
Hadoop集群搭建好以后,可以通过web页面查看集群的情况,还可以通过Hadoop命令来上传文件到hdfs集群,通过Hadoop命令在hdfs集群上建立目录,通过Hadoop命令删除集群上的文件等等。
3.3、编写map/reduce程序
通过集成开发工具(例如eclipse)导入Hadoop相关的jar包,编写map/reduce程序,将程序打成jar包扔在集群上执行,运行后出计算结果。
小贴士:作者正在持续更新中,请稍后。
作者:CHANGE_GOAL_FOCUS
来源:CSDN
原文:https://blog.csdn.net/qq_32649581/article/details/82892861
回复
使用道具 举报
david_tito | 来自北京
谢邀,
一、Hadoop工作角色:

有关大数据的职业和职位角色,从大数据的市场趋势,从新人到经验丰富的专业人员和聘请大数据专业人员的各种公司,大数据的不同背景以及发展职业可分为Hadoop开发人员,Hadoop管理员,Hadoop架构师,Hadoop测试人员和大数据分析师。
二、Hadoop工作职责:

1、Hadoop开发人员:
Hadoop开发人员的工作职责是根据系统设计编写程序,并且必须对编码和编程有充分的了解。Hadoop开发人员的任务与软件开发人员相似,但属于大数据领域。Hadoop开发人员的工作还包括理解和致力于解决问题的解决方案,设计和架构以及强大的文档编制能力。
(1)Hadoop开发人员角色和职责:

  • 定义工作流程
  • 管理和查看Hadoop日志文件
  • 通过Zookeeper进行 集群协调服务
  • 通过调度程序管理Hadoop作业
  • 支持在Hadoop集群上运行的MapReduce程序
(2)Hadoop开发人员需要的技能:

  • 擅长编写Pig Latin Scripts和HiveQL
  • 经过验证的工作流程/调度程序(如Oozie) 知识
  • 能够处理Flume和Sqoop等数据加载工具
(3)Hadoop开发人员资料所需的经验:
0一5年的Hadoop开发人员简历必须是上述技能的综合体。
2、Hadoop架构师
Hadoop架构师的工作职责是设计系统的工作方式,然后管理Hadoop解决方案的整个生命周期。他必须具有在Cloudera,HortonWorks和MapR 等流行的Hadoop发行平台上工作的专业知识和交付经验。
(1)Hadoop架构师的角色和职责

  • 设计技术架构和应用程序定制
  • 进行必要的需求分析
  • 进行提议的解决方案设计的部署
(2)Hadoop Architect所需的技能

  • 深入了解Hadoop体系结构和HDFS (包括YARN)
  • Hive,Pig
  • Java MapReduce
  • HBase
(3) Hadoop架构师配置文件所需的经验
超过8年的Hadoop架构师履历必须是上述技能的综合
3、Hadoop管理员
Hadoop管理作业职责与系统管理员作业相似。Hadoop管理员的角色和职责包括设Hadoop集群,对其进行备份,恢复和维护。Hadoop管 理员需要对硬件系统和Hadoop体系结构有充分的了解。
(1)Hadoop管理员角色和职责:

  • HDFS维护和支持
  • Hadoop集群规划和筛选
  • 跟踪所有连接性和安全性问题
  • 设置新的Hadoop用户
(2)Hadoop管理员所需的技能:

  • 对Hbase的深入了解
  • 亲身体验Oozie,HCatalog和Hive
  • 在Linux环境中强大的脚本编写能力
(3)Hadoop管理员配置文件所需的经验
0一5年的Hadoop管理员履历必须是上述技能的综合
4、Hadoop测试

Hadoop测试人员的职责是确保设计的流程与组织所需的流程同步。他的主要职责是查找并修复Hadoop应用程序中的错误。
(1)Hadoop测试人员的角色和职责

  • 主要职责包括故障排除和发现程序中的缺陷,并将其报告给Hadoop开发人员以采取纠正措施
  • 报告Hadoop/ Pig/ Hive组件中的所有肯定和否定测试用例
(2)Hadoop Tester所需的技能

  • 测试JUnit,MRUnit框架的知识
  • Java知识以测试MapReduce作业
  • 掌握Hive, Pig的知识
(3)Hadoop测试人员所需的经验
0一5年的Hadoop测试人员简历必须是上述技能的综合
5、Hadoop分析师
Hadoop分析师的工作职责是分析大量数据,并提供可用于公司改善的见解。
(1)Hadoop分析师的角色和职责

  • 使用脚本语言从可用数据中开发新见解.
  • 根据不同的假设进行A/ B测试,以影响不同的关键绩效指标
(2)Hadoop分析师所需的技能

  • 掌握Hive,Pig的知识
  • 深入Flume知识和SQL命令
(3)Hadoop分析师个人资料所需的经验
0一5年的Hadoop分析师履历必须是上述技能的综合
回复
使用道具 举报
快速回复
您需要登录后才可以回帖 登录 | 立即注册

当贝投影