通知
关于网站更多信息请加whimurmur模板/jpress插件QQ群(1061691290)            jpress从3.x升级到4.x,显示有些问题,慢慢修复中
文章来源于网络,无法注明出处的还请谅解,如果出处注明错误(如仍是载转),请联系我修改

Hadoop到底是干什么用的?(知乎)(转载)

1331人浏览 / 0人评论 / | 这是对我有帮助的文章  | 分类: 技术介绍使用  | 标签: 转载  | 

Hadoop到底是干什么用的?

Hadoop到底是干什么用的,主要的应用场景和应用领域是什么,主要解决的核心问题又是什么,在编写代码方面他是一种api规范吗?为什么我们要用他呢?


作者:数澜科技
链接:https://www.zhihu.com/question/333417513/answer/795736712
来源:知乎
 

一、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://link.zhihu.com/?target=https%3A//blog.csdn.net/hliq5399/article/details/78193113/


作者:蛙课网
链接:https://www.zhihu.com/question/333417513/answer/742465814
来源:知乎
 

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包扔在集群上执行,运行后出计算结果。


作者:青牛
链接:https://www.zhihu.com/question/333417513/answer/741277565
来源:知乎
 

一、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分析师履历必须是上述技能的综合

 


亲爱的读者:有时间可以点赞评论一下

点赞(0) 打赏

全部评论

还没有评论!
广告位-帮帮忙点下广告